Apakah ini tanda-tanda pengembang yang buruk? [Tutup]

36

Saya dulu menyalahkan perubahan spesifikasi dari klien untuk pembusukan kode, tidak menyadari bahwa model bisnis berubah dan itu tugas saya untuk berkembang dengan cara yang mudah beradaptasi. Saya sekarang melihat itu sebagai pertanda pengembang yang buruk (saya telah berubah!).

Tetapi sekarang saya melihat 'ikan paus' lain dalam diri saya. Beberapa kali baru-baru ini saya mendapati diri saya berkata 'itu seperti mencoba memasukkan pasak persegi ke dalam lubang bundar', dan juga saya mendapati diri saya menyalahkan keragu-raguan klien untuk sebuah proyek yang tidak mengalami kemajuan.

Apakah ada tanda-tanda saya harus mencari di mana saya harus mengubah sikap saya? Apakah klien selalu benar, atau kadang-kadang saya dibenarkan frustrasi?

Paul T Davies
sumber
20
Tempat yang baik untuk memulai adalah dengan evaluasi diri yang persis seperti apa yang Anda lakukan.
Chris
2
KLIEN selalu benar. Sekalipun THE CLIENT mengklaim langit berwarna hijau, maka tugas Anda adalah membengkokkan hukum alam sendirian (atau berjari tunggal untuk yang lebih berpengalaman). Bagaimana Anda akan membenarkan keberadaan Anda jika tidak dengan memuaskan THE CLIENT ?
ThomasX
26
Saya pernah bekerja di perusahaan yang CEO-nya kadang-kadang mendatangi pelanggan bermasalah dan memberi tahu mereka, "Pelanggan selalu benar dan Anda salah, karena itu jelas Anda bukan pelanggan kami." (Dan, ya, dia juga mengembalikan uang mereka.)
Dave Sherohman
4
@ThomasX: Apakah klien selalu benar? Saya telah menemukan bahwa sering ada kesenjangan antara apa yang diinginkan klien dan apa yang dibutuhkan klien. Klien mungkin tidak menyadari solusi yang lebih baik dan lebih tepat.
Skizz
3
Argumen yang sama bisa valid dan tidak valid, tergantung konteksnya. Misalnya, persyaratan berubah - tetapi kadang-kadang persyaratan berubah sepenuhnya di luar kendali. Ini adalah bagian dari pekerjaan Anda untuk mengatasi perubahan, tetapi hanya dalam batas yang wajar. Anda harus mengantisipasi kemungkinan perubahan, tetapi Anda tidak dapat diharapkan memiliki kekuatan psikis ...
Steve314

Jawaban:

55

Saya tidak akan mengatakan Anda adalah pengembang yang buruk. Menyadari masalah yang sudah bergerak Anda melampaui definisi ini.

Persyaratan berubah. Itu diberikan. Pengembang yang baik perlu mempertimbangkan hal ini. Banyak teknik pemrograman modern membantu mengatasi hal itu.

Tetap setia pada spesifikasi asli tidak realistis. Juga tidak realistis mengubah persyaratan setiap saat.

Klien jelas tidak selalu benar. Itu 'benar' lebih sering daripada yang kita inginkan, meskipun (seperti dalam, cobalah untuk mengakomodasi dia jika dia tidak benar-benar mati). Tetapi ketika Anda melihatnya mengarahkan proyek ke arah yang salah, cobalah untuk mengadvokasi hal-hal yang menurut Anda benar.

Tidak ada aturan keras tentang hal-hal ini, dan bahkan pengembang yang baik dan berpengalaman belum mencapai 'Zen' yang sempurna. Satu-satunya pendekatan yang salah adalah tidak mencoba untuk memperbaiki ini.

Boris Yankov
sumber
16
+1, Untuk "Menyadari masalah yang sudah memindahkan Anda melampaui definisi ini."
maple_shaft
38

Ada kasus di mana itu adalah klien. Tapi itu masalahmu juga

Ada kasus di mana itu adalah pengembang, dan ada kasus, di mana itu adalah pelanggan. Tapi, biasanya mereka berdua adalah masalah Anda , jadi sikap menyalahkan diri sendiri cenderung lebih berhasil, karena itu ada di sisi penyelesaian masalah alih-alih menunjuk tanpa jari. Karenanya, Anda akan sering menemukannya di pengembang yang lebih berpengalaman.

Sikap yang lebih baik lagi adalah IMHO untuk melihatnya tanpa kesalahan: "itu kesalahan pelanggan, saya memiliki kode yang buruk, karena ia selalu mengubah persyaratan" kemudian menjadi "pelanggan ini mencari tahu apa yang diinginkannya, jadi umpan balik, prototipe cepat, dan fleksibilitas lebih penting daripada kelengkapan, ketahanan dan kecepatan ".

Jenis pikiran Zen: jangan menilai itu, lihat saja seperti apa adanya.

