38 poin oleh GN⁺ 2025-05-26 | 8 komentar | Bagikan ke WhatsApp
  • "Jangan menciptakan ulang roda" adalah nasihat yang dapat berdampak negatif dengan menekan kreativitas dan rasa ingin tahu
  • Dalam proses menciptakan roda baru, yaitu menciptakan ulang alat atau teknologi yang sudah ada, kita memperoleh pemahaman dan pembelajaran yang mendalam
  • Bahkan komponen dasar yang tampak sederhana atau familier sebenarnya mengandung kompleksitas dan beragam trade-off
  • Dengan mencoba menciptakan roda versi sendiri, kemampuan dalam bertumbuh, memecahkan masalah, dan bereksperimen menjadi lebih kuat
  • Ditekankan perlunya memilih secara seimbang antara memanfaatkan hasil yang sudah ada dan menciptakan ulang sesuai tujuan

Reinvent the Wheel

  • Ungkapan "jangan menciptakan ulang roda" memiliki niat baik, tetapi biasanya datang dari dua kelompok
    • orang yang pernah membuat roda sendiri dan merasakan sulitnya proses itu
    • orang yang belum pernah mencoba, tetapi membabi buta mengikuti nasihat yang sudah ada
  • Ketika nasihat semacam ini terus diulang, tercipta suasana yang mengecilkan rasa ingin tahu dan semangat eksplorasi
  • Ditekankan bahwa jika semua orang mengikuti nasihat ini, banyak kenyamanan dan kemajuan modern tidak akan pernah tercapai
  • Pada kenyataannya, roda sendiri telah diciptakan ulang berkali-kali sejak penemuan awalnya dan terus berkembang

Catatan: di sini, 'roda' bisa dipahami sebagai alat, protokol, layanan, teknologi, atau ciptaan lain apa pun

Menciptakan roda sendiri adalah pembelajaran itu sendiri

"Apa yang tidak bisa saya buat, tidak bisa saya katakan saya pahami"
— Richard Feynman

  • Untuk benar-benar memahami sesuatu secara mendalam, dibutuhkan pengalaman mengimplementasikan sendiri, meskipun hanya dalam versi kecil
  • Walaupun hasilnya tidak sempurna, bahkan tidak digunakan sekalipun, proses implementasinya sendiri tetap penting
  • Berbagai konsep ilmu komputer—protokol, kriptografi, web server, dan lain-lain—mungkin terasa sulit, tetapi sebenarnya siapa pun bisa mencoba membuatnya
  • Lebih banyak orang akan mendapat kesempatan memahami struktur dan hakikat teknologi yang ada melalui pengalaman membuatnya sendiri

Segalanya adalah proses eksplorasi tanpa akhir (Rabbit Hole)

  • Komponen dasar yang kita anggap biasa saja—misalnya string, file path, dan sebagainya—sebenarnya sangat kompleks
  • Mencoba mengimplementasikan sendiri library string atau path dapat menjadi pemicu banyak pembelajaran
  • Melalui proses ini, kita menyadari hal-hal berikut
    • bahkan dalam hal sehari-hari pun ada kompleksitas yang nyaris tak terbatas
    • membuat sesuatu yang berguna bagi orang lain adalah kesempatan untuk belajar rendah hati
    • semua abstraksi diciptakan manusia, tidak sempurna, dan selalu memungkinkan trade-off versi kita sendiri yang berbeda
  • Saat mengimplementasikan, kita akan berhadapan dengan banyak pilihan dan masalah seperti akurasi, kesederhanaan, performa, skalabilitas, portabilitas dan lainnya
  • Solusi yang kita buat mungkin unggul di beberapa area, tetapi tidak cocok untuk semua pengguna atau situasi
  • Solusi yang sudah ada juga memiliki keterbatasan, dan mungkin tidak sesuai dengan masalah yang kita hadapi
  • Pengalaman mendalami satu masalah sampai tuntas adalah bagian dari proses bertumbuh sebagai engineer
  • Jika hanya sering berpindah-pindah proyek, kita tidak akan memperoleh pembelajaran yang berarti

