1. Startup

Pengembangan Produk Startup Cocok Menggunakan Metodologi Agile dan SCRUM

Kami berbincang dengan pengembang senior Microsoft Indonesia Norman Sasono tentang metodologi rekayasa perangkat lunak yang harus diikuti startup saat mengembangkan produk

Salah satu kunci utama kesuksesan sebuah startup teknologi adalah kualitas produk atau solusi yang dikembangkan. Dari survei kecil yang saya lakukan kepada beberapa startup, mereka cenderung kurang disiplin mengikuti kaedah rekayasa perangkat lunak yang ada. Meskipun kebanyakan mengatakan menggunakan Agile Method, mereka juga mengatakan bahwa masih setengah-setengah dalam mengimplementasikannya.

Saya menyadari keterbatasan tim teknis dan masih mudanya fase pembelajaran sebuah startup menjadi alasan kondisi ini. Dalam sebuah kesempatan wawancara bersama salah satu developer senior yang kini juga memimpin divisi pengembangan di Microsoft Indonesia Norman Sasono, saya coba mengulik proses pengembangan produk (semestinya) di level startup.

Memulai perbincangan Norman menceritakan tentang perjalannya dalam dunia teknologi di Indonesia. Norman memiliki latar belakang sebagai pengembang solusi perangkat lunak di lingkungan korporasi, seperti membuat sistem perbankan, sistem keuangan, pemerintahan dan berbagai aplikasi di lini bisnis lainnya.

Beberapa tahun terakhir bersama Microsoft, Norman juga banyak terlibat dalam beberapa proyek pengembangan produk startup teknologi. Dari pengalamannya terlibat di dua segmen pengambangan yang berbeda, ia melihat ada beberapa hal yang harus dipelajari pengembang di korporasi dari startup dan ada juga keunggulan pengembang di korporasi yang harus dipelajari startup.

Dalam banyak hal bahkan ia menyaksikan bahwa pengembang di produk korporasi perlu banyak belajar dari startup, begitu pun sebaliknya. Berikut ini adalah wawancara DailySocial dengan Norman:

Tanya (T): Bagi startup teknologi di Indonesia, pendekatan seperti apa yang harusnya mereka ikuti dalam pengembangan produk?

Startup adalah sebuah tim kecil yang sedang mencari cara untuk dapat scalable dan mematangkan model bisnis. Kata kuncinya ialah "sedang mencari cara". Jadi di dunia startup berbagai hal masih belum pasti, termasuk di dalamnya segmentasi pelanggan dan proporsi nilai yang ada. Ini menyiratkan bahwa produk dan solusi yang ditawarkan juga masih samar.

Seorang founder startup pasti memiliki visi pada produk, fitur dan pencapaian. Namun setelah proses validasi produk dan validasi pelanggan, sangat mungkin apa yang telah tertulis dalam visinya akan berubah, menyesuaikan apa yang sejatinya dibutuhkan oleh pasar. Tak jarang startup harus melakukan pivot di sini.

Jadi menurut saya, startup harus sesegera mungkin menyampaikan produk mereka ke pasar, agar mendapatkan umpan balik, dan memperbaikinya. Proses ini harus sering dilakukan dalam proses pengembangan produk. Dalam "hukum startup", jika harus gagal lebih baik secepatnya gagal, agar investasi yang dikeluarkan tidak makin membengkak. Yang terpenting agar cepat menemukan produk yang sesuai dengan kebutuhan target pelanggannya.

Dari fakta tersebut, ada prinsip-prinsip yang harus dipatuhi dalam mengembangkan produk, yakni "sampaikan sedini mungkin dan sesering mungkin", jangan hanya fokus ke desain dan arsitektur antar muka, fokus pada setiap bit pekerjaan, lakukan pemrograman dengan bersih, dan lakukan perbaikan dari masukan-masukan yang ada. Ya, proses itu secara sederhana sudah meringkas bagaimana praktik Agile Software Development.

T: Apakah penting bagi sebuah startup untuk disiplin terhadap kaidah metode pengambangan perangkat lunak untuk produk-produknya?

Pengembang di startup ataupun korporasi semua harus mengikuti praktik rekayasa perangkat lunak dengan baik. Standar kualitas terbaik adalah kuncinya. Merangkul perubahan juga menjadi kunci. Pengembang harus disiplin menjalankan apa yang disebut dengan Application Lifecycle Management (ALM), yang meliputi penentuan visi produk, user stories, set fitur, arsitektur sistem desain, pemrograman, pengujian, integrasi berkelanjutan dan sebagainya.

Pertama, repositori source control. Jangankan startup, pengembang di level korporasi juga masih banyak yang tidak memanfaatkan proses pengembangan yang melibatkan repositori source control. Saat ini kita ketahui bahwa banyak opsi yang bisa kita pilih, dari GitHub, Visual Studio Online dan sebagainya. Bagaimana bisa mengelola versi pengembangan dan menjaga source code dari versi-versi yang ada, jika tidak memiliki repositori? Pasang repositori, bahkan jika hanya ada satu pengembang dalam sebuah tim.

Selain dapat memberikan keamanan akan source code yang dimiliki di setiap versi, adanya repositori ini memungkinkan pengembang untuk dapat berkolaborasi, termasuk melakukan outsource beberapa pekerjaan pengembangan. Repositori ini akan membantu dalam banyak hal.

