Apa subset minimum dari praktik terbaik / terkenal dalam pengembangan perangkat lunak untuk programmer tunggal? [Tutup]

16

Saya telah menjadi programmer yang kesepian dalam pekerjaan saya untuk waktu yang cukup lama. Biasanya saya sudah membaca artikel dan posting tentang

  • Sistem Kontrol Versi
  • Integrasi / Pengiriman berkelanjutan
  • Metodologi pengembangan: Scrum, Waterfall, V-Model, Agile, XP, dll.
  • Manajemen Proyek Perangkat Lunak

Tetapi hampir semuanya tampaknya berfokus pada TIM. Saya bukan tim, jadi apa set praktik minimum yang pasti untuk hanya satu programmer? Pertimbangkan kondisi berikut:

  • Saya tidak memiliki konflik dengan kode orang lain.
  • Saya tidak perlu memelihara pohon file / direktori, lingkungan pengembangan saya peduli tentang versi dengan sendirinya (pengembangan berbasis gambar).
  • Tidak ada persyaratan formal, pengguna saya tidak tahu apa yang mereka inginkan dan mereka setuju.
  • Satu-satunya yang mungkin tertarik untuk memberikan rilis atau dokumentasi adalah saya, pada dasarnya pelanggan menginginkan HASIL dan tidak peduli dengan metodologi perangkat lunak, dll.

Pandangan saya adalah saya tidak ingin menghabiskan (terlalu banyak) waktu dan energi untuk hal-hal yang tidak berhubungan langsung dengan kebutuhan pelanggan. Ada rekomendasi?

pengguna869097
sumber
Berapa banyak rilis yang Anda miliki di alam liar yang Anda butuhkan untuk melakukan perbaikan bug?

Jawaban:

17

Tidak ada jawaban yang tepat untuk pertanyaan ini karena itu tergantung pada masing-masing orang. Jika Anda menggunakan iPad untuk melakukan semua pekerjaan dev Anda dan klien Anda senang dengan Anda, Anda tidak punya alasan untuk berubah sama sekali.

Namun, jika saya berada di posisi Anda, saya akan sangat menegakkan yang berikut:

  • Sistem kontrol versi - Meskipun Anda mungkin berpikir sistem pengembangan berbasis gambar melakukan pekerjaan mengenai pencadangan reguler dan yang lainnya, Anda tidak memiliki ruang gerak untuk fitur eksperimental di mana seseorang biasanya menggunakan cabang . Anda juga tidak memiliki cara untuk mempertahankan versi penting dari proyek ( penandaan ). Jika Anda pernah berkembang hingga melampaui diri Anda sendiri, para pengembang yang bergabung akan berpikir bahwa mereka ada di neraka.
  • Agile - Metode ini sangat berlaku untuk klien yang tidak tahu apa yang mereka inginkan. Cepat atau lambat, mereka akan menyadari bahwa mereka tidak ingin menghabiskan uang untuk mengejar ekor mereka - mereka akan ingin melihat kemajuan.
  • Alat manajemen proyek - Ini adalah suatu keharusan. Sangat sulit untuk dapat mempertahankan semua yang ada di kepala Anda, tetapi Anda tidak harus melakukannya. Disiplin dan menggunakan alat manajemen proyek (mis Redmine ) akan memungkinkan Anda untuk memisahkan tugas-tugas Anda dan memberi Anda riwayat pekerjaan yang mudah dijelajahi. Ini akan sangat penting ketika Anda mulai mengisi daya per jam.
JK
sumber
+2 untuk Manajemen Agile dan Proyek. Namun, untuk fitur eksperimental saya biasanya menggunakan gambar-virtual (yang akan setara dengan bercabang) dan akhirnya membuka contoh lain dari lingkungan saya. Terima kasih atas balasan baik Anda.
user869097
16

Kontrol versi adalah keharusan mutlak bagi setiap programmer, bahkan seorang pun. Ini berarti Anda dapat memulihkan secara sederhana dan cepat dari file yang dihapus dan perubahan kompleks yang salah.

Pada dasarnya itu menyelamatkan Anda dari omong kosong bodoh yang Anda lakukan ketika Anda pergi kerja digantung.

