Ketika Anda berada di bawah tekanan, tenggat waktu semakin dekat, dan seorang manajer menarik leher Anda, apakah Anda mulai menulis kode yang buruk? Apakah TDD dan praktik terbaik tergelincir di pinggir jalan untuk menyelesaikan sesuatu? Apa yang Anda lakukan dalam situasi seperti itu? Apa pengalamanmu?
14
Jawaban:
Singkatnya, ya. Siapa pun yang memberi tahu Anda sebaliknya mungkin, paling tidak, salah.
Namun, kuncinya adalah membangun pengalaman Anda untuk menulis kode yang tidak terlalu buruk. Tahan godaan untuk memasukkan sesuatu untuk membuatnya "hanya berfungsi" jika memungkinkan, karena itu tidak akan berhasil. Anda masih harus mengikuti semacam proses (baik itu milik Anda sendiri, atau perusahaan Anda, atau beberapa campurannya).
Pengalaman mengatakan kepada saya bahwa jauh lebih baik untuk ( terkesiap ) melewati jadwal beberapa hari untuk mencegah perbaikan selama satu minggu, terutama ketika "di bawah tekanan" berarti rilis yang dipercepat untuk produksi. Jika Anda terburu-buru untuk melepaskan kode, penguji mungkin akan terburu-buru untuk menggosoknya juga.
sumber
Jika tim dalam krisis maka ada sesuatu yang dilakukan salah.
Tenggat waktu yang hilang adalah tanda perencanaan dan estimasi yang buruk. Mengakui bahwa tenggat waktu akan terlewatkan dan menyelesaikan masalah. Terkadang Anda tidak memiliki kendali atas perencanaan atau estimasi. Identifikasi siapa yang melakukannya dan pastikan bahwa mereka tahu ini dilakukan karena kesalahan.
Dalam situasi itu, tenggat waktu tidak dapat dihilangkan. Anda mengeluarkan minuman yang sangat berkafein dan memburunya. Identifikasi apa pun yang dapat Anda korbankan dan hentikan itu. Ambil apa yang tersisa dan implementasikan secepat mungkin. Ini akan menyebabkan masalah seperti ketidakstabilan, kesalahan aneh, praktik pengkodean yang tidak efisien, perbaikan band-aid, dan segala macam kengerian lainnya. Ini belum tentu kode yang buruk , tetapi itu tidak ideal .
Dari Joel pada Perangkat Lunak The Duct Tape Programmer .
Kode yang tidak ideal dapat ditangani jika ditangani . Kode yang belum ditangani akan menumpuk dan pada gilirannya membuat perubahan tambahan lebih sulit, jika bukan tidak mungkin. Itu bisa sampai ke titik di mana aplikasi tersebut saling menempel sehingga penambahan hanya bisa dilakukan oleh programmer yang paling hati-hati dengan biaya waktu yang selangit. Sementara pengiriman adalah fitur, jadi itu rawatan.
sumber
Saya penggemar berat pengerjaan perangkat lunak - menulis kode bersih sebaik mungkin, dll, tetapi kadang-kadang saya harus terburu-buru pada saat-saat di mana waktu singkat dan tenggat waktu semakin dekat. Saya benar-benar berusaha untuk tidak melakukan ini semampu saya, tetapi kadang-kadang Anda tidak dapat menghindarinya.
Beberapa orang akan berkata "Yah, itu hidup, kamu harus mengirim", tetapi saya benar-benar tidak setuju dengan sikap ini.
Saat menulis kode tergesa-gesa, Anda mungkin mendapatkan perangkat lunak keluar tepat waktu, tetapi apa yang terjadi ketika, selama beberapa hari berikutnya, Anda akhirnya mendapatkan panggilan dukungan yang berkaitan dengan bug dalam perangkat lunak (bug ini hidup dalam bagian yang sama kode Anda bergegas untuk menyelesaikan). Atau Anda mendapatkan klien yang marah memanggil Anda bertanya mengapa modul pelaporan mereka tidak lagi berfungsi, meskipun Anda berjanji itu akan baik-baik saja pada hari rilis?
Semuanya mengatakan "Anda harus mengirim" , tetapi ada perbedaan antara terlihat efisien dan terlihat seperti pekerja yang ceroboh.
sumber
Iya. Tapi itu selalu kembali menghantuiku nanti.
sumber
Ketika saya dalam situasi stres, kode saya dimaksudkan untuk menyelesaikan pekerjaan. Itu dia. Saya tidak berkonsentrasi pada efisiensi dan masalah lain, yang buruk, menurut pendapat saya.
Saya akan mengerjakannya.
sumber
Saya tidak percaya saya secara pribadi menulis kode yang jauh lebih buruk, tetapi saya memberikan produk yang lebih buruk.
Ketika menghadapi tenggat waktu yang sewenang-wenang dan tidak mungkin, kami berhemat pada proses pengembangan. Kami melakukan lebih banyak ulasan kode yang dangkal (atau melompati semuanya). Kami menguji lebih sedikit, mem-bypass pengujian unit terperinci untuk tes integrasi tipe spot-check, kemudian mencoba menghitung uji integrasi sebagai kualifikasi formal. Kami cenderung mengabaikan anomali selama pengujian jika mereka tidak secara langsung terkait dengan kriteria lulus-gagal. Kami melewatkan pembaruan dokumentasi, jangan mengecek catatan rilis, lupa menggosok daftar kiriman untuk file yang tidak lagi diperlukan.
Kode sumber yang Anda tulis selama krisis mungkin berkualitas tinggi, tetapi hampir pasti akan dikirim sebagai bagian dari produk yang jelek.
sumber
Tergantung.
Apakah tekanan karena tidak ada cara semuanya bisa dilakukan dan karena fitur baru utama sedang ditambahkan beberapa jam sebelum rilis?
Kode buruk muncul!
Tetapi jika itu karena jadwalnya benar-benar sangat ketat tetapi rencana keseluruhan padat dan saya hanya harus bekerja lebih keras dari biasanya dan tetap fokus terus-menerus sambil mengutak-atik beberapa fitur mendengar dan di sana ... Kemudian saya menghasilkan kode yang jauh lebih baik daripada jika jadwal memungkinkan banyak waktu. Bahkan jika itu berarti saya tidak mendapatkan semua tes unit tertulis tetapi mencakup bagian utama dari kode.
sumber
Saya kenal seseorang yang tidak pernah menulis kode buruk di bawah tekanan. Dia juga memiliki beberapa kacang ajaib yang mungkin menarik bagi Anda.
Semua orang kadang-kadang menulis kode yang buruk dan tenggat waktu yang menjulang adalah alasan biasa, triknya adalah menghindari masuk ke situasi itu di tempat pertama (dan itu juga tidak mudah).
sumber