keppla
sumber
Saya senang mendengar masih ada advokasi untuk "Pelanggan selalu benar", +1.
Wayne Koort
1
Sebenarnya itu lebih seperti "pelanggan selalu benar ... kecuali Anda adalah pelanggan."
Luke Van In
@WayneKoorts - selama mereka mau membayar, mereka bisa disebut pelanggan.
JeffO
2
sebenarnya, saya pikir TCIAR lebih sukses daripada 'semua orang salah', tetapi tidak sebagus 'siapa yang peduli siapa yang benar, cukup identifikasi masalahnya', sehingga +1 mungkin tidak layak.
keppla
1
TCIAR sebagian penawar untuk menyangkal bahwa ada adalah masalah.
Steve314
13

Pertama, klien tidak tahu apa yang mereka inginkan sampai mereka melihatnya. Itu bagian dari daya tarik dari iterasi paradigma Agile yang kecil dengan keterlibatan klien yang banyak. Kedua, jangan berharap produk menjadi "lengkap" ketika kode Anda lengkap.

Microsoft menggunakan produk yang disebut 'Watson' (pesan umpan balik kirim yang Anda dapatkan ketika windows meledak) untuk melacak masalah langsung kembali ke klien. Keterlacakan adalah cara yang baik untuk melacak masalah kembali ke pengguna yang mengalaminya. Anda bisa mendapatkan keterlacakan dengan bertanya. Atau, jika Anda memiliki sumber daya, integrasikan fungsionalitas ke dalam produk. Kuncinya adalah melacak masalah / peningkatan sehingga bisa diatasi.

Akhirnya, yakin klien bisa berubah-ubah. Dalam kasus seperti itu, saya mencoba untuk fokus pada rahasia gunung es .

P.Brian.Mackey
sumber
+1 untuk rahasia gunung es.
Daniel Pryden
5

Mengubah persyaratan adalah fakta kehidupan yang sulit; tetapi kode busuk tidak disebabkan oleh hal itu.

Pembusukan kode terjadi ketika ada beberapa bagian dari kode Anda yang jarang Anda gunakan; jadi ketika Anda melakukan beberapa perubahan yang "seharusnya tidak mempengaruhi hal lain", Anda mungkin memperkenalkan bug. Dengan kata lain, kode yang tidak melihat siang hari perlahan terurai dan Anda tidak bisa mengatakan kapan itu berhenti bekerja.

Ya, itu salah Anda dan bukan pengguna Anda.

Solusi nyata? sering-seringlah menguji semua kode Anda. Tentu saja, cara terbaik adalah memiliki tes otomatis dengan jangkauan yang baik.

Javier
sumber
+1 untuk tes otomatis! TDD - Tes Didorong Pengembangan - menulis tes pertama berdasarkan persyaratan sehingga sebagian besar atau hampir semua kode diuji, adalah salah satu cara untuk menjaga kode dari membusuk, bahkan dengan pengalihan pasca gawang konstan. Alat pertanggungan juga dapat digunakan untuk mengambil area di mana tes tidak menyentuh apa pun, area yang cenderung mengalami pembusukan.
Danny Staple
4

Keragu-raguan klien bisa menjadi masalah besar dan jika Anda bukan orang yang bertanggung jawab mengelola hubungan klien daripada itu mungkin sangat sulit untuk ditangani. Anda dapat berbicara dengan orang yang berurusan dengan klien dan menjelaskan dengan tenang bahwa kemajuan tidak dapat terjadi sampai klien membuat keputusan. Jika Anda adalah yang bertanggung jawab atas hubungan klien, Anda harus memberitahu klien bahwa mereka perlu untuk membuat keputusan sebelum proyek dapat melanjutkan. Mungkin bukan karena sikap Anda perlu perbaikan, hanya meditasi sebentar untuk menenangkan diri. ;)

FrustratedWithFormsDesigner
sumber
4

Javier menunjukkan bahwa perubahan persyaratan adalah fakta kehidupan yang sulit. Saya juga frustrasi dengan situasi ini karena terlalu sering saya menemukan diri saya mengerjakan suatu produk di mana pengembang harus membuat keputusan. Pendapat saya dulu adalah "Mengapa manajemen tidak dapat mengetahuinya dengan klien?", Atau "Mengapa kita memulai proyek ini jika klien tidak tahu apa yang mereka inginkan?", "Banyak sakit kepala ketika mereka berubah jadi keterlambatan pengembangan ".

Fakta sederhana: ini akan selalu terjadi, tidak hanya dalam pemrograman / pengembangan perangkat lunak tetapi di setiap lapisan masyarakat. Dunia hanya akan menjadi tempat yang sangat membosankan dan sangat berbeda jika orang tidak pernah berubah pikiran, tidak pernah beradaptasi, tidak pernah menangani perubahan. Orang-orang memiliki kecenderungan untuk melihat apa yang mereka berikan, dan memperbaikinya. Apakah Anda tidak melakukan hal yang sama dengan kode Anda? Jika saya memiliki blok kode yang tidak saya sukai (tidak efisien, berantakan), saya akan memperbaikinya. (Apakah sistem operasi mengeluh pada saya? ... kadang-kadang, jika saya menggunakan OS tanpa nama tertentu, tetapi umumnya tidak)