Mengapa perlu menciptakan ulang roda

  • Ingin membuat roda yang lebih baik daripada yang sudah ada (dan definisi 'lebih baik' bisa bermacam-macam)
  • Bertujuan mempelajari bagaimana roda dibuat
  • Memiliki tujuan edukatif untuk mengajarkan prinsip roda kepada orang lain
  • Mendapat wawasan baru dengan menelusuri proses penemuan roda
  • Mengembangkan kemampuan untuk memperbaiki atau meningkatkan saat roda rusak
  • Mempelajari berbagai alat dan teknologi yang dibutuhkan untuk membuat roda
  • Memahami peran roda sebagai bagian dari sistem yang lebih kompleks (misalnya mobil, dan sebagainya)
  • Mencoba membuat roda yang sangat khusus untuk kebutuhan tertentu (misalnya kursi roda, skateboard, roda putar untuk keramik, dan sebagainya)
  • Roda yang kita buat mungkin justru lebih berguna untuk tujuan yang sama sekali berbeda dari niat awalnya
  • Di dunia ini, gagasan baru yang tidak terpaku pada pola lama bisa memainkan peran penting

Reuse vs Reinvent

  • Kita tidak boleh mengabaikan hasil kerja orang lain; kita perlu mempelajari dan memanfaatkannya dengan tepat
  • Kita juga harus berhati-hati agar tidak membuang sesuatu yang sudah ada dan membuat ulang hanya karena ketidakpercayaan atau ketidaktahuan
  • Namun, tanpa mengimplementasikan atau bereksperimen sendiri, akan sulit memperoleh pemahaman inti dan perkembangan di bidang tersebut
  • Dalam software engineering, eksperimen kecil dan pembuatan prototipe itu mudah dan cepat, sehingga efektif untuk menyelesaikan masalah pribadi
  • Direkomendasikan untuk memulai dari kecil, mengimplementasikan secara sederhana, lalu mengulanginya
  • Jadi, saran terakhir saya adalah
    • jika menginginkan insight, cobalah menciptakan ulang sendiri
    • jika menginginkan impact, gunakan kembali solusi yang sudah terbukti

"Reinvent for insight. Reuse for impact."
"Ciptakan ulang demi insight. Gunakan kembali demi impact."

8 komentar

 
nullvana 2025-05-28

Waktu mencoba membuat roda persegi jadi bulat, saya jadi teringat ucapan bos yang bilang jangan menciptakan ulang roda. Rupanya hantu “jangan menciptakan ulang roda” itu masih banyak berkeliaran di sekitar kita.

 
dhlee0305 2025-05-27

Sama seperti ungkapan "menutup kandang setelah sapi hilang" bukan berarti kita tidak perlu bersiap untuk masa depan,
menurut saya, "jangan menciptakan ulang roda" juga bukan berarti kita tidak perlu meluangkan waktu untuk memperoleh wawasan.
Jika bagian sebelum dan sesudahnya dipotong dari konteks situasi saat ungkapan seperti itu muncul, makna aslinya akan terdistorsi.

 
hided62 2025-05-26

Ini pengalaman yang belum lama terjadi, tetapi baru-baru ini saya membuat roda saya sendiri yang sangat istimewa.
Membangun aplikasi 1000 halaman di Nuxt memakan waktu 7 menit,
tetapi setelah mengorbankan beberapa otomatisasi dan menulis ulang, saya berhasil memangkas waktu build menjadi 20 detik.

 
aer0700 2025-05-26

Sulit untuk mengambil keputusan sampai sejauh mana harus menemukan kembali sesuatu, dan sampai sejauh mana harus mengandalkan dependensi eksternal.
Apa pun kasusnya, memilih dependensi itu demi menghemat waktu karena saya sebenarnya bisa membuatnya sendiri, dan menjadi terikat pada dependensi karena tanpa itu saya tidak bisa membuat layanannya, adalah dua hal yang sama sekali berbeda.
Mungkin tidak memungkinkan untuk semua kode (misalnya sistem operasi), tetapi sebisa mungkin bergerak ke arah yang pertama dan berusaha seperti itu akan membantu dalam memahami sistem.

 
howudoin 2025-05-26