Berikutnya, pastikan ada pemisah yang jelas antara lingkungan pengembangan, lingkungan pengujian dan lingkungan produksi. Pengembang melakukan pekerjaannya di lingkungan pengembangan sehingga mereka dapat melakukan percobaan dari setiap keluaran yang dihasilkan. Pengujian seharusnya tidak hanya dilakukan di fase akhir produk saja. Lakukan pengujian sesering mungkin, bahkan sejak bit pertama dikompilasi.

Mulailah dengan dua hal sederhana di atas, maka praktik-praktik pengembangan yang baik lainnya akan mengikuti dalam jalan selanjutnya.

T: Dari beberapa metode pengembangan perangkat lunak, apa yang disarankan untuk startup di Indonesia?

Metodologi tersebut pastinya harus mampu melayani tim, bukan sebaliknya. Terkadang saya juga melihat tim pengembangan yang tidak nyaman melakukan aktivitas dan menciptakan keluaran dari beberapa metodologi. Fokusnya harus menghasilkan bit. Tim dengan pola berbeda, sifat produk yang berbeda akan membutuhkan metodologi yang berbeda pula, harus disesuaikan. Beberapa proses pengembangan mungkin memerlukan metodologi formal yang cukup ketat. Beberapa di antaranya mungkin mengaplikasikan varian dari metode Agile.

Untuk startup pastinya jangan pernah menggunakan metode Waterfall, karena tidak sesuai dengan startup yang sedang dalam proses penemuan model bisnis yang tepat. Tidak sesuai dengan model pengembangan produk yang masih sering harus memperbaiki masukan dari pengguna. Sedangkan SCRUM adalah salah satu yang sesuai. SCRUM membagi bakclogs produk dalam beberapa capaian yang pendek.

Beberapa capaian pertama tim harus menghasilkan MVP (Minimum Viable Product), kemudian berlari lagi menghasilkan rilis lainnya. Startup harus coba melihat efektifitas SCRUM dan memiliki berbagai komponen yang dibutuhkan untuk menjalankan metode ini. Startup dan SCRUM akan berjalan beriringan.

T: Untuk startup yang masih tahap awal, atau dalam tahap merealisasikan ide, bagaimana sebaiknya?

Semua kegiatan dalam pengembangan produk sama pentingnya. Seperti yang saya katakan sebelumnya, umpan balik pelanggan adalah hal yang paling berharga. Jangan sampai kita terlambat gagalnya. Jika kita harus gagal, mari kita gagal cepat. Jadi, sampaikan sedini mungkin dan sesering mungkin. Dapatkan early adopter dan pelanggan nyata untuk menguji produk dan siasati perubahan.

Jangan memandang perubahan sebagai beban. Hal ini diperlukan untuk memastikan pelanggan cinta dan akan menggunakan produk tersebut. Tetap perhatikan bahwa proses coding tidak boleh dilakukan secara "ngawur". Terkadang hacker bisa menyasar ke aplikasi yang dikembangkan. Pastikan kode bersih. Patuhi standar arsitektur perangkat lunak dengan baik.

T: Terkait dengan back-end sistem, bagaimana startup bisa menyiasatinya, agar tetap bisa survive di awal dengan investasi minimal, namun tetap bisa scale dan bertahan ketika dihantam penetrasi pengguna yang tinggi?

Arsitektur tidak harus dikhawatirkan. Tapi jangan melakukan desain antar muka yang kompleks di awal. Sejak awal, tim pengembang di startup harus mempertimbangkan atribut-atribut penting, dan menetapkan beberapa tujuan, kemudian mengujinya. Lakukan pengukuran terhadap hal-hal seperti keandalan, kinerja, skalabilitas, ketersediaan, pengelolaan, dan perawatan sistem.

Prediksikan berapa banyak pengguna sistem, bagaimana distribusi sistem berdasarkan tatanan geografis, kanal persebaran seperti apa yang digunakan, bagaimana melindungi jaringan, host, app dan sebagainya. Hal tersebut sangat penting untuk diperhatikan.

 

Untungnya saat ini kita sudah disuguhkan dengan yang namanya cloud computing. Hal-hal kompleks di atas, seperti menangani skalabilitas dan persebaran belum tentu bisa ditangani oleh tim pengembang startup yang biasanya terbatas, layanan cloud computing siap memanjakan pengembang secara fleksibel. Startup dapat fokus pada produk mereka.

T: Terkait pemilihan solusi cloud computing untuk produk startup, adakah kiat-kiat khusus?

Rekomendasi saya adalah temukan penyedia layanan PaaS (Platform as a Service). Biarkan pengelolaan infrastruktur dan sistem operasi dikelola oleh provider. Startup harus fokus pada aplikasi, API, dan database. Tak perlu memikirkan pembaruan sistem operasi, menyiapkan secara manual perluasan hardware untuk skalabilitas, menyiapkan backup, dan sebagainya. Serahkan pada cloud provider.

Jika memang ada kebutuhan untuk mengelola sistem operasi, server web atau server database secara lebih luas, IaaS (Infrastructure as a Service) adalah pilihan yang tepat. Meskipun demikian tidak ada keharusan [untuk beralih ke IaaS], karena PaaS yang ada saat ini juga sudah menyediakan layanan pendukung yang cukup baik, seperti Web Apps Services, Mobile Apps API Services, Media Streaming Services, Machine Learning, Big Data Analytics, Cloud based Load Test/Stress Test Service, dan sebagainya.