Bagaimana Anda tahu kapan harus berhenti menambahkan fitur?

16

Beberapa waktu lalu saya menulis skrip python yang sangat kecil yang secara berkala memeriksa umpan xml untuk entri baru, dan mengingatkan pengguna untuk entri baru saat ada. Saya menulis ini untuk diri saya sendiri, jadi pada dasarnya ini adalah program berbasis konsol yang dapat digunakan oleh siapa pun yang nyaman dengan antarmuka konsol.

Setelah beberapa saat saya memutuskan itu bisa lebih bermanfaat bagi orang lain dan mulai membereskannya, membersihkan input, menghilangkan bug. Terpikir oleh saya bahwa karena saya telah menulis skrip saya tahu cara menggunakannya secara efisien, akurat, dll. Yang lain mungkin tidak, jadi saya mulai menambahkan GUI. Ini dimulai sebagai menu sederhana, dan kemudian diperluas ke GUI yang lebih lengkap dengan menu antarmuka dan opsi. Saya kemudian menambahkan preferensi pengguna yang disimpan dan juga penyimpanan untuk umpan xml yang dicari sebelumnya untuk mempercepat pencarian berulang.

Saya menambahkan logging untuk membantu men-debug aplikasi jika terjadi kesalahan, membawa aplikasi ke basis kode python stabil terbaru yang tersedia untuk platform yang saya pilih dan meningkatkan fitur dialog.

Saya telah memperbaiki bug dan berkomentar kode saya dengan jelas, namun saya masih memiliki hal-hal yang saya pikir dapat dilakukan untuk meningkatkan aplikasi sebelum saya membuatnya tersedia untuk penguji alfa. Ini jauh sekali dari skrip asli 20-30 baris saya. Apa yang saya perkirakan akan membawa saya hanya satu atau dua jam untuk beralih dari pembuktian konsep menjadi program penggunaan yang dapat diterima telah menghabiskan 10-20 kali lipatnya. (Aku masih noob, dan banyak hal butuh waktu lama, tapi masih ....)

Bagaimana Anda tahu kapan harus berhenti menambah / mengubah / memperbaiki hal-hal dan membiarkan bayi Anda merangkak keluar di tempat terbuka?

ketakutan
sumber

Jawaban:

8

Ketika Anda mencapai batas waktu.

Jika Anda tidak memiliki tenggat waktu, ini adalah masalah Anda ...

Inilah cara saya bekerja:

  1. Saya menambahkan fitur / bug baru di jaminan produk saya.
  2. Saya memprioritaskan seluruh simpanan produk pada nilai bisnis dan perkiraan (yang terakhir adalah opsional jika proyek pribadi).
  3. Saya mengalokasikan waktu kerja untuk diri saya sendiri. Tanggal rilis adalah akhir dari waktu itu.
  4. Saya mulai dengan yang pertama dalam daftar. Saya mengerjakan fitur suatu waktu. Untuk diselesaikan, fitur harus benar-benar lengkap termasuk dokumentasi (pada akhir fitur, saya berpotensi mengirimkan produk).
  5. Saya mengambil yang berikutnya sampai waktu yang dialokasikan saya dikonsumsi.
  6. Jika waktu habis ketika saya membangun fitur, saya membuangnya sementara.
  7. Ketika waktu yang dialokasikan habis, saya mengambil versi terbaru dan merilisnya.
  8. Saya ulangi proses dari poin 1.

sumber
Hmm saya sangat menyukai alur kerja di sini. Ini adalah proyek hobi, saya tidak yakin saya akan mencoba untuk menguangkannya, lebih mungkin ditawarkan secara gratis atau dibuat open source.
fearoffours
4
Nilai tidak berarti uang dalam alur kerja yang disarankan di atas. Anda memutuskan berapa nilainya.
OK ini luar biasa. Saya sudah menerapkan ini sejak saya melihat posting sebelumnya hari ini. Batas waktu saya hari Rabu jam 3 sore, dan semuanya berjalan baik! Saya merasa lebih percaya diri tentang ke mana barang-barang itu pergi dan apa yang saya kerjakan. Saya telah memprioritaskan (dalam komentar di bagian atas skrip) hal-hal yang harus dilakukan sebelum rilis ini, dan hal-hal yang dapat dibiarkan sampai nanti. Dan saya menuliskan fitur yang sedang saya kerjakan untuk memastikan saya tetap fokus pada tugas pada suatu waktu. Terima kasih!
fearoffours
3. I allocate work time to myself. The release date is the end of that time.@Ierre 303, Ketika Anda mengatakan apa yang timeAnda maksud dengan jam yaitu membangun malam? atau waktu seperti sprint penuh?
Kenan D
@LordCover: Misalnya saya menugaskan saya 3 minggu (5 hari seminggu, 8 jam sehari) untuk mengerjakan produk. Saya mengirim pada akhir 3 minggu.
3

Buat SRS lalu kode sesuai dengan persyaratan. Ketika Anda telah mencapai semua tujuan yang disebutkan dalam SRS, saatnya untuk berhenti dan menguji produk Anda.