Tom Squires
sumber
1
Itu bukan satu-satunya manfaat. Salah satu manfaat utama adalah dapat mereproduksi versi perangkat lunak yang lebih lama. Dan itu berguna ketika mencoba mereproduksi masalah dan / atau menentukan kapan masalah diperkenalkan.
Marjan Venema
2
Plus 1 karena telah menyelamatkan otakku yang kelaparan begitu, berkali-kali.
Nicholas Smith
1
Juga, cabang. Sering kali saya mengalami situasi ini di mana saya mulai melakukan perubahan, dan mendapat telepon untuk membuat rilis dengan grafis yang diganti atau hal-hal kecil lainnya. Dengan cabang, itu sangat mudah dilakukan, hanya beralih ke cabang master saya dan membangun perangkat lunak. Tanpa itu? Saya akan mencabut rambut saya untuk menyelesaikan perubahan yang melanggar atau mengembalikannya untuk dapat menghasilkan rilis yang stabil.
Tamás Szelei
1
Menganggap Anda menulis komentar check-in yang bermanfaat, itu juga memberi Anda cara yang hebat untuk kembali ke masa lalu untuk menjawab pertanyaan "Apa yang saya pikirkan ketika saya menulis tumpukan sampah ini?"
Ned
1
@ user869097, bagian dari maksud situs SE adalah agar pertanyaan dan jawaban bermanfaat untuk lebih dari sekadar penanya pertanyaan asli. Meskipun persyaratan tidak biasa Anda membuat kontrol versi menjadi tidak praktis (dan saya harus mengatakan saya tidak sepenuhnya yakin, karena metodologi percabangan Anda tampaknya tidak memungkinkan penggabungan), mayoritas pengembang tunggal yang tidak menggunakan kontrol versi seharusnya.
Peter Taylor
6

Seperti yang orang lain katakan, kontrol versi atau manajemen kode sumber sangat penting. Gunakan DVCS, dan pelajari semua tentangnya. Tidak masalah yang mana itu, meskipun mungkin menguntungkan Anda jika Anda memilih yang populer: git atau lincah.

Hal lain yang saya tidak lihat disebutkan, adalah skrip pembuatan satu langkah . Ini bukan integrasi terus menerus langsung (frasa itu rentan terhadap BS menurut saya), tetapi alat yang sangat berguna. Setiap kali Anda perlu melakukan pembaruan darurat, Anda bisa menjalankan skrip dan selesai dengan itu. Ketika mendekati akhir proyek, itu juga terjadi bahwa beberapa bangunan diperlukan per hari. Pengalaman saya adalah bahwa itu sangat bermanfaat, bahkan jika proses pembuatannya tidak terlalu rumit. Anda bahkan dapat menambahkan kemampuan mengunggah ftp, laporan dalam surel, menjalankan pengujian unit, membangun installer, menandatangani dll. Memiliki skrip yang ditulis sejak awal mudah untuk mempertahankan dan memperluas dengan langkah-langkah lebih banyak saat proyek berlangsung.

Tamás Szelei
sumber
2

Saya hanya akan menjawab satu, kontrol versi sangat penting untuk proyek apa pun dan bukan hanya untuk tim. Dibutuhkan sedikit waktu ekstra ketika Anda menggunakannya tetapi memberikan sejarah yang kaya bagi Anda untuk kembali, itu bukan peluru perak tapi itu tentu baik untuk dapat kembali ke copy yang berfungsi jika itu benar-benar fitur eksperimental telah merusak sebagian besar aplikasi.

Nicholas Smith
sumber
2

Kontrol versi mutlak harus. Bukan hanya karena menjaga sumbernya ok, tetapi karena sumber arkeologi. Setahun dari tidak dapat memeriksa bagaimana suatu kelas atau prosedur berevolusi dapat menyelamatkan banyak rasa sakit jika Anda mencoba untuk "memperbaiki" beberapa kode aneh.

Untuk metodologi - Saya sangat merekomendasikan manifesto programmer . Biasanya memberikan hasil yang luar biasa dalam tim kecil karena nol overhead dan tidak harus tetap di kepala Anda bagaimana sekelompok J2EE portlet yang diaktifkan JSR-kepatuhan-MVC berbasis CMS kerangka kerja aplikasi web wadah aplikasi layanan CMS bekerja .

Daniel Iankov
sumber