Sebagai programmer kita perlu mengambil peluang untuk memperbaiki keadaan, dan tidak merasa tertekan atau terganggu olehnya. Manfaatkan kesempatan ini untuk berbicara dengan orang lain, tingkatkan gaya Anda, tingkatkan etos kerja Anda, dekati hal-hal dengan pikiran terbuka, dorong diri Anda untuk menjadi lebih baik dari kemarin. Maju terus dalam karir Anda dan jangan cepat puas.

Saya mengerti bahwa tidak semua orang akan setuju dengan jawaban ini, tetapi saya pikir sangat penting bahwa jawaban untuk pertanyaan ini mencakup perspektif yang lebih luas.

Arj
sumber
2

Saat Anda berinteraksi dengan klien, Anda tidak sedang pemrograman; Anda sedang belajar dan mengajar.

Jaga agar klien mendapat informasi dan mendidik mereka tentang proses tersebut. Perubahan akan terjadi. Biarkan mereka tahu Anda akan mencoba menerapkannya, tetapi akan lebih mahal. Biarkan mereka yang memutuskan.

Jangan masuk ke detail teknis bahkan ketika pertanyaan yang mereka ajukan bersifat teknis. Anda tergoda karena Anda akan merasa sedikit defensif dan ingin mengambil tantangan / mendapatkan geek-on Anda. Jangan lakukan itu; mereka tidak peduli dengan detailnya dan akan berhenti mendengarkan setelah 45 detik.

Jika Anda tidak memberi tahu mereka sebelumnya, jangan berharap mereka tahu tentang standar industri dan praktik terbaik atau alasan lain untuk melakukan apa yang Anda lakukan. Saya benci ketika saya tidak melihat bayaran sampai pada akhirnya hanya untuk memiliki tenaga penjual mengatakan kepada saya itu standar dalam industri. Seharusnya aku tidak diharapkan mengetahuinya. Tanggapan saya adalah, "Apakah membuat saya merasa seperti orang bodoh juga standar?"

Saat Anda bersama klien, lebih memperhatikan mereka daripada siapa pun atau apa pun di ruangan itu. Anjing yang didomestikasi jenius dalam hal ini; terutama jika Anda memiliki makanan.

JeffO
sumber
1

Ini manajemen persyaratan yang buruk atau analisis yang buruk. Analis bisnis Anda (jika Anda memilikinya) atau siapa pun yang mendapatkan persyaratan harus duduk dengan klien dan mencoba untuk mendapatkan semua persyaratan, bahkan yang tidak terpikirkan oleh klien. Klien biasanya tidak tahu semua yang mereka inginkan, seorang analis bisnis yang hebat akan membantu mereka mencari tahu semuanya.

Mata-mata
sumber
1

Ini sebabnya Anda harus selalu mendapatkan pengaturan Dokumen Persyaratan Bisnis dan keluar sebelum aplikasi apa pun melampaui tahap prototyping / riset.

Sekarang, gagasan bahwa dokumen ini sebenarnya final sudah keliru, tetapi ini akan membantu Anda mendapatkan ide yang lebih baik tentang apa yang sebenarnya diinginkan pelanggan. Dan selama Anda menulis kode Anda dengan rawatan, Anda dapat menjaga masalah Anda seminimal mungkin.

Dan jika Anda membutuhkan alasan untuk kembali, Anda dapat menyalahkan keterlambatan pada BRD, bahwa klien menandatangani, tidak termasuk fitur ini dan itu, dll.

(Tentu saja, ini hanya alasan jika Anda membutuhkannya. Anda harus selalu merencanakan mereka mengubah sesuatu )

pengguna606723
sumber
1

Dalam kutipan Emerson, "Konsistensi bodoh adalah hobgoblin pikiran kecil ..." kata yang paling sering diabaikan adalah bodoh . Konsistensi tidak dapat dinegosiasikan dalam pengaturan tertentu, tetapi itu semua sering menggantikan pemikiran kritis dan analisis.

Di satu sisi, banyak model pengembangan dirancang khusus untuk membantu dalam lingkungan yang Anda gambarkan; jadi jika Anda mendapati diri Anda harus melanggar model Anda, berarti Anda tidak mengimplementasikannya sejak awal, atau Anda mendapatkan model yang salah.

Tetapi di sisi lain, jika Anda memiliki alasan yang masuk akal dan dapat didukung untuk melanggar aturan Anda, dan Anda dapat menunjukkan bahwa metode jahat Anda menghasilkan kode yang lebih bersih dan lebih dapat dipertahankan, maka Anda tidak perlu takut mengambil rute yang masuk akal.

tylerl
sumber