Ketidakmampuan seperti itu tidak akan pernah luput dari disiplin ilmu teknik lainnya. Dalam keadaan apa pun kami tidak menerima jembatan yang memiliki bug sebanyak sistem perangkat lunak rata-rata. Mengapa situasi desain perangkat lunak begitu mengerikan? Mengapa ada begitu banyak program ara di dunia?
Untuk memahami alasannya, pertama-tama kita perlu memahami bagaimana keterampilan pengembang terkait dengan kegunaan perangkat lunak yang ia buat untuk memecahkan masalah tertentu.
Di kategori pertama, kami melihat "pengembang" yang pada dasarnya tidak kompeten. Ada berbagai macam kemahiran keterampilan yang dapat ditemukan dalam kategori ini, tetapi semua orang di dalamnya serupa karena produk akhir mereka tidak berguna secara fungsional. Komputer memang kejam dalam hal ini - jika Anda tidak tahu cara membuat aplikasi Anda dikompilasi, sebaiknya Anda tidak menuliskannya sama sekali. Jika Anda tidak tahu cara membuat fungsionalitas dasar aplikasi Anda, maka sama sekali tidak ada yang akan menggunakannya. Di bawah ambang batas keahlian tertentu, Anda tidak dapat membuat perangkat lunak yang dapat digunakan. Sebagian besar "pengembang" dalam kategori ini bereksperimen dengan kode di waktu luang mereka, dan jarang membuat perangkat lunak profesional.
Namun, begitu kami melewati ambang batas, situasinya berubah secara dramatis. Di bagian bawah grafik adalah para pengembang yang mampu membuat sistem perangkat lunak yang layak minimum. Dan jika para pengembang ini meningkat, maka kegunaan perangkat lunak mereka juga berkembang pesat. Aplikasi yang "berfungsi" tetapi lambat, bermasalah, tidak aman, dan membingungkan secara bertahap menjadi kurang buggy, lebih berkinerja, lebih aman, dan lebih mudah dipahami. Berbeda dengan dua kategori lainnya, karena pengembang dalam kategori ini mengembangkan keterampilan, perangkat lunak yang mereka buat menjadi jauh lebih baik.
Terakhir, ketika pengembang mencapai ambang keterampilan tertentu, mereka melewatinya.
dan termasuk dalam kategori ketiga. Dalam kategori di mana setiap orang telah mencapai tingkat kompetensi yang tinggi (dalam kaitannya dengan tugas yang mereka selesaikan) sehingga pertumbuhan pribadi lebih lanjut akan memiliki efek minimal pada produk akhir. Misalnya, teknisi yang dipilih secara acak dari Google dapat membuat aplikasi CRUD serta Jeff Dean .
Dalam dunia yang ideal, satu - satunya pengembang di kategori pertama dan kedua adalah pelajar atau profesional muda. Dan semua sistem perangkat lunak profesional terutama dibuat oleh pengembang dari kategori ketiga. Pengembang yang telah menguasai dengan sempurna semua keterampilan yang diperlukan untuk memecahkan masalah mereka dan menciptakan solusi yang sangat mendekati ideal teoretis. Di dunia yang begitu menakjubkan, semua perangkat lunak di sekitar kita akan memiliki tingkat kualitas yang kira-kira sama, akan bekerja persis seperti yang diharapkan, dengan kinerja optimal dan tanpa lubang keamanan. Di dunia ini, masyarakat akan bereaksi terhadap semua perangkat lunak dengan gembira, bukan gangguan.
Namun, ada dua masalah antara kami dan utopia ini.
Pertama, jumlah developer di kategori ketiga sangat sedikit dibandingkan dengan kategori kedua. Pemrograman itu "mudah dipelajari tetapi sulit untuk dikuasai". Jutaan orang dapat menulis skrip yang berfungsi, tetapi sangat sedikit yang menguasai seni desain perangkat lunak. Selain itu, tidak ada kendala untuk masuk ke industri pengembangan perangkat lunak - tidak ada analog bagi pemrogram dengan American Medical Association atau International Bar Association. Tidak mengherankan bila jumlah orang yang memiliki kompetensi awal dan menengah di dalamnya lebih banyak dibandingkan dengan jumlah dokter spesialis yang berkompeten.
Kedua, permintaan pengembang luar biasa. Pengembang perangkat lunak memiliki kesempatan untuk memberikan kontribusi yang luar biasa pada hampir semua industri. Dibandingkan dengan lebih banyak profesi khusus seperti astronomi, di mana peluang sangat terbatas, pengembangan perangkat lunak adalah bidang yang sangat kekurangan bakat. Artinya, masalah utamanya adalah menemukan pengembang perangkat lunak berbakat, bukan menemukan pekerjaan yang cocok untuk mereka.
Jika Anda menggabungkan kedua masalah tersebut, ternyata sebagian besar perusahaan yang ingin mempekerjakan pengembang ahli tidak memiliki kesempatan untuk melakukannya. Tidak ada cukup orang baik untuk dipekerjakan, dan mereka yang ada di pasar sering kali menerima penawaran yang jauh lebih baik dari perusahaan setingkat FANG atau perusahaan rintisan yang meroket.
Oleh karena itu, semua perusahaan lain membuat pilihan paling optimal dalam situasi seperti itu. Mereka mempekerjakan pengembang dari kategori kedua. Pengembang yang secara umum bisa disebut "cukup baik". Aplikasi mereka memiliki bug, kerentanan keamanan, dan mereka tidak dapat menangani beban tinggi. Tapi setidaknya orang-orang ini mampu menciptakan sesuatu yang "berhasil". Sesuatu yang lebih berguna daripada status quo. Sesuatu yang dapat diluncurkan ke produksi dengan analisis kritis minimal.
Dapat disesatkan bahwa situasi ini wajar untuk seluruh dunia dan semua profesional. Tapi sebenarnya tidak.
Ada banyak posisi yang membutuhkan pelatihan serius, tetapi termasuk dalam kategori "mudah dipelajari". Ini adalah profesi seperti sopir taksi, pekerja konstruksi atau bartender. Pada profesi semacam itu, banyak sekali tenaga kerja yang telah mencapai kategori kompetensi tinggi, dan peningkatan keterampilan lebih lanjut praktis tidak membawa manfaat apa-apa.
Ada juga banyak profesi di mana peluangnya sangat terbatas sehingga pemberi kerja lebih suka mempekerjakan hanya spesialis yang sangat baik. Misalnya, ini berlaku untuk pianis. Pianis amatir dapat ditemukan di banyak keluarga, tetapi mereka tidak akan pernah bermain di gedung konser, karena jumlah pianis berbakat jauh melebihi jumlah konser yang direncanakan.
Terakhir, ada profesi yang sulit untuk dikuasai dan dengan banyak peluang, tetapi memiliki hambatan regulasi untuk masuk. Misalnya praktik kedokteran. Ada banyak orang di dunia pra-Obamacare yang tidak mampu membeli asuransi kesehatan dan dengan senang hati akan memilih "setidaknya beberapa" perawatan kesehatan daripada tidak sama sekali (apakah perlu melakukan ini adalah pertanyaan sulit lainnya)... Namun karena aturan yang ketat, hanya mereka yang telah terbukti kompetensinya yang tinggi yang dapat memberikan layanan medis. Situasinya serupa di banyak disiplin ilmu teknik yang tunduk pada pengawasan peraturan yang ketat, seperti pembangunan jembatan dan gedung pencakar langit, dan pembuatan peralatan medis.
Pengembangan perangkat lunak telah menjadi titik temu yang aneh dari semua hal di atas. Ini mudah dipelajari, jadi ada legiun pengembang "cukup baik" di seluruh dunia. Pengembang yang membuat solusi perangkat lunak yang cukup berguna, tetapi penuh dengan bug dan kerentanan keamanan. Pada saat yang sama, profesi ini sulit untuk dikuasai pada level tinggi, sehingga jauh lebih sulit untuk menemukan pengembang yang dapat menghindari jebakan semacam itu.
Industri perangkat lunak sangat kaya akan peluang sehingga sebagian besar perusahaan merasa hampir tidak mungkin untuk mempekerjakan profesional yang baik. Sangat kaya akan peluang sehingga meskipun ada legiun pengembang pemula di seluruh dunia, ada pekerjaan untuk masing-masing dan setiap pengembang.
Terakhir, dalam pengembangan perangkat lunak, tidak ada kontrol input. Siapa pun dapat mengikuti program pelatihan coding, mengikuti beberapa kursus coding online, dan mulai menawarkan layanan mereka di Upwork keesokan harinya. Dan produk hasil kerja mereka dapat segera diluncurkan ke produksi tanpa kendali regulasi.
Dengan menggabungkan semuanya, Anda dapat memahami mengapa ada begitu banyak perangkat lunak yang timpang di dunia. Perangkat lunak memakan dunia, disertai dengan bug dan celah keamanan.
: , , . , .
, , . CEO, ยซยป โ , .