Sebenarnya, ini adalah pertanyaan yang sangat sulit karena tidak ada jawaban yang benar-benar tepat. Di organisasi kami, kami telah menempatkan proses yang lebih baik untuk menghasilkan kode yang lebih baik. Kami memperbarui standar pengkodean untuk mencerminkan bagaimana kami, sebagai kelompok, menulis kode, dan kami telah melembagakan pengujian / refaktor / desain / kode yang sangat kuat. Kami mengirimkan secara terus menerus atau setidaknya mencoba. Paling tidak, kami memiliki sesuatu untuk ditunjukkan kepada para pemangku kepentingan setiap dua minggu. Kami merasa bahwa kami adalah pengrajin perangkat lunak dan semangat kerja tinggi. Namun, terlepas dari semua checks and balances ini, kami menderita masalah yang sama dengan Anda.
Pada akhirnya, kami mengirimkan produk ke pelanggan yang membayar. Pelanggan ini memiliki kebutuhan dan harapan, realistis atau tidak. Seringkali tim penjualan membuat kita kesulitan hanya untuk mendapatkan komisi. Terkadang pelanggan memiliki harapan langsung yang tidak realistis atau permintaan berubah meskipun kami memiliki kontrak. Garis waktu terjadi. PTO dan hari-hari yang hilang selama sprint dapat terjadi. Segala macam hal kecil dapat memuncak dalam situasi di mana kita dipaksa ke dalam teka-teki "lakukan dengan benar" atau "lakukan secepat mungkin." Hampir selalu, kita dipaksa untuk "melakukannya secepat mungkin."
Sebagai pengrajin perangkat lunak, pengembang, pemrogram, orang-orang yang memberi kode untuk suatu pekerjaan - adalah kecenderungan alami kita untuk "melakukannya dengan benar." "Lakukan secepatnya" adalah apa yang terjadi ketika kita bekerja untuk bertahan hidup, seperti kebanyakan dari kita. Saldo sulit.
Saya selalu mulai dengan mendekati manajemen eksekutif (Saya Direktur Pengembangan Perangkat Lunak dan pengembang aktif dalam grup itu) untuk mempertahankan jadwal, tim, dan pekerjaan yang sedang dilakukan. Biasanya pada saat itu saya diberitahu pelanggan harus memilikinya sekarang dan harus bekerja. Ketika saya tahu tidak ada ruang untuk negosiasi atau memberi, saya kembali dan bekerja dengan tim untuk melihat sudut apa yang bisa dipotong. Saya tidak akan mengorbankan kualitas dalam fitur yang mendorong kebutuhan pelanggan untuk mendapatkannya SECEPATNYA, tetapi sesuatu akan hilang dan akan didorong ke sprint lain. Ini hampir selalu OK.
Ketika Anda tidak dapat mengirim karena ada begitu banyak bug, kualitas kode buruk dan semakin buruk, dan waktu semakin pendek, maka Anda berada dalam situasi yang berbeda dari apa yang saya jelaskan. Dalam hal itu, salah urus saat ini atau di masa lalu, praktik pembangunan yang buruk yang menyebabkan kualitas kode yang buruk, atau faktor lain mungkin membawa Anda pada mars kematian.
Pendapat saya di sini adalah melakukan yang terbaik untuk mempertahankan kode yang baik dan praktik terbaik untuk mulai menarik perusahaan Anda keluar dari parit. Jika tidak ada satu pun kolega yang mau mendengarkan atau pergi untuk menentang kelompok, maka mungkin sudah saatnya untuk mencari pekerjaan baru.
Pada akhirnya, kehidupan nyata mengalahkan semua. Jika Anda bekerja untuk perusahaan yang perlu menjual apa yang sedang Anda kembangkan, maka Anda akan menghadapi pertukaran ini setiap hari. Hanya dengan berusaha keras untuk mencapai prinsip-prinsip pengembangan yang baik sejak awal, saya berhasil bertahan di depan kurva kualitas kode.
Dorongan dan tarik antara pengembang dan penjual mengingatkan saya pada sebuah lelucon. "Apa perbedaan antara penjual mobil bekas dan seorang penjual perangkat lunak? Setidaknya penjual mobil bekas tahu dia berbohong." Pertahankan dagu Anda dan cobalah untuk "melakukan hal yang benar" saat Anda pergi.