- Saya pernah membahas cara memilih program yang bisa digunakan dalam jangka panjang dan membangun infrastruktur yang dapat diandalkan, tetapi saya mengakui bahwa saya masih belum melakukannya dengan baik
- Selama sebulan terakhir saya menulis ulang inti dari program yang telah saya gunakan selama dua tahun terakhir, dan lewat proses itu saya meninjau kembali perubahan dalam cara saya memrogram sepanjang hidup saya
Tahun 2015
- Saya meragukan abstraksi dan menekankan pentingnya pengujian serta kontrol versi
- Saya menganggap penyalahgunaan abstraksi dan kurangnya pengujian/kontrol versi sebagai penyebab masalah
- Saya merancang platform Mu1 dengan pengujian dan layer sebagai batasan dasarnya
Tahun 2017
- Mulai mengerjakan ulang Mu1 menjadi Mu yang sekarang
- Awalnya saya memakai semua ide baru tentang pengujian dan layer, tetapi perlahan berhenti menggunakannya
- Mu memiliki banyak pengujian, tetapi dengan cara yang lama, dan infrastruktur layer tidak saya porting
Tahun 2022
- Mulai mengerjakan Freewheeling Apps
- Awalnya dimulai tanpa pengujian, lalu saya menulis pengujian yang sangat menyeluruh untuk bagian inti editor teks
- Bagian sisanya sulit diuji, tetapi tetap berjalan dengan baik
Tahun 2024
- Sebulan yang lalu saya menghapus semua pengujian
- Saya mengerjakan ulang editor teks secara radikal dengan cara yang dulu membuat saya khawatir tentang konflik merge dengan Freewheeling Apps lain
- Saya tidak lagi memikirkan kontrol versi
- Dengan meninggalkan pengujian dan versi, saya justru membuat program yang jauh lebih baik
Pandangan terpadu saya saat ini tentang pemrograman yang berkelanjutan
- Membangun secara berkelanjutan untuk banyak orang terlalu sulit, jadi jangan coba-coba
- Sebagian besar perangkat lunak telah terinfeksi oleh insentif untuk melayani banyak orang dalam jangka pendek. Fokuslah pada perangkat lunak yang logonya sedikit, mudah dibangun, memiliki sedikit dependensi, dan tidak melakukan pembaruan otomatis
- Perubahan kecil dalam konteks dapat secara mendasar mengubah seberapa cocok sebuah program dengan konteks tersebut
- Program baru, dengan satu atau lain cara, akan menuju wilayah yang belum diketahui. Sering kali kita tidak benar-benar tahu apa yang sedang kita lakukan ke arah mana pun
- Tipe, abstraksi, pengujian, versi, state machine, immutability, analisis formal, dan sebagainya adalah alat yang bisa digunakan di medan yang belum akrab
- Pada akhirnya kita tak terhindarkan akan menggunakan beberapa alat ini secara berlebihan. Jumlah penggunaan yang ideal jauh lebih kecil daripada yang kita kira. Penggunaan berlebih adalah utang teknis
- Ketika pemahaman terhadap konteks sudah stabil, ada nilai dalam membuang sebagian besar program dan memulai lagi dari awal
- Sebelum menulis ulang, kita perlu menaruh semua hal yang diinginkan dari program dan semua skenario yang harus ditangani program itu di kepala pada saat yang sama
- Bangun semuanya sekaligus
- Pengujian dan kontrol versi menghalangi pencapaian tahap akhir dari evolusi ini
- Pengujian membuat kita melupakan kekhawatiran, dan kontrol versi membuat kita terikat pada masa lalu
Opini GN⁺
- Jika program menjadi terlalu kompleks, mengingat semuanya pada langkah 8 bisa menjadi mustahil. Ini berlaku untuk sebagian besar perangkat lunak, terutama perangkat lunak yang ditulis oleh lebih dari satu orang
- Tidak semua perangkat lunak harus mencapai langkah 9. Banyak Freewheeling Apps cukup sederhana dan berevolusi cukup lambat sehingga dapat stabil tanpa bug hanya dengan digunakan oleh beberapa orang, terlepas dari pilihan desain awalnya
- Desain yang berpusat pada data jelas berguna untuk mencapai langkah 9. Ini bukan alat yang bisa diterapkan secara membabi buta, melainkan pola pikir untuk melihat gambaran besar tentang bagaimana program mengakses data, melampaui immediate data structure choices
- Langkah-langkah ini mungkin tidak sepenuhnya benar. Bisa jadi ada alat yang kurang saya kuasai dan sedang saya remehkan
- Saya penasaran langkah apa yang mungkin ada setelah tahapan-tahapan ini
1 komentar
Komentar Hacker News
Tanpa pengujian, masalah tidak terlihat sehingga seolah-olah masalahnya hilang
Setelah meninggalkan pengujian dan versi, justru mendapatkan program yang lebih baik
Awalnya mengira penulis salah, tetapi ada wawasan yang bagus
Kontrol versi dan pengujian otomatis menyelesaikan masalah nyata
Saat menulis/memfaktor ulang program besar, penting untuk menulis, membuang, lalu menulis ulang
Artikel ini membingungkan
Perubahan kecil bisa sangat mengubah kecocokan sebuah program
Membuat software sendirian dan membuatnya dalam tim adalah dua hal yang sepenuhnya berbeda
Mulai mengerjakan Freewheeling Apps pada tahun 2022
Tidak setuju bahwa perubahan kecil bisa sangat mengubah kecocokan program
Menyukai penulis dan menyukai proyek Mu
Merasa kewalahan oleh kompleksitas rekayasa perangkat lunak