Sebuah software pada sudut
pandang jauh, pengembang bisa memvisualisasikan secara garis besar apa yang
dibutuhkan, namun ketika tim pengembang mulai bergerak, detail kompleksitas
terlihat satu demi satu. Semakin dekat maka semakin terasa kompleksitas
komposisi dan struktur yang dikembangkan. Secara pragmatis juga praktis, tata
cara dan tahapan tersebut dalam implementasinya menjadi suatu yang apabila
tidak dikendalikan, akan mengarah pengembangan bersifat sporadis dan tidak terstruktur.
Tim yang mengembangkan dengan
pendekatan software engineering bersifat konvensional juga memiliki tantangan
tersendiri, seperti (1) analisis paralis, tim terlalu detail dalam analisis
sehingga melupakan tujuan mereka untuk membuat sebuah system (2) Throw away
design, tim harus harus membuat desain baru karena menemukan bahwa system yang
telah dibuat tidak cocok dengan kebutuhan (3) unupdated design, kondisi bahwa
dokumen desain dan analisis tidak mencerminkan system yang dibuat. Berbagai
perubahan yang terjadi pada system tidak sma dengan dokumen yang telah dibuat.
Pada saat mendekati klien
disarankan untuk melakukan pendekatan secara kekeluargaan dan semi-formal.
Dalam artian tim bersedia mendengarkan berbagai permasalahan yang dihadapi
klien walaupun hal tersebut agak melenceng dari inti pembicaraan. Jadi intinya
bagaimana tim pengembang bisa seakrab mungkin dan juga mendapat kebutuhan yang
spesifik dari klien. Sehingga tim pengembang bisa menentukan proses , metode,
perangkat, komposisi tim, dan pilihan teknologi yang cocok.
Pengalaman adalah guru terbaik.
Semakin berpengalaman maka sebuah tim akan semakin berpengalaman dalam
melakukan estimasi biaya, waktu, dan sumber daya yang dibutuhkan. Software
adalah sesuatu yang bersifat terus menerus berubah, titik selesai suatu
pengembangan software dapat dikatakan tidak terbatas. Hal yang mungkin
dilakukan untuk memenuhi suatu software adalah menyepakati suatu milestone atau
suatu titik yang disepakati bersama.
Sebuah tim yang berpengalaman
akan (1) presisi dalam melakukan estimasi sumber daya, biaya, dan waktu yang
dibutuhkan (2) memiliki pandangan yang luas tentang pemilihan teknologi,
proses, dan perangkat yang dibutuhkan (3) mampu mengidentifikasi aspek resiko
secara lebih baik (4) Produktifitas tim lebih tinggi karena tim sudah memahami
apa yang harus dilakukan hingga software rilis.