Yes, Anda tidak salah membaca judul atau mendengar. Saya yakin ketika Anda membuat project secara pribadi ataupun untuk orang lain, client, dan team internal pasti mengalami keterlambatan.
Selama menjadi software engineer, saya masih mencari tau alasan mengapa pembuatan software menjadi terlambat.
Oh mungkin karena teamnya kurang kompeten,
Oh munkin timelinenya kurang panjang,
Oh mungkin permintaan yang berubah-rubah di tengah jalan,
Oh mungkin standarisasinya yang kurang baik di terapkan,
Oh mungkin dari awal permintaannya kurang jelas,
dan masih banyak lagi...
Sebab musabab diatas hanyalah sedikit dari banyak sebab yang sering saya dengar atau bahkan yang saya ikut terjun didalamnnya. Tapi apakah pembuatan software ngak bisa ontime? jawabannya Bisa, ujar seorang software engineer yang di anggap senior, dan di kenyataannya tidak sesimple kalimat Bisa.
Kalimat Bisa sering saya dapatkan ketika client yang minta dan software engineer yang jawab atau jika tim sales yang bilang dan team PM yang mengamini.
Oke, tapikan base codenya sudah ada?
Ya, monggo fakta di lapangan meski ada base code tetap saja anda harus melakukan penyesuaian sesuai permintaan user, faktannya tetap saja implmentasinya tidak mudah perlu training end user, faktanya tetap saja harus menjawab issue bug fix dari base code yang sudah ada. Dan masih banyak fakta lainnya.
Sampai akhirnya saya menemukan Hofstadter’s Law,
It always takes longer than you expect, even when you take into account Hofstadter’s Law.
Pembuatan aplikasi atau software adalah pekerjaan yang kompleks dan penuh ketidak pastian, dan manusia sulit memperkirakan (estimasi) waktu yang dibutuhkan untuk mengerjakan hal yang tidak pasti bahkan ketika sudah di tambahkan ekstra waktu sekalipun.
Jadi kalo begitu pendekan saja waktunya? Jika semuanya sudah pasti telat. Jawabanya tidak semudah itu. Memendekan waktu hanya berakibat burnoutnya team Anda. Dan Anda sendiri tidak mau kehilangan tim Anda di banding software yang akan Anda bangun.
Jika tidak bisa bagaimana jika nambah tim? Menambah tim hanya memperkeruh suasana menambah tim akan menambah kompleksitas managerial. Anda tidak ingin membuang waktu berharga anda hanya untuk membagi tugas ke banyak team. Anda juga tidak ingin mendengar alasan "Saya butuh mereview kembali code basenya, saya butuh mereview kembali dokumentasi dan seterusnya."
Jika memang tidak bisa juga kita MVP aja deh, MVP yang Anda maksud adalah mengerjakan seluruh fitur kecuali fitur yang masih negosiasikan? problemnya tidak semua fitur bisa di negosiasikan. Problemnya tech stack yang Anda minta microservices. Problemnya Anda tidak mau end user memiliki pengalaman jelek karena pake webview, dan lain-lain
Hukum Hofstadter mengajarkan kerendahan hati dalam perencanaan (untuk anda PM, PO, Tech Lead, Client atau Project personal Anda, dan lain-lain). Kita tidak bisa memprediksi masa depan dengan sempurna. Fokuslah pada memecah masalah, menggunakan data, membangun buffer, bekerja secara iteratif, berkomunikasi secara terbuka, dan terus belajar dari pengalaman untuk mengelola ketidakpastian tersebut sebaik mungkin.
Saya mempunyai ide, dengan pengelolaan tim yang baik dan standarisasi pembuatan software yang di patuhi akan meminimalisir keterlambatan. Bayangkan jika software yang Anda bangun adalah sebuah rumah yang memiliki konstrusi bangunan yang unik. Saking uniknya Anda sendiri mempersiapkan dengan matang segala proses dan standarisasi bangunannya, sehingga hilir mudik seseorang dapat dengan mudah dilakukan dan setiap orang terpantau progressnya secara realtime.
Terus bedanya dengan nambah tim apa? perbedaannya Anda tidak punya beban dengan tim yang mengerjakan. Anda sudah tau takaran dari masing-masing pekerjaan, pemantauan secara realtime membuat anda dapat mengambil keputusan.
Terus ditambah dengan AI, Anda bisa memanfaatkannya untuk tim Anda untuk memecahkan masalah kompleks tersebut. Jangan pelit-pelit sama tim :), Anda sudah tau software yang dibangun kompleks tapi minta harga murah :P

Komentar
Posting Komentar