Saat ini saya sedang mengkode aplikasi baru untuk perusahaan saya yang agak terlibat. Untuk memenuhi tenggat waktu, fungsionalitas telah diturunkan sedikit sehingga kita dapat memiliki sesuatu yang siap untuk diluncurkan.
Saya telah diberi tugas untuk meningkatkan versi 1 dan berjalan pada akhir bulan. Saya hampir setengah jalan dalam pengembangan dan saya sampai pada titik sekarang bahwa ada akhir yang terlihat.
Kemarin, saya menghabiskan beberapa waktu untuk menghasilkan solusi mudah yang sangat bagus untuk salah satu persyaratan dan cukup bangga dengan hasilnya. Pagi ini dokumen versi 2 dikirimkan, dan ada persyaratan di sana yang akan meminta kode yang saya tulis kemarin untuk dimusnahkan, atau sangat diubah. Itu akan membutuhkan banyak pekerjaan di masa depan jika saya membiarkannya apa adanya. Saya dapat mengambil satu hari ekstra sekarang untuk membuat solusi saya saat ini lebih kuat sehingga fitur v2 akan dapat ditambahkan dengan usaha yang jauh lebih sedikit, tetapi itu akan membuat saya sedikit ketinggalan untuk pengkodean tambahan yang diperlukan.
Saya tidak tahu apakah saya akan melakukan v2. Mungkin saya atau rekan kerja, atau bahkan magang.
Jika Anda berada di posisi saya, apakah Anda akan menghabiskan waktu sekarang untuk membuatnya lebih mudah di masa depan, atau apakah Anda akan meninggalkan solusi Anda dan menghadapinya ketika saatnya tiba?
sumber
Jawaban:
Jika tenggat waktu Diukir Di Batu, selesaikan saja apa yang harus Anda penuhi. Pastikan Anda mengembang perkiraan untuk v2 untuk mengakomodasi perubahan kode untuk persyaratan baru. Pastikan juga untuk mendokumentasikan secara singkat apa yang menurut Anda perlu diubah untuk fitur v2 baru sehingga rekan kerja dapat mengambilnya jika Anda dipindahkan ke sesuatu yang lain.
Jika ada fleksibilitas yang cukup dalam tenggat waktu (1 hari, dengan suara itu, jadi bertujuan untuk perpanjangan 2,5 hari) maka pasti, silakan dan kode untuk masa depan yang diketahui!
sumber
Hindari jatuh mangsa (awal) ke Efek Sistem Kedua . Berikut adalah beberapa teknik yang baik untuk diterapkan:
Sebagian besar proyek perangkat lunak yang tumbuh seperti kota berhasil dalam jangka panjang. Perencanaan evolusi hanya ke masa depan yang terbatas memungkinkan perangkat lunak Anda dirilis tepat waktu dan dengan fungsionalitas yang diperlukan pada rilis - dan tidak lebih. Lihat kutipan ini dari Carl Sagan:
sumber
Jangan menambahkan kode hari ini untuk kebutuhan bulan depan. Hari ini Anda harus menulis kode terbersih yang Anda bisa untuk persyaratan yang Anda miliki. Saya ragu bahwa pekerjaan sehari sekarang akan menghemat beberapa hari kemudian. Saya pernah mendengar klaim seperti itu, dan tidak dapat mengingat satu kasus pun di mana itu benar. Anda mungkin dapat meyakinkan saya dengan menunjukkan beberapa kode, tetapi pengalaman saya mengatakan itu tidak mungkin.
sumber
Biarkan apa adanya.
Pengembang sebenarnya MENGHARGAI proyek warisan yang melakukan apa yang seharusnya dilakukan dan tidak lebih.
Apa, hari ini, mungkin tampak seperti ide yang bagus untuk "menentukan" basis kode untuk memenuhi persyaratan "masa depan", dalam semua kemungkinan akan bertindak sebagai penghambat untuk memahami kode di masa depan. Tidak ada yang suka berurusan dengan fungsionalitas yang diimplementasikan sebagian dan sisa-sisa persyaratan hantu yang terlupakan. Saya tidak mengatakan itu akan menjadi masalah, tetapi banyak hal menjadi seperti itu meskipun ada niat baik.
sumber
Jawaban yang bagus Saya hanya akan menambahkan - apa yang saya lakukan dalam kasus seperti ini adalah mengambil perbedaan yang baik sehingga saya dapat menangkap apa yang telah saya lakukan dan membuangnya di tempat yang aman. Maka jika ada kesempatan untuk melakukannya lagi di versi berikutnya, itu akan mudah.
Secara umum, pengembang yang baik mengantisipasi persyaratan di masa depan, tetapi ketika tenggat waktu menjulang, inilah saatnya untuk merespons bug pada apa yang sudah Anda dapatkan dan bukan "mengacau".
sumber
Tergantung. Ada aturan kuno yang baik: perlakukan orang lain seperti Anda ingin diperlakukan sendiri. Apa yang akan Anda lakukan jika itu adalah proyek Anda sendiri dan Anda tahu semua prioritas?
Jika v2 benar-benar diperlukan dan tenggat waktu hanya harapan daripada kebutuhan yang sulit maka jangan membuat utang teknis dan memperbaiki layar Anda saat cuaca baik-baik saja. Bahkan jika orang lain akan melakukan v2 mereka akan menghargai pandangan jauh ke depan.
Jika ada keraguan tentang perlunya v2 maka tetap dengan YAGNI. Juga jika Anda berada di sisi lain spektrum dan memiliki salah satu klien yang terus-menerus mengirim spam kepada Anda dengan ide-ide mereka sebelum mereka terbentuk kemudian periksa email Anda hanya 2 atau 3 kali sehari dan jangan terburu-buru dengan tindakan, Anda akan terkejut berapa banyak "masalah" dan permintaan menjadi tidak relevan bahkan sebelum Anda membacanya.
sumber