Catatan penerjemah:
Baru-baru ini, pencipta NodeJS Rain Dahl membuka konferensi HolyJS di St. Petersburg. Dan saya ingat bahwa saya memiliki terjemahan yang tidak diterbitkan dari blognya dan memutuskan untuk menerbitkannya. Di beberapa tempat, terjemahannya cukup jujur. Saya harap Anda akan tertarik. Tanggal rilis untuk artikel ini adalah Oktober 2011. Tanggal rilis untuk NodeJS adalah 27 Mei 2009.Ini tidak perlu dan rumit di hampir setiap lapisan. Yang terbaik yang bisa saya lakukan adalah memberi selamat kepada seseorang untuk solusi cepat dan mudah untuk masalah tersebut, mengingat omong kosong yang mereka berikan. Satu-satunya perangkat lunak yang saya sukai adalah saya dapat dengan mudah memahami, dan itu memecahkan masalah saya. Jumlah kesulitan yang saya setujui untuk bertahan adalah proporsional dengan ukuran masalah yang perlu diselesaikan.
Selama setahun terakhir, saya pikir saya akhirnya memahami cita-cita Unix: deskriptor dan proses file diatur menggunakan C. Ini adalah ide yang bagus. Tapi ini bukan yang kita hadapi. Kompleksitas tidak tersirat. Sebaliknya, saya harus berurusan dengan DBus, / usr / lib, Boost, ioctls, SMF, sinyal, variabel volatile, prototipe inheritance, _C99_FEATURES_, dpkg dan autoconf.
Kita yang menulis perangkat lunak di atas sistem ini menambah kompleksitas. Sekarang Anda perlu tahu tidak hanya $ LD_LIBRARY_PATH untuk membuat sistem bekerja, tetapi juga $ NODE_PATH - tahu, ini bisnis saya, ini adalah kompleksitas tambahan saya! Pengguna - mereka yang ingin melihat halaman web - mereka tidak peduli sama sekali. Mereka tidak peduli bagaimana kita mengatur / usr, mereka tidak peduli bagaimana proses zombie bekerja, lagi pula penambahan perintah dalam bash berfungsi, tidak peduli bagaimana zlib dihubungkan secara statis atau dinamis ke Node. Akan tiba saatnya kompleksitas yang terakumulasi dari sistem kami yang ada akan lebih besar daripada kompleksitas menciptakan yang baru. Ketika saat ini tiba, semua omong kosong ini akan pergi ke tempat sampah. Kita bisa menyiram boost dan glib dan autoconf ke toilet dan tidak pernah memikirkannya.
Anda yang masih menikmati mempelajari detail, katakanlah, bahasa pemrograman - misalnya, mereka yang senang mengetahui apakah NaN adalah nol atau tidak - Anda bahkan tidak mengerti betapa sialnya itu. Jika Anda pikir akan lebih baik untuk menyelaraskan semua karakter yang sama dalam kode Anda, jika Anda menghabiskan waktu mengatur window manager atau editor Anda, jika Anda memasukkan tanda centang unicode di test runner, jika Anda menambahkan hierarki yang tidak perlu dalam folder kode Anda, jika Anda melakukannya setidaknya sesuatu selain menyelesaikan masalah - Anda tidak mengerti betapa membosankannya hal itu. Tidak ada yang peduli dengan model objek glib.
Satu hal yang penting dalam pengembangan perangkat lunak adalah bagaimana perasaan pengguna (pengalaman pengguna).