Melompat untuk bekerja pada fitur yang berbeda ketika Anda macet, apakah itu sumber kegagalan proyek?


16

Pada proyek pribadi (atau pekerjaan), jika seseorang terjebak pada suatu masalah, atau menunggu untuk mencari solusi untuk masalah tersebut, jika Anda melompat ke bagian lain dari kode Anda, jangan Anda pikir itu akan menjadi alasan bagus aplikasi Anda akan buggy atau lebih buruk namun tidak pernah selesai?

Dengan asumsi Anda tidak menggunakan git dan mengkodekan setiap fitur ke cabang tertentu, banyak hal dapat menjadi tidak terkendali karena Anda memiliki 3 fitur berbeda yang sedang Anda kerjakan, dan Anda memiliki masalah yang belum terselesaikan di masing-masing cabang.

Jadi, ketika Anda selesai bekerja, Anda menjadi stres karena Anda memiliki masalah ini menggantung dan kode setengah matang berlama-lama.

Apa cara terbaik untuk menghindari masalah ini? (jika Anda memilikinya)

Saya menduga menggunakan sesuatu seperti git dan membuat cabang per fitur adalah cara paling aman untuk menghindari kebiasaan buruk ini.

Ada saran lain?


Apakah Anda memiliki masalah ini untuk diri sendiri? Atau apakah Anda mengamati ini oleh beberapa rekan tim Anda?
Doc Brown

Jawaban:


33

Ini bukan masalah. Meninggalkan sementara dari masalah yang membingungkan adalah salah satu cara terbaik untuk melakukan terobosan pada masalah seperti itu (baik nanti ketika Anda memikirkannya atau lain kali Anda duduk dengan perspektif / pikiran segar).

Selalu pastikan Anda menggunakan kontrol sumber bercabang dengan benar dan Anda tidak perlu khawatir tentang setengah solusi dalam kode. Beberapa orang tidak pernah istirahat, tetapi itu hanya pilihan pribadi. Anda seharusnya tidak pernah benar-benar mendorong waktu istirahat untuk berbagi dengan orang lain.


+1 untuk percabangan kontrol versi. Kami telah melihat komitmen yang memperbaiki 10 masalah dalam satu perbedaan tetapi satu buruk, jadi tidak ada cara untuk mengisolasi perubahan buruk.
JBRWilkinson

8

Seperti yang disebutkan smp7d , melompat-lompat dapat memberikan Anda istirahat mental yang baik dari masalah yang dihadapi. Namun, penting untuk tidak lupa bahwa kode yang sedang Anda kerjakan masih belum lengkap. Pastikan Anda tahu di mana Anda tinggalkan.

Seperti yang disebutkan smp7d, kontrol sumber dan percabangan adalah cara yang bagus untuk memisahkan kode fitur baru Anda, dan melihat perbedaannya dari basis kode utama.

Satu saran yang saya miliki adalah bahwa jika Anda bekerja pada metode tertentu, pastikan bahwa ada unit test bernama baik di sekitar metode itu. Dengan begitu ketika Anda mengerjakan kode itu pada hari berikutnya / minggu / bulan / tahun, Anda harus dapat dengan jelas mengatakan apa yang harus dilakukan metode tersebut , bahkan jika saat ini tidak lulus tes.


1
Beri +1 untuk gagasan pragmatis Anda yang memiliki tes unit gagal (katakanlah, daripada komentar TODO) untuk memastikan bahwa Anda mengingat masalah yang Anda tunda.
Adam Crossland

3

Apakah ini masalah? Tidak ketika itu terjadi pada Anda untuk 10% dari fitur yang Anda coba terapkan. Terkadang pikiran Anda menjadi lebih jernih saat melakukan sesuatu yang berbeda terlebih dahulu.

Jelas itu adalah masalah ketika Anda terjebak untuk 90% dari fitur yang Anda coba terapkan - maka Anda perlu bantuan dari orang lain, atau sedikit tendangan dari bos Anda untuk menyelesaikan apa yang telah Anda permulakan (tentu saja, yang terakhir akan kontraproduktif jika Anda mengalami masalah teknis yang sebenarnya).