Chankey Pathak
sumber
Poin bagus. Saya tidak menulis apa pun tentang tujuannya saat ini.
fearoffours
SRS baik tetapi untuk tim pria lajang pada proyek pribadi agak berlebihan. Dokumentasi bagus tetapi untuk jenis proyek ini saya kira belum semua SRS diperlukan.
Chris
@ Chris - SRS selalu merupakan hal yang baik. Apa itu proyek pribadi dan dirilis secara gratis hari ini, masih merupakan bagian gratis dari perangkat lunak dan ditulis oleh lusinan orang. Sebuah contoh yang bagus tentang mengapa dokumentasi penting bagi Facebook, adalah lebih mudah untuk menulis dokumentasi pada tahap awal dan memperbarui dokumentasi itu kemudian menulisnya hari ini. Jika Anda tidak dapat menuliskan desain Anda, jelaskan desain, dokumentasi cara fitur tersebut bekerja, lalu bagaimana Anda bisa mengkodekannya?
Ramhound
2

Dalam jangka pendek, ketika Anda memiliki sesuatu yang bekerja dengan andal dan tidak crash. Bahkan jika itu tidak melakukan segalanya, itu bisa dilakukan jika Anda mengerjakannya tanpa batas. Pengiriman seperti kata pepatah adalah fitur . Reliabilitas dan rangkaian fitur terbatas memberi Anda kesempatan untuk fungsionalitas inti untuk diuji oleh orang-orang nyata di dunia nyata, yang akan menemukan hal-hal yang Anda tidak pernah pikirkan yang memecahkan kode Anda dengan cara yang tidak akan pernah terlintas dalam pikiran Anda. Semakin sedikit fitur yang Anda miliki, pada titik ini, semakin mudah untuk memperbaiki masalah awal tersebut. Karena fungsionalitas inti berfungsi lebih andal, Anda dapat mulai menerapkan hal-hal "baik untuk memiliki" lainnya dengan pengetahuan bahwa kode pusat dan terpenting Anda masih berfungsi dengan baik.

Dalam jangka panjang: Ketika Anda telah menyelesaikan dan mendokumentasikan sistem plug-in yang akan memungkinkan pengguna Anda (dan tentu saja Anda) untuk mengimplementasikan fitur-fitur baru dengan cepat dan mudah jika Anda membutuhkannya. Itu harus menjadi fitur terakhir yang Anda perlu tambahkan setelah itu semua plug-in.

glenatron
sumber
1

Ketika Anda yakin tentang stabilitas perangkat lunak Anda, silakan rilis meskipun mungkin ada fitur yang tertunda. Stabilitas lebih penting daripada fitur. Dapatkan umpan balik, gabungkan dengan fitur yang ada dan putuskan apa yang harus disampaikan selanjutnya dan kapan!

Gopi
sumber
1

Anda selalu dapat merawat proyek untuk selamanya.

Aturan yang sangat bagus adalah Anda tidak boleh menambahkan hal-hal yang tidak ada dalam kasus penggunaan yang disetujui. Ini memastikan bahwa Anda tidak berakhir dengan banyak hal yang menyenangkan untuk dimiliki, tetapi tidak ada yang menggunakannya. Menyetujui memastikan bahwa orang lain selain Anda setuju bahwa ini diperlukan dalam proyek Anda.


sumber
1

Itu tergantung pada mengapa Anda menambahkan fitur. Apakah pemilik proyek memintanya? pengguna? QA? Programmer?

  • Tambahkan fitur yang Anda harus.
  • Menyaring fitur-fitur yang penting.
  • Abaikan fitur yang bagus untuk dimiliki.

Fokus pada tujuan program, dan buat tujuannya terfokus. Permintaan fitur yang memperpanjang tujuannya harus dipertanyakan secara menyeluruh sebelum menjadi pisau tentara swiss.

Huperniket
sumber
Saya suka ide menjaga produk tetap fokus. Saya mencoba melakukan itu, dan masih menemukan cara untuk menyibukkan diri!
fearoffours
2
@ takut, Anda selalu dapat menemukan cara untuk membuat pekerjaan Anda lebih baik. Intinya adalah mencari tahu dari pengguna cara membuatnya bekerja lebih baik bagi mereka. Selesaikan rintangan nyata . Bintik-bintik kasar nyata halus .
Huperniketes
saran yang bagus dalam komentar itu, (+1) terima kasih!
fearoffours
0

Saya tidak berhenti menambahkan fitur lagi. Saya hanya mencoba untuk mendapatkan aplikasi di luar ASAP dan menulis file txt jika saya perlu. Maka saya dapat memutuskan kapan harus berhenti dan kapan harus mengerjakan sesuatu yang berbeda

Ini juga membantu saya suka melakukan min yang mungkin untuk menyelesaikan sesuatu (tanpa menggunakan peretasan).


sumber
0

Saya sarankan Anda timebox itu. Beri diri Anda satu minggu berkata. Buat daftar pekerjaan yang harus diselesaikan selama minggu itu, dan pastikan jika Anda memiliki fitur yang tidak dapat Anda selesaikan, Anda dapat mendukungnya.

Di akhir minggu rilis saja. Lepaskan lebih awal, sering lepaskan.

mlk
sumber
tetapi apa yang harus dilakukan ketika beberapa fitur memiliki ketergantungan satu sama lain?
Kenan D
0

Ketika Anda memiliki sesuatu yang dapat diandalkan dan bermanfaat, lepaskan. Anda tidak harus berhenti menambahkan fitur, tetapi jika ada yang menggunakan apa yang Anda dapatkan di sana Anda akan mendapatkan ide yang lebih baik tentang fitur apa yang diinginkan. Saat ini, Anda menebak.

David Thornley
sumber