- Kisah pengalaman nyata seorang pengembang solo yang mengembangkan dan memelihara seluruh layanan dengan Rails sendiri, serta mencapai ARR €1 juta per tahun (pendapatan berulang)
- Pada awalnya dimulai hanya dengan MVP dasar, tetapi kemudian berkembang menjadi struktur yang dapat dipelihara melalui full rewrite dan perbaikan arsitektur
- Intinya adalah filosofi Rails yang konsisten, komponen-komponennya, serta kemampuan menangani mobile melalui Turbo Native
- Struktur yang efisien sehingga mampu menangani seluruh trafik dan penggunaan sambil beroperasi dengan biaya server di bawah €1.500 per bulan
- Pada akhirnya, menjual sebagian saham kepada investor yang berorientasi jangka panjang dan merekrut pengembang kedua setelah 14 tahun, memasuki fase baru
Penerapan Praktis The One-Person Framework
Mencapai ARR €1 juta hanya dengan Rails
- Pada awal 2022, PlanGo melampaui ARR €1 juta, sebuah pencapaian yang terasa seperti mimpi untuk layanan yang dijalankan dengan satu codebase Rails dan satu orang pengembang
- Semua area di luar teknis—penyusunan visi, akuisisi pelanggan, strategi pertumbuhan—ditangani oleh co-founder dan tim dukungan pelanggan, tetapi semua hal mulai dari desain arsitektur, deployment, operasi, hingga implementasi front-end/back-end dilakukan sendiri
- “One Person Framework” yang dikemukakan DHH, yakni struktur di mana satu pengembang dapat mengelola seluruh aplikasi, terbukti nyata, bukan sekadar teori
- Filosofi struktural Rails—mulai dari desain database, business logic, hingga UI front-end yang dapat dikerjakan dalam alat yang konsisten—sangat menguntungkan khususnya bagi tim kecil atau founder solo
- Artikel ini ditulis untuk orang-orang seperti berikut:
- Pengembang Rails: yang bertanya-tanya apakah saat ini masih mungkin membuat produk besar sendirian
- Founder teknis: yang memikul banyak peran dan merasa kewalahan
- Orang yang menghargai craftsmanship dan pemilihan teknologi
Kondisi saat memulai
- Penulis mulai mengenal Rails pada 2011, saat menjadi pengembang berusia 21 tahun dan sebelumnya mengerjakan proyek PHP(CodeIgniter)
- Tidak ada strategi besar, semuanya berawal dari motivasi sederhana untuk mencoba Rails karena sedang tren
- Dengan ide pemasaran dari co-founder, dijalankan strategi penawaran gratis 1 tahun bagi pendaftar pada minggu peluncuran
- Awalnya memperkirakan hanya puluhan orang, tetapi kenyataannya lebih dari 500 orang mendaftar pada minggu pertama
- Karena produknya masih setingkat MVP, segera datang ratusan permintaan fitur, pertanyaan, dan permintaan dukungan
- Server berjalan baik, tetapi permintaan pelanggan membludak saat produk belum benar-benar siap
- Kedua co-founder sama-sama masih punya pekerjaan utama sehingga tidak bisa menangani ini secara full-time
- Akibatnya, banyak pengguna awal tidak bisa dihindari harus dikecewakan
- Dari pengalaman ini, terasa jelas bahwa “mengembangkan software” dan “menjalankan bisnis software” adalah dua masalah yang sepenuhnya berbeda
- Tidak cukup hanya mengimplementasikan fitur; diperlukan respons pelanggan yang berkelanjutan, pengelolaan ekspektasi, dan sistem operasional layanan
Belajar sambil membangun
- Pengembangan dimulai dengan merujuk pada tutorial Rails dan Stack Overflow, tetapi membangun aplikasi yang bertanggung jawab atas bisnis pelanggan nyata di lingkungan produksi adalah tantangan di level yang sama sekali berbeda
- Kode Rails pada masa awal berisi kesalahan pemula yang khas seperti:
- metode controller lebih dari 200 baris
- model raksasa dengan tanggung jawab yang bercampur
- query SQL yang tidak efisien
- tidak ada test code
- nilai konfigurasi dan secret key yang di-commit ke Git
- Fitur memang bisa dibuat, tetapi seluruh aplikasi bergantung pada kode tambal sulam dan struktur yang rapuh
- Berbagai fitur seperti autentikasi pengguna, upload file, pembuatan PDF, admin UI, dan pemrosesan email diimplementasikan cepat dengan mengandalkan Gem, tetapi seiring waktu masing-masing Gem memunculkan kompleksitas dan masalah baru
- Saat menggunakan
.round(2), secara tak terduga diterapkan "banker's rounding" sehingga menimbulkan kesalahan perhitungan nominal
- Karena bahkan perhitungan sederhana diserahkan ke Gem eksternal, muncul masalah akibat kurangnya pemahaman mendasar soal pengolahan angka
- Sekitar 2013, seiring bertambahnya pengalaman menjalankan produk, technical debt juga meningkat cepat, dan pengembangan fitur baru makin sulit
Menulis ulang secara menyeluruh
- Full rewrite umumnya dianggap sebagai pilihan yang berisiko dan tidak efisien, tetapi pada 2014 diputuskan untuk membangun ulang sepenuhnya dari nol berbasis Rails 4
- Selama beberapa bulan, pemeliharaan aplikasi lama dijalankan bersamaan dengan pekerjaan intensif mengembangkan codebase baru
- Arsitektur disederhanakan, ketergantungan pada Gem dikurangi hingga kurang dari setengah, dan test diperkenalkan untuk fitur inti
- Struktur baru ini lebih ringkas dan lebih cepat daripada sebelumnya, dan terutama dirancang agar dapat dipelihara oleh satu pengembang part-time
- Rewrite ini kemudian menjadi fondasi teknis yang memungkinkan satu pengembang tunggal menjalankan layanan selama lebih dari 10 tahun berikutnya
Rails adalah superpower
- Hingga 2025, PlanGo dioperasikan oleh hanya satu pengembang, dan alasan utama yang memungkinkan hal itu adalah Rails
- Berkat karakteristik struktural Rails seperti Convention over Configuration, integration test, ActiveRecord, ActiveStorage, dan ActiveJob, keputusan yang tidak esensial bisa diminimalkan dan fokus dapat diarahkan ke penciptaan nilai inti**
- Setelah mengadopsi Turbolinks dan Hotwire, UI modern dapat dibangun tanpa framework JS yang kompleks
- Pada awal pengembangan tahun 2011, kebutuhan aplikasi mobile hampir tidak ada, tetapi kemudian aplikasi iOS/Android menjadi antarmuka utama PlanGo
- Berbagai framework seperti Titanium, RubyMotion, dan Objective-C sempat dicoba, sambil menghadapi masalah keseimbangan antara kualitas dan kecepatan
- Setelah mengadopsi Turbo Native, produktivitas meningkat drastis, dan dengan pengetahuan dasar pengembangan native saja, aplikasi berkualitas tinggi berbasis codebase Rails menjadi mungkin
- Pendekatan ini sangat ideal terutama untuk aplikasi B2B atau SaaS, karena kinerja dan pengalaman native bisa dicapai dengan biaya pengembangan skala kecil
- Hasilnya, aplikasi ini mencatat lebih dari 100.000 unduhan per tahun, dan bahkan sempat berada di atas Duolingo di App Store Belanda
- Semua aplikasi dikembangkan dan dipelihara oleh satu pengembang Rails
- Metrik utama:
- Kode Ruby: 36.170 baris
- Kode JavaScript: 13.495 baris
- Cakupan test: 40%
- Pengguna aktif harian: 6.332 orang
- Jumlah request per menit pada jam puncak: 7.000
- Biaya operasional server per bulan: kurang dari €1.500
- Mempertahankan arsitektur monolitik yang terstruktur adalah salah satu keputusan terbaik, karena deployment sederhana dengan Capistrano dan debugging juga mudah tanpa kompleksitas microservices
- Bagi founder teknis, Rails bukan sekadar framework, melainkan superpower yang memungkinkan satu orang melakukan pekerjaan setara satu tim penuh
Melampaui €1 juta
- Pada akhir 2022, datang titik balik yang tak terduga. Investor luar negeri menunjukkan ketertarikan pada PlanGo dan menyampaikan tawaran akuisisi
- Saat itu PlanGo telah melampaui ARR €1M secara bootstrap, dan tanpa pendanaan eksternal pun tetap mempertahankan struktur pendapatan yang berkelanjutan serta operasi yang efisien
- Tawaran ini menjadi pemicu munculnya pertanyaan di dalam tim: "Apa yang sebenarnya kita inginkan ke depan?"
- Berbagai kemungkinan dieksplorasi, seperti mempertahankan cara lama, scale-up dengan modal eksternal, atau menjual sepenuhnya
- Kecintaan pada bisnis ini tetap sangat dalam, tetapi juga muncul kesadaran bahwa dengan lebih banyak resource dan keahlian, peluang bisa dijalankan dengan lebih mudah
- Dari sisi realisasi keuntungan juga, opsi untuk mengambil sebagian nilai yang telah dibangun selama lebih dari 10 tahun sambil tetap menumbuhkan bisnis adalah pilihan yang masuk akal
- Pada akhirnya dipilih kemitraan dengan evergreen fund dari Belanda yang sejalan dalam nilai dan arah jangka panjang
- Menjual sebagian saham, namun tetap mempertahankan kendali manajemen dan mayoritas saham
- Mendapatkan resource tambahan sekaligus tanpa merusak struktur dan budaya yang ada
- Keputusan ini bukan bagian dari exit jangka pendek atau ekspansi agresif, melainkan strategi pertumbuhan stabil berbasis bisnis yang berkelanjutan dan berfokus pada pelanggan
- Setelah itu pun pendekatan berbasis Rails tetap dipertahankan, sambil memasuki fase baru untuk mengejar peluang yang sebelumnya sulit dicoba dengan lebih aktif
Hal-hal yang dipelajari
- Berikut pelajaran yang didapat dari menjalankan PlanGo selama 14 tahun sebagai founder teknis solo
- Embrace Rails conventions
- Penting untuk tidak melawan filosofi dan aturan Rails
- “Rails Way” adalah cara penyelesaian masalah yang sudah teruji, dan semakin mengikutinya, semakin bisa fokus pada nilai unik produk
- Less is more
- Gem atau library JS memang memungkinkan implementasi fitur dengan cepat, tetapi sekaligus meningkatkan kompleksitas dan kemungkinan kerusakan
- Sebelum menambahkan dependensi baru, perlu selalu bertanya pada diri sendiri, "Apakah ini benar-benar perlu?"
- Find a community
- Bagi pengembang solo, koneksi dengan pengembang Rails lain sangat penting
- Sebagai contoh, komunitas yang didapat saat membuat Spina CMS menjadi penghubung berharga untuk berbagi pengetahuan dan mendapatkan feedback, meski bukan rekan kerja
- Technical debt isn't always bad
- Terkadang pilihan pragmatis untuk masuk ke pasar dengan cepat lebih baik daripada kesempurnaan teknis
- Kuncinya adalah membedakan kapan technical debt diambil secara sadar dan kapan saatnya dilunasi
- You can go far alone
- Dengan Rails, satu pengembang pun bisa merancang, menskalakan, dan melakukan deployment produk setara skala tim penuh
- Tidak perlu terikat pada anggapan umum bahwa “harus punya tim”
Ke depan
- Mitra investasi baru setuju dengan cara operasi PlanGo yang ramping, tetapi mengajukan satu syarat saja: menambah satu pengembang Rails lagi
- Masalahnya bukan karena bersikeras tetap solo, melainkan tingkat kesulitan proses onboarding pengembang baru ke codebase yang berkembang selama 14 tahun
- Codebase tersebut bukan hanya evolusi PlanGo, tetapi juga struktur yang memuat penuh sejarah perkembangan pribadi penulis dari pemula hingga mahir, dan
bercampur dengan berbagai keputusan serta gaya kode dari versi diri sendiri di masa yang berbeda
- Dengan merekrut pengembang Rails kedua yang ditemui di Rails World (Kanada), muncul perubahan struktural dan dampak positif
- Risiko teknis sebagai single point of failure pun teratasi
- Masuknya sudut pandang dan ide baru
- Peningkatan kualitas kode melalui pair programming
- Stimulasi intelektual dari kolaborasi dengan sesama pengembang yang berbicara dalam bahasa yang sama
- Ke depan pun tidak ada rencana membentuk tim pengembangan besar
- Seperti yang sudah terbukti sampai sekarang, dengan pendekatan berbasis Rails saja, tim kecil namun kuat bisa membuat software yang bermakna
- Namun, juga terasa bahwa bahkan pengembang solo yang paling efisien pun bisa berkembang lebih jauh dengan rekan tim yang baik
- Perjalanan PlanGo adalah contoh bahwa One-Person Framework dari Rails benar-benar bekerja, dan
bukti bahwa tim kecil dengan alat yang tepat dapat membangun bisnis yang serius menurut standar mereka sendiri
- Baik bagi pengembang solo yang sedang membuat produk pertama, maupun tim kecil yang sedang mempertimbangkan tech stack, semoga kisah ini menunjukkan kemungkinan yang terbuka ketika Rails dimanfaatkan semaksimal mungkin
4 komentar
Saya membuat podcast dari konten ini dengan audio overview NotebookLM.
https://notebooklm.google.com/notebook/…
Kalau segini sih sudah sangat bagus. Saya akan coba poles lagi.
Wah.. luar biasa sekali.. serius. Bisa senatural ini
Dan informasinya benar-benar mudah dicerna...
Opini Hacker News
Ada pengguna dengan pengalaman serupa Django yang sedang mengoperasikan aplikasinya sendiri
Ada pengguna yang berpendapat bahwa manusia lebih penting daripada framework
Ada pengguna yang membagikan pengalamannya menggunakan Rails dan Phoenix
Ada pengguna yang mengatakan pernah memberikan presentasi tentang bagaimana Rails 7+ membantu solo developer membangun aplikasi yang ambisius
Ada pengguna yang membagikan pengalaman saat partner baru ingin menambahkan developer Rails
Ada pengguna yang sedang membangun aplikasi menggunakan AdonisJS
Ada pengguna yang merasa Rails punya banyak keunggulan dibanding Django
Ada solo developer yang sedang membangun aplikasi dengan Rails
Ada pengguna yang berpendapat bahwa penulisan ulang total sebaiknya dihindari
Ada pengguna yang merasa framework tidak terlalu penting