
Kembali ke masa-masa ketika saya baru mulai belajar cara membuat kode, saya memercayai musang bijak lama dengan mantra "Bahasa pemrograman tidak penting". Saya menjadi terobsesi dengan ide suatu hari menjadi pengembang yang bisa melakukan apa saja. Orang itu yang mentransfer pengalamannya dari satu teknologi ke teknologi lainnya dan melampaui hal-hal kecil. Tetapi gagasan itu gagal total.
Obsesi untuk mengetahui semuanya
Saya belajar C # dan .NET di berbagai domain aplikasi (asp.net, wpf, xamarin), js / ts (react / redux, node) dan meyakinkan diri sendiri bahwa saya memiliki kekuatan untuk melakukan apa pun yang saya inginkan. Pemikiran saya abstrak, saya efisien dalam beberapa paradigma pemrograman pada saat yang sama, dan saya memiliki keterampilan praktis dalam semua aspek rekayasa perangkat lunak profesional. Saya siap untuk mentertawakan 40-an senior itu dengan kecanduan mereka pada satu teknologi, yang telah menghabiskan separuh hidup mereka untuk memahami apa yang dapat saya pahami dalam waktu seminggu. Saya hampir menyatakan bahwa masuk ke dalam domain pengetahuan adalah untuk orang-orang bodoh yang senang memiliki pekerjaan yang sama selama sisa hidup mereka, sedangkan saya abstrak dari itu semua.
Saya pikir semuanya hanya hal lama yang sama, jadi saya agak melihat pola yang konsisten. Sekarang ketika pekerjaan saya melibatkan pengodean dalam Python yang menggelikan, saya akan pergi, 'Beri saya waktu untuk membaca spesifikasi secara cepat, dan saya akan siap bekerja dengan omong kosong ini di tingkat senior. Mengapa, komplikasi apa yang mungkin ada di sana dari jenis yang belum pernah saya lihat sebelumnya? ' Maka saya menjadi korban kultus perincian-pengabaian. Biarkan junior bermain-main dengan detail, melihat bahwa mereka tidak kompeten dengan abstraksi.
Saya pernah membuat desain berdasarkan kelas abstrak di TypeScript, dan diejek karena tampaknya tidak ada yang melakukannya dengan cara ini di TypeScript. Saya tentu saja berpura-pura bahwa kolega saya adalah orang bodoh yang putus asa. Ini digunakan untuk membantu sebelumnya, tetapi waktu itu meninggalkan saya dengan aftertaste yang buruk.
Reputasi Anda sebagai pengembang yang baik dapat menyamarkan kesenjangan pengetahuan Anda baik dari rekan kerja maupun diri Anda sendiri. Karena itu Anda tidak tahu banyak tentang hal-hal penting, tetapi tentu saja Anda tidak dapat melihatnya, tepatnya karena Anda tidak tahu tentang hal itu.
Saat itulah beruntun burukku dimulai. Puf! Saya tidak tahu tentang jenis indeks dalam SQL. Bam! Saya lupa kapan saya harus memanggil konstruktor statis di C #. Ups! Saya tidak bisa menerapkan IDisposable dengan benar tanpa mencari di Google. Oh, dan saya sedang berusaha untuk mengubah status komponen reaksi.
Saya kemudian curiga abstraksi saya tidak benar-benar berfungsi. Bahwa jenis-jenis teknologi yang saya hadapi berbeda-beda dan rinciannya penting. Setiap ekosistem teknis memiliki praktik terbaik yang unik. Pengalaman .NET Anda tidak akan sakit ketika bekerja dengan jvm, tetapi itu tidak dapat menggantikannya. Keahlian saya yang dinilai sendiri tentang 'setelah belajar cara belajar' ternyata merupakan permainan imajinasi. Kecepatan belajar saya tidak lebih cepat dari yang lain. Kesadaran ini datang terlambat.
Keahlian saya hanyalah sekumpulan ide yang saling bertentangan - saya terkoyak oleh sedikit pengetahuan dari sana-sini. Saya tidak secara otomatis menjadi Jack-of-all-trade senior. Alih-alih, saya menjadi pengembang tingkat menengah multi-keterampilan, bahan tertawaan untuk 40-an senior yang telah menguasai satu teknologi. Jadi, saya menyadari bahwa memilih jalur tumpukan penuh adalah kesalahan.
Mengalahkan diriku sendiri tentang hal itu
Masalahnya, bisnis membutuhkan pengembang penuh. Tidak, bukan imitasi seperti saya, tapi senior yang serba bisa, orang-orang yang memiliki pengalaman lima tahun di setiap teknologi full-stack di bawah ikat pinggang mereka.
Namun, unicorn ini tidak ada, jadi bisnis mencari penipuan diri sendiri. Mereka mengambil insinyur tingkat menengah yang biasa-biasa saja yang berspesialisasi dalam tiga teknologi besar dan menyebutnya pengembang penuh tumpukan senior. Gelar pekerjaan ini mengubah insinyur menjadi penipu dan berfungsi sebagai sumber kompleks inferioritas yang tiada habisnya. Setiap pengembang biasa yang berfokus pada satu teknologi akan lebih tahu. Sekarang saya dapat mengakui bahwa saya tidak siap untuk berkolaborasi dengan persyaratan yang sama dengan orang-orang yang jauh lebih baik daripada saya dalam sesuatu hal. Kalau tidak, itu akan menjadi seminggu sebelum saya akan dipukuli sampai mati.
Tuduhan diri sendiri merupakan penyakit besar dalam industri kita, tetapi kita menyembuhkannya dengan obat yang salah. Kami bertukar proklamasi tentang bagaimana kami adalah pahlawan super yang dikelilingi oleh para bajingan. Kami menyangkal hal seperti devaluasi senior, kami terus mengatakan kami meremehkan diri sendiri, kami hanya perlu membuang kerendahan hati kami dan percaya pada dewi internal kami dalam pengembangan perangkat lunak. Kami pikir kami perlu mengenakan topi arogansi dan memberikan jari kepada siapa pun yang memiliki terlalu sedikit kepercayaan pada kami.
Kita hanya perlu mengakui bahwa pembangunan itu sulit tidak hanya bagi orang luar, tetapi juga bagi kita. Tidak mengetahui tentang sesuatu pada saat tertentu adalah OK. Jika Anda memiliki celah, itu tidak berarti Anda kurang berharga dan harus dikeluarkan dari komunitas.
Tetapi di suatu tempat di tingkat refleksi diri terdalam kita masih memukuli diri kita sendiri. Pengembang dengan tumpukan penuh mengutuk diri mereka sendiri karena tidak memiliki pengetahuan teknologi yang mendalam. Pakar disiplin tunggal mengeluh bahwa mereka tidak memiliki keterampilan yang luas.
Belajar secara luas vs belajar secara mendalam
Di sini kita memiliki dilema lama yang sama: Anda bisa belajar secara luas atau mendalam, tetapi tidak keduanya sekaligus. Saya perhatikan efek samping yang menarik: ketika Anda mulai belajar teknologi baru, yang lama tampaknya kurang menarik. Tetapi di dunia IT, jika Anda tidak menyegarkan kembali pengetahuan Anda tentang teknologi dalam waktu satu tahun, itu membuat Anda usang.
Jika Anda ingin tetap menjadi pengembang tumpukan penuh, Anda harus membuat diri Anda membaca catatan rilis dari beberapa TypeScript, menguji semua itu saat Anda membaca, bahkan jika Anda tidak merasa menyukainya. Namun, Anda akan jauh dari pengembang yang kode setiap hari khusus di TypeScript.
Masalah utama dari konflik ini adalah kita tidak tahu apa yang terbaik. Kami, dan terutama bisnis, menginginkan keduanya. Agar setiap orang memiliki keterampilan yang tepat dan mendalam.
Saya tidak tahu apa yang terbaik, tetapi saya tahu bagaimana rasanya dari sudut pandang pengembang penuh-tumpukan. Anda akan menghabiskan lebih banyak waktu untuk belajar, dibandingkan dengan pengembang satu bahasa. Ini akan berlangsung selama karier Anda bertahan, dan Anda masih akan kekurangan tingkat kemahiran mereka.
Anda akan disambut di mana-mana, tetapi tidak ada tempat di rumah. Terlepas dari upaya besar Anda, setiap guru dari hal besar berikutnya akan berbusa mulut mengklaim Anda tidak layak disebut senior.
Anda akan terjebak di tingkat menengah selamanya.
Saya memutuskan untuk tetap pada jalur saya. Saya bisa mencoba mempelajari sesuatu yang sangat mendalam, saya bisa melatih kembali untuk manajemen (bidang di mana pengetahuan dangkal adalah standar industri), tetapi saya lebih suka tetap seperti saya dan akan menanggung penderitaan sampai saya benar-benar mempelajari segala sesuatu tentang apa pun.