Dalam proyek saya saat ini (sebuah game, dalam C ++), saya memutuskan untuk menggunakan Test Driven Development 100% selama pengembangan.
Dalam hal kualitas kode, ini sangat bagus. Kode saya tidak pernah dirancang dengan begitu baik atau tanpa bug. Saya tidak merasa ngeri ketika melihat kode yang saya tulis setahun yang lalu pada awal proyek, dan saya telah mendapatkan pengertian yang jauh lebih baik tentang bagaimana menyusun berbagai hal, tidak hanya agar lebih mudah diuji, tetapi lebih mudah untuk diterapkan dan digunakan .
Namun ... sudah setahun sejak saya memulai proyek. Memang, saya hanya bisa mengerjakannya di waktu luang saya, tetapi TDD masih memperlambat saya jauh dibandingkan dengan apa yang saya terbiasa. Saya membaca bahwa kecepatan pengembangan yang lebih lambat menjadi lebih baik dari waktu ke waktu, dan saya benar-benar memikirkan tes jauh lebih mudah daripada sebelumnya, tapi saya sudah melakukannya selama satu tahun sekarang dan saya masih bekerja dengan kecepatan siput.
Setiap kali saya memikirkan langkah selanjutnya yang perlu dikerjakan, saya harus berhenti setiap waktu dan berpikir tentang bagaimana saya akan menulis tes untuk itu, untuk memungkinkan saya menulis kode yang sebenarnya. Terkadang saya macet selama berjam-jam, tahu persis kode apa yang ingin saya tulis, tetapi tidak tahu cara memecahnya cukup halus untuk sepenuhnya menutupinya dengan tes. Di lain waktu, saya akan dengan cepat memikirkan selusin tes, dan menghabiskan satu jam menulis tes untuk menutupi sepotong kecil kode nyata yang seharusnya memerlukan waktu beberapa menit untuk menulis.
Atau, setelah menyelesaikan tes ke-50 untuk mencakup entitas tertentu dalam permainan dan semua aspek pembuatan dan penggunaannya, saya melihat daftar tugas yang harus saya lakukan dan melihat entitas berikutnya yang akan dikodekan, dan ngeri ngeri membayangkan menulis 50 tes serupa lainnya untuk mengimplementasikannya.
Sudah sampai pada titik itu, melihat kemajuan tahun lalu, saya sedang mempertimbangkan meninggalkan TDD demi "menyelesaikan proyek sialan". Namun, menyerahkan kualitas kode yang menyertainya bukanlah sesuatu yang saya harapkan. Saya takut jika saya berhenti menulis tes, maka saya akan keluar dari kebiasaan membuat kode jadi modular dan dapat diuji.
Apakah saya mungkin melakukan sesuatu yang salah untuk tetap lambat dalam hal ini? Adakah alternatif yang mempercepat produktivitas tanpa sepenuhnya kehilangan manfaat? TAD? Kurang cakupan tes? Bagaimana orang lain dapat bertahan hidup tanpa TDD tanpa membunuh semua produktivitas dan motivasi?