Titik Awal Pengiriman Perangkat Lunak Bukanlah Kode
Setiap deployment yang pernah Anda lakukan dimulai dari suatu tempat. Tapi tempat itu bukanlah pull request, branch, atau baris kode. Semua dimulai lebih awal, seringkali dari percakapan yang tidak pernah terpikirkan untuk dicatat.
Bayangkan ini: seorang pengguna melaporkan bahwa tombol simpan tidak berfungsi. Atau rapat tim berakhir dengan seseorang berkata "kita harus menambahkan notifikasi." Atau log error menunjukkan bahwa database terus kehabisan koneksi. Momen-momen inilah titik awal sebenarnya dari pengiriman perangkat lunak. Sebelum kode apa pun ada, sebelum pipeline apa pun berjalan, seseorang harus memutuskan: ide mana yang akan dibangun, dan mana yang ditunda atau dibuang sama sekali.
Jebakan Informal
Di tim kecil, proses pengambilan keputusan ini terasa alami. Seseorang punya ide, bicara dengan rekan satu tim, dan mulai membuat kode. Rasanya cepat dan efisien. Tapi kecepatan ini datang dengan biaya tersembunyi.
Ide yang belum dipikirkan matang menjadi kode yang membuang waktu. Dua orang mungkin membangun fitur yang sama tanpa tahu satu sama lain sedang mengerjakannya. Ide bagus hilang karena tidak ada yang menuliskannya. Tim mengirimkan kode, tapi kode itu tidak menyelesaikan masalah sebenarnya.
Saya pernah melihat tim menghabiskan waktu berminggu-minggu membangun fitur yang tidak diminta siapa pun, hanya karena ide aslinya samar dan tidak ada yang menantangnya sebelum coding dimulai. Kodenya berfungsi. Tesnya lulus. Tapi fitur itu tidak terpakai karena tidak sesuai dengan apa yang sebenarnya dibutuhkan pengguna.
Dari Ide Menjadi Pekerjaan yang Terlacak
Seiring tim berkembang dan produk menjadi lebih serius, percakapan informal tidak lagi cukup. Anda membutuhkan sistem untuk menangkap, mendiskusikan, dan memprioritaskan ide sebelum menjadi kode.
Kebanyakan tim menggunakan beberapa bentuk pelacakan isu: Jira, Trello, GitHub Issues, Linear, atau bahkan dokumen bersama. Setiap ide menjadi tiket dengan deskripsi tentang apa yang perlu dilakukan, mengapa itu penting, dan kadang-kadang bagaimana pendekatannya. Tim kemudian berdiskusi: Apakah ini penting? Apakah ini mendesak? Bisakah kita melakukannya dengan apa yang kita miliki sekarang?
Diskusi ini penting karena tim Anda memiliki waktu dan energi yang terbatas. Tidak setiap ide bisa dibangun. Anda harus memilih. Keputusan mungkin didasarkan pada prioritas bisnis, urgensi teknis, atau siapa yang tersedia untuk mengerjakannya.
Beberapa tim menggunakan rapat perencanaan sprint untuk memutuskan tiket mana yang masuk ke siklus kerja berikutnya. Yang lain menggunakan voting asinkron di chat atau sesi backlog grooming rutin. Formatnya tidak terlalu penting dibandingkan kebiasaan membuat keputusan menjadi eksplisit sebelum seseorang menulis kode.
Pekerjaan Tersembunyi Sebelum Kode
Inilah yang mudah terlewatkan: pada tahap ini, belum ada kode sama sekali. Yang ada hanyalah catatan, diskusi, dan keputusan. Tapi di sinilah perjalanan pengiriman yang sesungguhnya dimulai. Tiket yang diprioritaskan menjadi input untuk langkah berikutnya: menulis kode.
Banyak engineer dan manajer berpikir pengiriman dimulai ketika seseorang membuka editor dan mulai mengetik. Itu tidak benar. Sebelum ketukan keyboard pertama, sudah ada rangkaian keputusan yang menentukan apakah kode harus ditulis sama sekali, apa yang harus dilakukan, dan bagaimana pendekatannya.
Tim yang melewatkan fase ini sering berakhir dengan kode yang tidak terpakai, fitur yang meleset dari sasaran, atau pengerjaan ulang yang menghabiskan waktu dan moral. Kode mungkin secara teknis sangat baik. Tapi jika memecahkan masalah yang salah, keunggulan teknis tidak berarti apa-apa.
Mengapa Ini Penting untuk Pipeline Anda
Anda mungkin berpikir: "Ini kedengarannya seperti manajemen proyek, bukan CI/CD." Tapi inilah hubungannya.
Pipeline pengiriman Anda seharusnya mengambil ide dan mengubahnya menjadi perangkat lunak yang berjalan dengan aman dan cepat. Jika ide itu sendiri tidak didefinisikan dengan baik, pipeline Anda menjadi mesin yang mengirimkan ide buruk lebih cepat. Pipeline cepat tidak membantu jika Anda mengirimkan hal yang salah.
Inilah mengapa tim yang matang berinvestasi pada fase sebelum kode. Mereka memastikan ide jelas, prioritas ditetapkan, dan hasil yang diharapkan didefinisikan. Kemudian mereka membiarkan pipeline melakukan tugasnya mengirimkan perubahan yang terdefinisi dengan baik secara efisien.
Daftar Periksa Pra-Kode yang Praktis
Sebelum seseorang menulis kode untuk fitur atau perbaikan berikutnya, jalankan pertanyaan-pertanyaan ini:
- Masalah apa yang dipecahkan? Bisakah Anda mendeskripsikannya dalam satu kalimat tanpa menggunakan jargon teknis?
- Siapa yang diuntungkan dari ini? Pengguna, tim internal, atau hanya kenyamanan tim engineering?
- Apa yang terjadi jika kita tidak membangun ini? Jika jawabannya "tidak ada yang buruk," pertimbangkan kembali prioritasnya.
- Apakah ada cara yang lebih sederhana untuk menguji ide? Bisakah Anda memvalidasi dengan proses manual, feature flag, atau prototipe sebelum berkomitmen pada pembangunan penuh?
- Siapa yang perlu tahu tentang perubahan ini? Tim support, dokumentasi, QA, operasi, atau tim lain yang mungkin terpengaruh.
Daftar periksa ini memakan waktu lima menit. Ini bisa menghemat berminggu-minggu usaha yang terbuang.
Kesimpulan
Kode bukanlah titik awal pengiriman. Ide adalah. Kualitas pengiriman Anda tidak hanya tergantung pada seberapa cepat Anda bisa mengirimkan kode, tetapi juga pada seberapa baik Anda memutuskan kode apa yang akan ditulis sejak awal.
Sebelum Anda mengoptimalkan pipeline, optimalkan proses ide-ke-keputusan Anda. Pipeline cepat yang mengirimkan hal yang salah hanyalah cara yang lebih cepat untuk membuang waktu. Dapatkan ide yang benar terlebih dahulu, lalu biarkan pipeline Anda melakukan apa yang terbaik: mengirimkan ide yang benar itu dengan aman dan berulang kali.