Peribahasa itu punya makna yang terkandung di dalamnya, tapi makin banyak orang yang menafsirkannya hanya dari kata-katanya saja
Kalau argumen seperti itu jadi tren lagi, ruang rapat bakal berantakan lagi seolah tidak ada apa-apa
Para tukang paperwork bakal kegirangan dan mengamuk, lalu kegagalan yang sama diulang lagi setiap tahun

 
GN⁺ 2025-05-26
Opini Hacker News
  • Saya pernah menciptakan ulang roda saya sendiri di bidang tertentu. Awalnya bukan itu niat saya; saya melakukannya karena merasa teknologi yang ada saat itu keliru. Saya biasanya mendekati masalah yang katanya mustahil dengan pendekatan divide-and-conquer. Saya beruntung dan cukup keras kepala, jadi akhirnya berhasil. Roda buatan saya menunjukkan performa yang jauh lebih unggul di bidang itu. Setelah diuji, hal-hal yang sebelumnya dianggap mustahil ternyata bisa dilakukan dengan sangat mudah. Seiring waktu, orang-orang lain di bidang tersebut juga mulai memakai roda saya. Awalnya semua bingung, tetapi setelah mempelajarinya sekali, mereka tidak pernah ingin kembali ke cara lama. Saya menerima bug report dan feature request untuk use case serta workflow aneh dari seluruh dunia. Saya juga bisa berdiskusi teknis secara mendalam dengan orang-orang cerdas yang kemungkinan besar tak akan pernah saya temui secara langsung. Saya menyaksikan orang lain mencapai hal-hal yang bahkan tak mereka bayangkan dengan roda yang saya buat. Saya pun menemukan hal-hal baru yang membuat saya sulit tidur di malam hari. Ada juga kesenangan tersendiri melihat rekan kerja saya membeku otaknya ketika dijelaskan fitur-fitur roda saya. Tidak perlu takut menciptakan ulang roda. Tak ada yang tahu ke jalan gila mana roda itu akan bergulir

    • Saya jadi sangat penasaran ini roda apa
  • Menurut saya ada satu alasan yang sangat penting yang belum disebutkan, selain membuat roda yang lebih baik dari yang sudah ada. Yaitu, kita bisa membuat roda yang benar-benar pas untuk kebutuhan kita sendiri, lalu terus memakainya dalam kondisi itu. Saya sering melihat orang berkata “jangan menciptakan ulang roda” sambil memaksa memasang roda mobil ke sepeda. Jika kita membuat sendiri semua bagian sistem agar saling cocok, manfaatnya bisa jauh lebih besar dari yang dibayangkan

  • Salah satu alasan penting untuk menciptakan ulang roda adalah untuk menghindari kompleksitas yang ditambahkan secara tidak perlu oleh dependensi yang tidak berguna

    • Saya sangat setuju dengan ini. Library terkenal memang menyelesaikan masalah di banyak situasi, tetapi justru karena itu sering kali memuat banyak kode yang tidak diperlukan. Yang penting, kalau saya bisa membuat fungsi yang saya butuhkan dalam waktu singkat, membuatnya sendiri biasanya lebih baik dari sisi usability dan juga meminimalkan dependensi. Tapi untuk library kriptografi, saya sama sekali tidak menyarankan membuat sendiri

    • Ini alasan terbesar saya menciptakan ulang roda. Dependensi selalu membawa banyak hal tambahan yang tidak saya inginkan. Saya cuma butuh fungsi yang cukup untuk pergi ke minimarket dekat rumah. Dan secara pribadi, saya tidak percaya pada kode yang tidak transparan. Kalaupun saya memakai dependensi, itu harus pada level yang kalau saya luangkan satu hari, saya bisa membuatnya sendiri dan meninjaunya juga. Saya tidak menggunakan executable tanpa source code kecuali saya membelinya. Kalau gratis, source code-nya wajib terbuka

    • Saya membuat sendiri library task runner berbasis DAG (directed acyclic graph). Task bisa dimasukkan ke dalam queue. Karena saya ingin menjalankan demo di web browser, saya mengimplementasikan backend IndexedDB, lalu backend SQLite untuk aplikasi Electron, dan backend Postgres untuk lingkungan server multi-user. Saya juga menambahkan limiter untuk rate limiting. Selain itu, saya juga harus membuat sendiri berbagai roda lain seperti pemrosesan graph dan pemrosesan task. Kalau ingin benar-benar tanpa dependensi, ternyata pekerjaan yang harus dilakukan sangat banyak. Namun saya punya branch terpisah untuk membuat dan memvalidasi skema input/output task dengan TypeBox. Pada akhirnya, mungkin saja dependensi lain akan masuk juga ke inti sistem

    • Alasan lain adalah, kemampuan untuk menemukan atau meneliti hal baru bisa dilatih lewat latihan semacam ini. Bahkan masalah yang sudah terselesaikan pun cukup baik untuk latihan

    • Kadang saya menciptakan ulang roda untuk menghindari kompleksitas seperti abstraksi atau modularisasi yang tidak perlu

  • Ini esai yang bagus untuk direnungkan bersama. Saya juga pernah punya pengalaman serupa: saya membuat library machine learning bergaya PyTorch dari nol hanya dengan Python dan NumPy (ml-by-hand). Saya memulainya dari autograd engine kecil, lalu mengimplementasikan sendiri layer, optimizer, dataloader, dan seterusnya secara bertahap. Saya memulainya murni karena ingin mempelajari prinsip dasarnya. Dengan library buatan saya ini, saya mencoba meniru dari convolutional neural network klasik (cnn example) sampai GPT-2 sederhana (gpt2 example). Saya jadi jauh lebih memahami bagaimana machine learning bekerja di balik layar tanpa abstraksi PyTorch atau TensorFlow. Bisa dibilang, dengan roda yang saya ciptakan ulang, saya bahkan lanjut membangun mobilnya sendiri

  • Menanggapi pernyataan bahwa orang yang paling sering berkata “jangan menciptakan ulang roda” biasanya terbagi dalam dua golongan, menurut saya sebenarnya ada golongan ketiga yang jauh lebih umum. Yaitu, orang yang benar-benar tahu sulitnya menciptakan ulang roda, sudah melewati proses itu, lalu memutuskan bahwa sama sekali tidak layak melakukannya sendiri. Entah untuk tujuan pendidikan atau alasan lain, mereka tetap merasa itu tidak sepadan

    • Golongan ini terasa lebih realistis bagi saya. Mereka cenderung bukan sekadar memercayai cara lama atau status quo secara membabi buta, tetapi justru agak takut pada pendekatan yang sudah ada
  • Menciptakan ulang roda memang cara belajar terbaik. Tapi menurut saya itu hanya benar dalam konteks belajar. Saya juga suka mendalami sesuatu, tetapi di tempat kerja sering ada tenggat waktu dan batasan lain sehingga kita tidak bisa bebas mengeksplorasi. Kalau roda yang dibuat itu benar-benar mau dipakai untuk layanan nyata, menurut saya itu harus betul-betul lebih unggul daripada yang sudah ada

    • Dari orang-orang yang menciptakan ulang roda di tempat kerja, 99% kebanyakan bahkan tidak benar-benar paham bagaimana roda yang sudah ada dibuat, atau mengapa strukturnya berisi kompromi-kompromi tertentu

    • Membuat sendiri belum tentu cara belajar terbaik. Itu memakan banyak waktu dan biaya. Dengan dokumentasi yang rapi dan lingkungan eksperimen yang baik, kita juga bisa belajar dengan cukup. Kejelasan dalam penyampaian pengetahuan itu sendiri adalah pekerjaan terpisah. Tidak selalu perlu membangun ulang semuanya dari dasar

  • Saya sedang melakukan eksperimen untuk mengimplementasikan ulang sistem pemerintahan secara global. Ini berbeda dari pemerintahan yang sesungguhnya. Misalnya ada ua.gov-ai.co, ua.ai-gov.co, ng.gov-ai.co, ng.ai-gov.co, dan sebagainya. Sejauh ini progres CBER dan DDP yang paling tinggi. Saat ini sudah sampai 422 institusi. Saya ingin menyelesaikannya sebelum Juneteenth. Membangun ulang fondasi dengan cara seperti ini membantu saya memahami prinsip-prinsip dasarnya. Saya tahu kemungkinan besar tidak akan menghasilkan sesuatu yang benar-benar jadi, tetapi ini berguna untuk menata ulang pemikiran saya setiap kali esensinya berubah. Menurut saya, eksperimen menciptakan ulang roda selalu bermakna

  • Kalau bekerja di startup, menurut saya nasihat seperti ini sebaiknya sebisa mungkin diabaikan. (Kecuali jika roda yang dibuat ulang itu adalah performa inti dari layanan saya.) Kalau tidak, kemungkinan besar Anda hanya akan membuang sumber daya yang terbatas sampai bisnisnya bahkan gagal mulai

    • Meski begitu, menurut saya tetap penting bagi startup untuk bekerja bersama orang-orang yang pernah membuat roda sendiri, artinya orang yang benar-benar tahu cara membuat roda dengan benar. Pengalaman itu setidaknya perlu ada lewat open source atau proyek pribadi

    • Nasihat seperti ini tampaknya bukan untuk konteks profesional, melainkan untuk eksperimen roda demi pembelajaran pribadi

  • Saya teringat kutipan hebat dari seorang teman. “Alasan kita menciptakan ulang roda bukan karena kita butuh lebih banyak roda, tetapi karena kita butuh lebih banyak penemu.” Saya sering merasa pikiran dan hati saya menjadi lebih mantap ketika melalui proses membuat sesuatu sendiri demi mempelajari konsep baru. Saat saya mengenal kutipan Feynman, “Apa yang tidak bisa saya buat berarti belum benar-benar saya pahami,” pengalaman dan keyakinan ini pun makin menguat. Setiap kali saya menciptakan ulang roda, intuisi saya terhadap konsep awal jadi lebih kuat, dan saya juga mempelajari hal-hal baru yang sebelumnya sama sekali tidak saya ketahui

  • Menurut saya, suasana yang terlalu memusuhi duplikasi adalah salah satu masalah zaman kita. Semua orang jadi seragam, makan makanan yang sama, bekerja di profesi yang mirip, dan bergerak menurut kebutuhan yang serupa. Jika pesan seperti ‘jangan menciptakan ulang roda’ didorong sampai ke titik ekstrem, arah akhirnya bisa jadi adalah menjadi orang yang tidak tahu apa-apa kecuali cara memenuhi kebutuhan khusus segelintir orang kaya. Kehidupan di mana kita tak lagi belajar memasak, bertani, bahkan mencintai

    • Tapi itu bukan berarti ungkapan “jangan menciptakan ulang roda” selalu tidak kritis atau selalu berarti memilih jalan termudah. Misalnya, kalau ban mobil bocor, kita tetap perlu mempertimbangkan berbagai pilihan yang cukup matang soal roda. Tidak perlu benar-benar membuat roda baru. Ada alasan mengapa ban cadangan disediakan. Hampir tidak mungkin roda darurat buatan saya sendiri akan lebih baik daripada buatan pabrikan
 
kandk 2025-05-26

Apakah perusahaan adalah tempat untuk belajar? Atau tempat untuk menciptakan kembali nilai dengan mengambil roda yang dibuat orang lain?

 
aer0700 2025-05-26

Membuat itu baru permulaan, dan kalau mengoperasikan layanan selama sekitar 10 tahun, di tengah jalan pasti akan terjadi berbagai macam hal; untuk bisa bertahan di sana, kita perlu fondasi yang kuat... Kita harus belajar.