Dapatkah praktik TDD dan Agile berjanji untuk menghasilkan solusi yang optimal? (Atau bahkan solusi "baik"?)
Tidak persis. Tapi, itu bukan tujuan mereka.
Metode-metode ini hanya menyediakan "jalan aman" dari satu negara ke negara lain, mengakui bahwa perubahan memakan waktu, sulit, dan berisiko. Dan inti dari kedua praktik tersebut adalah untuk memastikan bahwa aplikasi dan kode tersebut layak dan terbukti memenuhi persyaratan dengan lebih cepat dan lebih teratur.
... [TDD] menentang pengembangan perangkat lunak yang memungkinkan perangkat lunak ditambahkan yang tidak terbukti memenuhi persyaratan ... Kent Beck, yang dianggap telah mengembangkan atau 'menemukan kembali' teknik tersebut, menyatakan pada tahun 2003 bahwa TDD mendorong sederhana mendesain dan menginspirasi kepercayaan. ( Wikipedia )
TDD berfokus pada memastikan setiap "potongan" kode memenuhi persyaratan. Secara khusus, ini membantu memastikan bahwa kode memenuhi persyaratan yang sudah ada sebelumnya, yang bertentangan dengan membiarkan persyaratan didorong oleh pengkodean yang buruk. Tapi, itu tidak membuat janji bahwa implementasinya "optimal" dengan cara apa pun.
Adapun proses Agile:
Perangkat lunak yang berfungsi adalah ukuran utama dari kemajuan ... Pada akhir setiap iterasi, pemangku kepentingan dan perwakilan pelanggan meninjau kemajuan dan mengevaluasi kembali prioritas dengan maksud untuk mengoptimalkan laba atas investasi ( Wikipedia )
Agility tidak mencari solusi optimal ; hanya solusi yang berfungsi - dengan tujuan mengoptimalkan ROI . Ini menjanjikan solusi yang bekerja lebih cepat daripada nanti ; bukan yang "optimal".
Tapi, tidak apa-apa, karena pertanyaannya salah.
Optimal dalam pengembangan perangkat lunak adalah fuzzy, target yang bergerak. Persyaratan biasanya dalam fluks dan penuh dengan rahasia yang hanya muncul, sangat memalukan Anda, di ruang konferensi yang penuh dengan bos bos Anda. Dan "kebaikan intrinsik" dari arsitektur dan pengkodean solusi dinilai oleh pendapat yang dibagi dan subyektif dari rekan-rekan Anda dan pendapat manajerial Anda - tidak seorang pun di antara mereka yang mungkin benar-benar mengetahui apa pun tentang perangkat lunak yang baik.
Dalam Paling tidak, TDD dan Agile praktek mengakui kesulitan dan mencoba untuk mengoptimalkan untuk dua hal yang yang obyektif dan terukur: . Bekerja v Tidak-Bekerja dan Sooner v Nanti..
Dan, bahkan jika kita memiliki "bekerja" dan "lebih cepat" sebagai metrik objektif, kemampuan Anda untuk mengoptimalkannya terutama bergantung pada keterampilan dan pengalaman tim.
Hal-hal yang dapat Anda tafsirkan sebagai upaya menghasilkan solusi optimal meliputi hal-hal seperti:
dll ..
Apakah masing-masing dari hal - hal itu benar-benar menghasilkan solusi optimal akan menjadi pertanyaan besar lain untuk ditanyakan!