Apa itu Rewrite Code?
Rewrite code atau menulis ulang barisan kode kita adalah salah satu dilema, tantangan, dan hal yang hampir pasti terjadi kepada perusahaan rintisan (startup) teknologi. Terutama jika perusahaan tersebut benar-benar sudah mencapai fase product-market-fit dan atau fase scale up.
Dimana user atau customer based kita semakin banyak dan membesar. Baik itu secara jumlah, lama penggunaan, dan juga hits ke produk kita. Maka dari itu kita membutuhkan scaling product, yang mau tak mau kita harus mengupgrade dari sisi teknis. Paling mudah menambah atau optimasi dari sisi hardware (mulai dari menambah server, prosesor, memory, size database, dan lain sebagainya).
Namun acapkali hal tersebut belum bisa mewadahi kebutuhan kita, dan akhirnya kita dengan terpaksa menghadapi pilihan untuk berganti database, berganti bahasa pemorgraman, atau secara garis besar kita harus mengganti arsitektur sistem kita secara kesuluruhan. Dengan teknologi yang lebih update atau lebih baru.
Namun proses rewrite ini adalah suatu yang sangat beresiko, dan mengandung opportunity cost. Kenapa? banyak sekali yang sudah membahasnya di internet, antara kubu yang kontra vs kubu yang pro dengan rewrite.
Salah satu artikel paling viral oleh Joel Spoelsky (founder Trello) adalah postingannya mengenai pengalaman dia rewrite Netscape . Intinya Joel berada di kubu yang kontra, dengan alasan yang sudah di utarakan begitu detail pada artikel tersebut.
Salah satu kubu yang pro adalah tim engineering dari Gojek, mereka berhasil melakukan rewrite dengan sukses dan smooth. Artikel mereka bisa kalian akses disini.
Kenapa saya menulis ini?
I’ve ever got this dilemma 😂
When I was Meeber‘s CEO, I face this problem. CTO kita pada saat itu ingin sekali melakukan rewrite (yeah, jika kalian membaca artikel dari Joel, anda akan tahu kenapa 😁). Sedangkan board of director kami menginginkan sebaliknya, karena murni kepentingan bisnis (takes long time, takes more budget, dan lainnya).
Akhirnya saya ada di persimpangan jalan,
Dan sempat selama 6 (enam) bulan hanya memikirkan dan memutuskan keputusan tersebut.
Dan ternyata saya… in my subjectivity, too late. Untuk mengambil keputusan tersebut (rewriting).
Customer based selalu naik, sedangkan arsitektur lama semakin gemuk dan melambat, dan proses rewriting yang tidak mudah dan tidak bisa cepat. (ps. saya resign ketika tim engineering masih dalam tahap rewriting)
So, sebagai seseorang yang pernah dihadapkan keputusan yang sangat besar itu, izinkan saya memberikan sedikit tips dan saran. Apakah Saya Harus Rewrite?
Sekali lagi, itu adalah pendapat subjektif dari saya. Bukan sebuah best practice, ini murni dari pengalaman ya. Bisa jadi cocok diterapkan di tempat anda, atau kurang cocok.
Pada intinya adalah, kalian harus berfikir dua kali untuk rewrite.
GOOD LUCK !
Baarakallahufiikum.