Apakah tenggat waktu yang terlewat itu umum dalam pekerjaan pemrograman? [Tutup]

18

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?


sumber
1
Sepenuhnya tergantung pada lingkungan. Misalnya, pekerjaan terakhir saya adalah di agen digital yang menagih klien berdasarkan perkiraan. Jika Anda melewatkan tenggat waktu di sana, bisnis kehilangan uang. Pekerjaan saya saat ini sangat dinamis sehingga tidak ada tenggat waktu sama sekali .. jika perhatian saya diperlukan di tempat lain saya diberikan waktu yang tepat untuk mendedikasikan untuk itu. Mungkin memasukkan ini dalam pertanyaan Anda akan membantu dengan jawaban.
Simon Whitehead
3
tenggat waktu yang terlewat adalah hal biasa di semua pekerjaan
Steven A. Lowe
2
Saya sangat berharap Anda berkomunikasi dengan klien tentang tenggat waktu yang terlewat. Tenggat waktu yang hilang terjadi, tetapi seharusnya tidak terduga ketika itu terjadi - Anda harus dapat melihatnya datang dan berkomunikasi tentang hal itu. Ini biasanya membuatnya lebih mudah daripada hanya "Tidak, belum siap."
Bobson
6
Lakukan dengan cepat, murah, lakukan dengan baik: pilih dua.
Reactgular

Jawaban:

45

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 :

Frederick Brooks, penulis The Mythical Man Month

  • 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.

Tulains Córdova
sumber
11
+ Jawaban yang bagus, tetapi telah memiliki beberapa paparan teknik mesin dan sipil, itu lucu bagaimana programmer membuat perbandingan yang mudah untuk membangun jembatan dan hal-hal lain, ketika mereka tidak memiliki ide sedikit pun bagaimana mereka dibangun.
Mike Dunlavey
3
Saya akan berlangganan gagasan bahwa perangkat lunak adalah rencana (dalam hal rencana dalam rekayasa - menggambarkan setiap detail proyek). Dalam kasus teknik, waktu konstruksi fisik mendominasi sehingga perbedaan besar dalam perencanaan tidak berperan. Namun karena perangkat lunak hanya terdiri dari rencana ... "Keadaan canggih dalam pengembangan perangkat lunak belum mencapai titik di mana proyek perangkat lunak dapat diulang dan hampir bebas risiko" - dalam kasus-kasus tersebut mengapa proyek sama sekali? Jika sesuatu berulang dan dapat diotomatiskan maka tidak perlu dilakukan berulang kali tetapi dapat dilakukan sekali dan disalin.
Maciej Piechotka
2
@ user61852: Anda salah paham. 'Rencana' untuk rekayasa adalah sebagai 'sumber' untuk ilmu komputer - yaitu deskripsi terperinci dari setiap komponen - tetapi begitu kita memilikinya kita dapat membangunnya (masukkan makeatau apa pun) .Apa 'rencana' dalam ilmu komputer akan menjadi 'rencana dari rencana 'dalam rekayasa. Perbedaannya adalah bahwa makedalam 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.
Maciej Piechotka
1
@ user61852: Mengenai pengulangan - satu hal yang sangat bagus di komputer adalah otomatisasi. Katakanlah Anda perlu membuat blog sederhana - pada titik di mana Anda akan memiliki 'perkiraan' yang akurat, Anda akan mendapatkan wordpress (atau sistem blogging lainnya) di tempat sehingga Anda tidak perlu melakukan apapun (jika jembatan Anda masih memiliki lingkungan yang berbeda sehingga Anda perlu beradaptasi lebih hati-hati karena batu mungkin berbeda atau mungkin ada habitat burung atau mungkin merusak pemandangan) - programmer mungkin lebih bertanggung jawab untuk membuat alat (model jembatan standar).
Maciej Piechotka
2
Bonus untuk mengutip Mythical Man Month; Frederick Brooks bertahan setelah bertahun-tahun karena dia berfokus pada orang, bukan teknologi.
Michael Shopsin
3

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.

TJ Trapp
sumber
2
Saya selalu memberi ruang 20% ​​saat melakukan estimasi. 5-10% terlalu sedikit. Saya kira itu tergantung seberapa banyak Anda terganggu. Pengembang solo mungkin tidak terganggu sama sekali
BЈовић
Saya adalah pengembang solo dan saya biasanya mengambil margin 10% untuk proyek saya.
Konsole
Hmmm ... lihat Hofstadter's_law
Philip
1
Dibandingkan dengan 5-20%, saya pikir margin 100% lebih baik. Serius. Ini memungkinkan Anda untuk menjelajahi opsi Anda dengan lebih baik. Dan jawab lebih banyak pertanyaan di Stack Exchange.
Acumenus
Oh ya, itu kesalahan pengembang ketika seorang manajer proyek veteran 15-tahun menekan seorang insinyur perangkat lunak pemula selama 1,5 tahun untuk memberinya perkiraan lalu menyesuaikannya menjadi lebih agresif dan bertindak seperti pengembang malas ketika proyek bertulang . Saya tidak pernah bekerja untuk manajer atau PM yang bisa menulis perangkat lunak sama sekali, dan Anda mengatakan kepada saya bahwa tenggat waktu yang terlewat seharusnya tidak menjadi praktik umum jika Anda ingin terus mendapatkan pekerjaan? Batas waktu yang terlewat adalah endemik karena sebagian besar PM benar-benar tidak kompeten dalam pekerjaan mereka. Manajer terbaik saya masih bukan insinyur perangkat lunak, hanya tahu batas kemampuannya.
suram
3

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.

Philipp
sumber
2

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%.

Karl Bielefeldt
sumber
1

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.

Meredith Poor
sumber
1
Apa hubungan NASA dengan pertanyaan saya?
1
Lebih penting lagi, apa hubungan evolusi manusia dengan pertanyaan Anda? NASA adalah contoh yang terdokumentasi dengan jelas dalam catatan publik tentang orang-orang terlatih dan berpengalaman yang meremehkan proyek-proyek besar. Singkatnya, pengalaman Anda 'alami'.
Meredith Poor
Meskipun saya setuju bahwa perkiraan kebanyakan orang tidak aktif setidaknya dua kali lipat, tetapi unit waktu berikutnya ... hmmmm. Ngomong-ngomong, NASA sangat pandai memperkirakan tugas-tugas yang sudah mereka ketahui caranya. Masalahnya adalah orang tidak pandai memperkirakan tugas ketika mereka tidak tahu apa yang tidak mereka ketahui. Karena NASA melakukan banyak pekerjaan perintis, tidak mengherankan bahwa mereka tidak tahu banyak tentang apa yang mereka lakukan sampai mereka mulai melakukannya. Jadi, alasan untuk meremehkan awal. Juga, beberapa orang cenderung optimis dan yang lain pesimis. Tidak yakin evolusi terlibat.
Dunk