Ada beberapa, tetapi keuntungannya jauh melebihi kerugiannya.
Ada kurva belajar yang curam.
Banyak pengembang tampaknya berharap bahwa mereka dapat efisien dengan pemrograman uji pertama sejak hari pertama. Sayangnya butuh banyak waktu untuk mendapatkan pengalaman dan program dengan kecepatan yang sama seperti sebelumnya. Anda tidak bisa menyiasatinya.
Untuk lebih spesifik, sangat mudah salah. Anda dapat dengan mudah (dengan niat yang sangat baik) akhirnya menulis sejumlah tes yang sulit untuk mempertahankan atau menguji hal-hal yang salah. Sulit untuk memberikan contoh di sini - masalah seperti ini hanya membutuhkan pengalaman untuk dipecahkan. Anda harus memiliki perasaan yang baik untuk memisahkan masalah dan merancang untuk diuji. Saran terbaik saya di sini adalah melakukan pemrograman pasangan dengan seseorang yang mengenal TDD dengan sangat baik.
Anda melakukan lebih banyak coding di muka.
Tes-pertama berarti Anda tidak dapat melewati tes (yang bagus) dan berarti Anda akan berakhir dengan menulis lebih banyak kode di muka. Ini berarti lebih banyak waktu. Sekali lagi, Anda tidak bisa menyiasatinya. Anda mendapatkan imbalan dengan kode yang lebih mudah dipelihara, diperluas, dan umumnya lebih sedikit bug, tetapi butuh waktu.
Bisa menjadi penjualan yang sulit bagi para manajer.
Manajer perangkat lunak pada umumnya hanya mementingkan waktu. Jika Anda beralih ke pemrograman pengujian pertama dan Anda tiba-tiba membutuhkan waktu 2 minggu untuk menyelesaikan fitur, bukan satu, mereka tidak akan menyukainya. Ini jelas merupakan pertempuran yang layak diperjuangkan dan banyak manajer yang cukup tercerahkan untuk mendapatkannya, tetapi ini bisa menjadi penjualan yang sulit.
Bisa menjadi penjualan yang sulit untuk sesama pengembang.
Karena ada kurva belajar yang curam, tidak semua pengembang menyukai pemrograman uji-pertama. Bahkan, saya kira sebagian besar pengembang tidak menyukainya pada awalnya. Anda dapat melakukan hal-hal seperti pemrograman pasangan untuk membantu mereka mencapai kecepatan, tetapi itu bisa menjadi penjualan yang sulit.
Pada akhirnya, keuntungannya melebihi kerugiannya, tetapi itu tidak membantu jika Anda mengabaikan kerugiannya. Mengetahui apa yang Anda hadapi sejak awal membantu Anda menegosiasikan beberapa kelemahan, jika tidak semua.