Katakanlah perusahaan saya mengembangkan replika MS Word (hanya sebagai contoh). Apa yang akan menjadi penghambat proses pengembangan, dengan anggapan bahwa seseorang memiliki kas tak terbatas dan organisasi seperti Microsoft? Dengan kata lain, hambatan apa yang paling umum dari pengembangan perangkat lunak tersebut? Mari kita asumsikan bahwa semua spesifikasi sudah tersedia dan organisasi bekerja dengan sempurna, jadi kami hanya fokus pada pengembangan perangkat lunak hingga produk siap dikirim. Beberapa alternatif mungkin: - Menulis kode - Menulis tes - Secara manual menguji produk akhir - Menulis ulang kode karena desain yang buruk di tempat pertama - Merancang kode - Review kode yang dilakukan oleh pengembang yang berpengalaman - Merancang GUI - Merancang ulang GUI berdasarkan alpha / umpan balik pengguna beta - Memproses umpan balik dari pengguna - Menunggu umpan balik pengguna alpha / beta
Silakan gunakan referensi dalam jawaban Anda atau nyatakan pengalaman Anda pada subjek.
Jawaban:
Dalam pengalaman saya, "hambatan" utama adalah proses pembelajaran . Ketika perusahaan hipotetis Anda mulai mengembangkan Microsoft Word berikutnya, ada kesenjangan besar antara apa yang perlu Anda ketahui dan apa yang sebenarnya Anda ketahui. Ukuran kesenjangan tergantung pada banyak faktor, mungkin dalam teknologi atau domain. Anda telah menyentuh beberapa masalah ini dalam pertanyaan Anda, misalnya desain, umpan balik pengguna, dll. Microsoft Word telah dikembangkan selama lebih dari 30 tahun sekarang, jadi antara sejarah, kode, alat, dan orang-orang ada banyak pengetahuan di baliknya.
Jadi jika saya mencoba dan melakukan ini, saya akan mencoba dan mempekerjakan orang-orang terbaik dengan pengalaman dalam domain, baik teknis dan manajemen. Coba dan baca literatur yang tersedia di lapangan. Saya juga akan mencoba dan mendapatkan umpan balik pelanggan sesegera mungkin. Masalah terbesar adalah hal-hal penting yang Anda tidak tahu dan mungkin tahu tentang sangat terlambat dalam proses Anda.
Omong-omong, ini tidak unik untuk proyek perangkat lunak. Itu benar untuk setiap proyek skala besar di mana Anda mencoba melakukan sesuatu yang baru. Misalnya, lihat Boeing Dreamliner. Ada banyak buku yang ditulis tentang ini. Bulan Mythical Man adalah satu.
sumber
Anda telah mengasumsikan dua "kemacetan" terbesar dalam proses pengembangan perangkat lunak tidak ada (dari pengalaman pribadi saya).
sumber
Bahkan di dunia Anda yang hipotetis dan sempurna, ada beberapa masalah yang dapat saya lihat:
Mungkin yang paling penting, dari sudut pandang saya sendiri, adalah berurusan dengan pelanggan. Dalam pengalaman saya sendiri, bisnis harus berurusan dengan pelanggan yang sering mencoba mengubah proyek saat sedang dikembangkan. Dalam beberapa kasus, mereka telah mencoba mengubah permintaan perubahan sebagai perbaikan bug untuk menghindari keharusan membayar uang. Hal ini dapat menyebabkan banyak birokrasi yang dapat menunda proyek atau menyebabkan peretasan cepat dalam kode yang berkembang menjadi hutang teknis lebih lanjut. Saya sudah membaca dan mendengar tentang tim yang menangani masalah ini semudah bernafas, dan saya berharap saya berada di salah satu dari mereka :)
Masalah kedua adalah kurangnya model domain yang tepat. Eric Evans memberikan liputan yang baik tentang ini dalam bukunya: Domain Driven Design . Kurangnya model domain yang baik menyebabkan beberapa masalah yang disorot dalam jawaban Glenn, seperti mencoba mencari bug. Tanpa model domain yang bersih, mungkin memakan waktu untuk berjalan melalui / debug kode untuk mengisolasi dan memperbaiki masalah. Saya berpendapat bahwa model domain yang baik membuat hidup dan debugging jauh lebih mudah, bahkan lebih ketika mempertahankan dan memperluas aplikasi lebih jauh.
Masalah yang saya sebutkan di atas tidak menghasilkan masalah langsung, tetapi jika Anda perlu mempertahankan produk ini untuk jangka waktu yang lama, mereka mungkin kembali menghantui Anda dan tim Anda.
sumber
Saya tidak yakin apa yang Anda maksud dengan "organisasi bekerja dengan sempurna", tetapi bahkan dalam organisasi yang fantastis, hambatan terbesar dalam setiap proyek yang cukup besar adalah komunikasi. Mythical Man Month menunjukkan bagaimana, ketika tim proyek tumbuh, kombinasi komunikasi meledak, hampir menjamin kesalahan dan informasi yang terlewat.
sumber
Dari apa yang saya lihat sejauh ini di tempat kerja, sumber kemacetan yang besar datang hanya dari bug dan kesalahan manusia yang menciptakannya. Pikirkan saja waktu yang diperlukan untuk men-debug kode, temukan perbaikan untuk masalahnya, dan kemudian tes ulang solusi baru. Sekarang bayangkan jika perbaikan itu menyebabkan bug halus lainnya. Ini bisa menjadi aliran utama rasa sakit dan dengan demikian memperlambat perkembangan secara keseluruhan.
sumber
Saya pikir Brandon Moretz memiliki jawaban terbaik. Tapi saya ingin menambahkan bahwa mengeluarkan versi pertama dari proyek besar tidak terlalu sulit. Saya pribadi tidak pernah gagal melakukan itu.
Apa yang saya gagal lakukan adalah membuat versi pertama sedemikian rupa sehingga versi kedua, ketiga dll dan atau perbaikan bug dan atau peningkatan fitur kecil juga dapat disampaikan secara tepat waktu.
sumber
Ya saya akan setuju dengan hal-hal di atas dan harus mengikuti model perangkat lunak. Sesuai pengetahuan saya, hal-hal utama adalah:
1. Manajemen Waktu 2. Efisiensi Tim dan manajemen tim 3. Koordinasi dalam Tim dan 4. Pemahaman yang lebih baik dengan Klien
Jika kita memiliki empat di atas, maka kita dapat pindah ke dunia baru dengan kesuksesan dan banyak peningkatan dalam hal kepribadian dan perangkat lunak. Ini mengarah pada hubungan yang baik dengan klien dan klien akan memberikan pesanan tanpa memikirkan kita.
sumber
Cacat laten, dalam persyaratan, desain, implementasi, penyebaran .... Seperti dalam hal-hal yang rusak tetapi Anda belum menemukannya. Bayangkan pengembangan perangkat lunak adalah setiap bug baru disebabkan oleh perubahan terbaru.
sumber