Jadi saya punya program yang saya kerjakan pada tahun 2011 dan sepanjang tahun 2012, tetapi rilis terakhir adalah pada bulan Desember 2011 . Saya telah secara aktif mengerjakannya, tetapi fitur creep memikat kepalanya yang jelek dan sekarang diisi dengan banyak fitur yang belum selesai.
Bagian yang buruk adalah bahwa ketika saya mengimplementasikan fitur, yang baru merayap masuk. Apa yang bisa saya lakukan untuk menghindari merayap fitur di masa depan sehingga saya benar - benar bisa mendapatkan rilis lebih dari setahun ?
Proyek ini berbasis di sekitar iOS dan digunakan untuk memiliki rilis di sekitar setiap pembaruan versi iOS, tetapi yang terakhir kembali dengan 5.1 (2011). Saya ingin bisa mendapatkan siklus rilis yang stabil kembali, tetapi terbukti terlalu sulit.
sumber
Jawaban:
Dalam pengalaman saya, itu paling mudah jika Anda dapat memiliki pengembangan dan melepaskan irama yang tidak menghalangi apa yang ingin Anda lakukan. Begini cara saya melakukannya:
Dengan cara ini, Anda bisa mendorong rilis setelah setiap fitur jika Anda mau ... atau menunggu rollup yang menawarkan nilai yang Anda inginkan untuk rilis.
catatan:
sumber
Jawabannya basi dan sering kali mustahil: menolak untuk menambahkan fitur tambahan.
Secara lebih mendalam, jawabannya benar-benar turun ke apa yang membuat fitur baru jatuh ke dalam fitur creep bin? Jika kita mengasumsikan bahwa fitur creep adalah yang ditambahkan ke proyek meskipun faktanya fungsionalitasnya hanya bersinggungan dengan tujuan penggunaan proyek dan bahwa fitur creeping berguna, tidak berlebihan, jawabannya adalah memindahkannya untuk memisahkan , tetapi alat terkait. Gunakan filosofi Unix untuk membangun alat ortogonal dan menempelkannya bersama-sama.
Dari sudut pandang manajemen proyek, jawabannya sebanding. Putuskan berapa banyak waktu yang bersedia Anda curahkan untuk rilis berikutnya dan tentukan tenggat waktu. Perkirakan fitur dan potong cukup untuk membuat tenggat waktu. Jika ada pemangku kepentingan yang terlibat selain diri Anda, buat mereka memilih yang paling penting bagi mereka.
Tinjauan yang baik tentang Penjadwalan dapat ditemukan di Joel on Software:
http://www.joelonsoftware.com/articles/fog0000000245.html
sumber
Salah satu pelajaran terpenting dalam pembangunan adalah mengetahui kapan waktunya untuk berhenti.
Apa yang biasanya terjadi adalah pengembang menambahkan fitur. Itu pada gilirannya menginspirasi lebih banyak ide. Jadi lebih banyak fitur ditambahkan. Itulah, seperti yang Anda katakan, salah satu cara proyek menjadi vaporware. Pengembang tidak pernah melihat proyek sebagai 'selesai', sehingga tidak pernah dirilis.
Kebiasaan yang ingin Anda masuki adalah berhenti berpikir dalam hal rilis / versi sebagai proyek 'selesai'. Sebaliknya, lihat pembangunan sebagai proses jangka panjang. Pikirkan rilis sebagai tonggak di sepanjang jalan menuju apa yang Anda harap suatu hari program akan. Dengan demikian, rilis / versi hanyalah snapshot dari tempat Anda berada dalam proses jangka panjang ... sebuah snapshot yang telah dibulatkan dan diuji dengan baik.
Apa yang dapat Anda lakukan, di sisi praktis, adalah duduk dan tentukan rilis Anda berikutnya. Itu tidak harus sangat teliti. Tuliskan 3-5 fungsionalitas utama baru yang menurut Anda sangat penting untuk rilis berikutnya. ( jumlah fitur yang sebenarnya dapat bervariasi tergantung pada jenis aplikasi, tidak termasuk perbaikan bug atau perubahan minor gui ) Bekerja pada mereka. Jika Anda menemukan ide-ide lain, itu bagus ... buat saja catatan dan terapkan dalam rilis berikut. Ketika Anda menyelesaikan 3-5 item itu, rilis Anda siap untuk versi beta.
Ketika saya memulai aplikasi baru, saya biasanya memikirkan 'visi' akhir untuk aplikasi. Bagi saya, itulah yang saya inginkan dalam versi 3 aplikasi. Dengan tolok ukur itu, saya punya ide tentang apa yang akan membuat versi solid 1 - hanya dasar-dasarnya.
Ringkasan:
Setiap rilis tidak harus menjadi 'visi' proyek yang selesai. Hanya tonggak menuju visi itu.
sumber
Gunakan sistem kontrol versi yang murah untuk membuat cabang untuk beberapa ide, dan jauhkan dari jalur rilis Anda. Misalnya dalam
git
, Anda dapat "merambah" beberapa ide, dan kemudiangit stash
membuangnya. Kemudian Anda dapat meninjau simpanan ini dan memetiknya dengan urutan apa pun yang tampaknya menarik.Untuk fitur yang lebih besar, buat cabang nyata (sehingga Anda dapat melakukan banyak komit). Contoh kasus: ketika saya ingin menambahkan dukungan generasi ke pemulung, saya membuat cabang. Stash menangkap hal-hal kecil yang mengganggu dengan sangat baik. Fitur besar dapat mulai sebagai simpanan, kemudian berubah menjadi cabang, dan akhirnya bergabung ketika siap.
Dengan simpanan dan cabang, Anda dapat mencatat ide-ide Anda, memprioritaskannya, dan membangun ruang lingkup untuk rilis proyek solo Anda, seperti halnya proyek tim yang dikelola.
Lihat, ketika Anda mendapatkan ide, itu harus pergi ke suatu tempat , dan tempat terbaik adalah kode : repo. Merayap fitur lebih baik daripada melupakan ide bagus. Tapi tentu saja, jika Anda merayapi semua fitur Anda ke jalur utama yang sama, itu akan terus menunda rilis, kecuali jika Anda memotong rilis tidak rapi penuh dengan hal-hal setengah jadi bahwa pengguna harus diperingatkan untuk tidak menggunakan.
sumber