Itu adalah pekerjaan freelancer saya di oDesk. Saya telah melakukan beberapa pekerjaan sebelumnya dalam waktu yang diberikan, tetapi ini adalah pertama kalinya saya melewatkan tenggat waktu. Itu adalah pekerjaan yang sangat panjang dan saya mencoba yang terbaik tetapi saya masih melewatkan tenggat waktu. Sekarang, saya sangat takut. Karena kesalahan saya bahwa saya melewatkan tenggat waktu.
Pertanyaan saya adalah: Apakah ini masalah besar atau tenggat waktu yang terlewat sering terjadi di antara pekerjaan pemrograman, jadi saya tidak perlu terlalu khawatir tentang hal ini?
Jawaban:
Iya. Tenggat waktu yang terlewat adalah hal umum dalam pengembangan perangkat lunak.
Banyak freelancer memenuhi tenggat waktu dengan menimbulkan utang teknis atau menyembunyikan kotoran di bawah permadani.
Mengutip Bulan The Mythical Man dari Frederick Brooks :
Tenggat waktu sering terlewatkan karena pemimpin proyek terus memperkirakan tugas-tugas perangkat lunak dengan cara yang sama mereka melakukan tugas-tugas teknik sipil, yang merupakan pendekatan yang cacat karena perangkat lunak adalah sebuah novel, industri kerajinan tangan tanpa norma-norma yang jelas. Ini sangat benar sehingga Anda tidak dapat mencabut "izin" programmer untuk kode malpraktek, atau Anda dapat menuntut seseorang untuk pemrograman tanpa judul.
Pengembangan perangkat lunak memiliki kompleksitas yang melekat yang tidak dimiliki disiplin ilmu lain. Program besar dapat memiliki lebih banyak komponen daripada mobil, dan komponen ini dapat berinteraksi dengan lebih banyak cara yang berbeda.
Perangkat lunak sulit divisualisasikan, sehingga berbagai jenis diagram digunakan untuk melihat berbagai aspek proyek, dan aspek-aspek ini mungkin tidak ortogonal. Teknik sipil, di sisi lain, memiliki cetak biru yang memungkinkan Anda untuk melihat pipa ledeng, kabel dll. Semua dalam grafik yang sama (atau lapisan) dengan cara ortogonal.
Itu tidak umum, setelah jembatan atau bangunan setengah dibangun, bagi klien untuk sepenuhnya mengubah ruang lingkup proyek. Ini sering terjadi dalam proyek perangkat lunak.
Keadaan canggih dalam pengembangan perangkat lunak belum mencapai titik di mana proyek perangkat lunak dapat diulang dan hampir bebas risiko. Bahkan perusahaan perangkat lunak terbesar seperti Microsoft dapat kehilangan tenggat waktu selama berbulan-bulan atau bertahun-tahun.
Kebanyakan vaporware tidak lain adalah proyek perangkat lunak yang terpotong karena masalah seperti ini.
Kesimpulannya:
Perkiraan yang buruk dan meremehkan kompleksitas, karena sifat kerajinan dari proses pengembangan perangkat lunak, berarti itu tetap merupakan disiplin yang belum matang.
sumber
make
atau apa pun) .Apa 'rencana' dalam ilmu komputer akan menjadi 'rencana dari rencana 'dalam rekayasa. Perbedaannya adalah bahwamake
dalam ilmu komputer membutuhkan paling banyak beberapa jam sementara menulis kode sumber (termasuk tes dan integrasi) membutuhkan waktu berbulan-bulan sedangkan dalam rekayasa perencanaan dapat memakan waktu berbulan-bulan (termasuk perhitungan struktural) sementara membangun membutuhkan waktu bertahun-tahun. Jadi, varian perencanaan memiliki dampak yang lebih rendah pada yang terakhir.Tenggat waktu yang terlewatkan tidak boleh menjadi praktik umum jika Anda ingin terus mendapatkan pekerjaan.
Dengan itu, Anda biasanya ingin meninggalkan ruangan "gerak" tambahan dalam perkiraan Anda jika hal-hal terjadi (dan selalu terjadi). Anda tidak perlu mengungkapkan bahwa Anda telah menambahkan waktu tambahan, tapi jangan membuatnya tidak masuk akal. Mungkin antara 5 - 10% dari total waktu? Satu-satunya cara Anda akan mengetahuinya adalah melakukannya beberapa kali.
Untuk mendapatkan perkiraan yang benar-benar bagus, Anda harus tahu berapa lama waktu yang dibutuhkan untuk mengkode jenis widget tertentu ... misalnya, katakanlah Anda harus membuat widget gulir tak terbatas untuk klien X. Jika diperlukan satu minggu untuk menyebarkannya ke dalam produksi tanpa bug, Anda dapat menggunakannya sebagai garis dasar untuk perkiraan gulir tak terbatas Anda.
sumber
Tenggat waktu yang hilang tidak jarang dalam pengembangan perangkat lunak. Hampir mustahil untuk memperkirakan secara akurat berapa lama proyek perangkat lunak akan berlangsung.
Profesionalisme ditunjukkan dalam cara Anda menghadapinya. Ketika Anda tahu Anda akan kehilangan tenggat waktu, beri tahu klien Anda sedini mungkin tentang hal itu sehingga mereka dapat merencanakannya.
sumber
Ini cukup umum, tetapi Anda bisa menjadi lebih baik. Anda mungkin ingin melihat perkiraan menggunakan sesuatu yang abstrak seperti poin cerita , dan melacak kecepatan Anda untuk menghitung perkiraan aktual Anda. Konsep-konsep tersebut paling sering dikaitkan dengan scrum, tetapi dapat digunakan bahkan jika Anda tidak melakukan scrum.
Hal yang menakjubkan tentang kecepatan adalah mencakup semua hal tak berwujud seperti interupsi dan kerumitan yang tak terduga yang membuat pengembang kesulitan menghitung waktu dalam perkiraan mereka. Semua probabilitas keluar rata-rata seiring waktu. Rata-rata lebih dari 10 minggu, perkiraan kecepatan kami telah akurat dalam sekitar 5%. Namun ketika kami memperkirakan tugas yang sama dalam hitungan jam, tim yang sama persis secara konsisten meremehkan 30-50%.
sumber
Teori saya (tidak terbukti) adalah bahwa manusia telah berevolusi untuk meremehkan pekerjaan rumit dua atau tiga menjadi satu. Kapan saja Kongres bertanya kepada NASA sesuatu seperti: berapa biayanya untuk membangun pesawat ulang-alik atau melakukan perjalanan ke bulan mereka kembali dalam seminggu dengan nomor. Setelah mereka kehabisan semua biaya yang diharapkan, mereka menemukan itu akan menelan biaya tiga kali lipat.
Kami memiliki lelucon di tahun 1970-an: ambil taksiran programmer, gandakan jumlahnya, lalu pindahkan ke unit waktu berikutnya. Karena itu, jika seorang programmer mengatakan itu bisa dilakukan dalam dua minggu, ia akan menyelesaikannya dalam empat bulan.
Jika ada orang yang merombak dapur, mereka biasanya berpikir 'Ya, saya akan selesai dalam dua minggu'. Mereka menyelesaikannya sekitar enam minggu kemudian.
sumber