Opsi terbaik untuk kasus ini sering mencoba untuk membagi fitur yang sedang Anda kerjakan menjadi sub-fitur yang lebih kecil atau "fitur-slices", yang dapat diimplementasikan, diuji dan didebug satu-persatu. Bagi saya, membantu untuk menulis fitur-irisan, masalah terbuka, bagian-bagian yang harus dilakukan pada daftar, memberi mereka prioritas (A, B, C sudah cukup), dan mengerjakan hal-hal dengan prioritas tertinggi terlebih dahulu.


Poin bagus. Melompat-lompat seharusnya tidak menjadi norma.
smp7d

3

Sudah pengalaman saya bahwa "melompat-lompat", atau lebih jelas "melompat secara acak" adalah gejala dari masalah yang lebih mendesak, salah satu tujuan yang dinyatakan dengan buruk.

Jika Anda memiliki ide yang sangat jelas, secara tertulis, apakah catatan tempel di sisi monitor Anda atau dalam spesifikasi formal yang dilampirkan pada pelacak masalah pilihan Anda, maka Anda hampir selalu tahu persis apa yang harus dilakukan selanjutnya . Jika Anda selalu mengerjakan salah satu dari hal-hal berikutnya, maka Anda akan memiliki peluang bagus untuk berhasil dengan proyek tersebut.

Jika, di sisi lain, ide Anda tentang apa hal terpenting berikutnya adalah kabur, jauh lebih sulit untuk benar-benar menemukan sesuatu untuk dikerjakan yang benar-benar mengatasi masalah yang ingin diselesaikan oleh proyek Anda, atau lebih khusus lagi, jauh lebih sedikit dan-kering ketika memutuskan bahwa perubahan khusus ini selesai dan menyelesaikan masalah tertentu.

Jika Anda memiliki tujuan seperti "membuat UI lebih mudah digunakan", well, hampir tidak mungkin untuk mengatakan apa yang seharusnya diperbaiki, atau ketika Anda selesai "memperbaiki UI" dan dapat beralih ke hal lain. Jika, di sisi lain, Anda memiliki tujuan seperti "menggabungkan drop-down ini ke dalam bidang pencarian dengan autocomplete" dan "'foo' harus secara otomatis melengkapi ke 'Fooly Brand Baring'", itu benar-benar jelas ketika Anda telah memperbaiki masalah itu.

Jangan menulis kode apa pun sampai Anda memiliki ide yang sangat jelas tentang kapan harus berhenti , dan jika Anda tidak memiliki ide yang jelas, berusahalah untuk mendapatkan salah satu dari itu daripada memulai cabang lain untuk beberapa fitur umum.

Jika Anda memiliki spesifikasi pekerjaan yang bagus (bahkan untuk proyek pribadi), maka "melompat-lompat" benar-benar baik dan aman serta bermanfaat.


0

Meskipun menjauh dari masalah dapat membantu Anda menyelesaikannya, perlu diingat bahwa ada biaya untuk beralih konteks. Anda harus mencoba melakukannya hanya ketika Anda benar-benar mandek atau tugas penting misi muncul (mis. Pelanggan sedang down).

Jika Anda terus-menerus berpindah-pindah tugas, Anda mungkin berakhir dengan beberapa fitur setengah jadi dan banyak waktu yang terbuang. Inilah sebabnya mengapa praktik seperti larangan melarang Anda untuk menetapkan pekerjaan dalam batas kemajuan. Dengan cara ini Anda dapat fokus menyelesaikan, paling banyak, hanya beberapa tugas sekaligus, sehingga meningkatkan throughput.


0

Kadang-kadang dapat membantu membatasi jumlah fitur yang diterapkan secara paralel. Menolak untuk mulai mengimplementasikan fitur tambahan jika batas itu akan terlampaui sampai satu fitur lainnya selesai. Pendekatan ini disebut Kanban

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.