Keahlian Luas vs. Sempit: Keahlian Rekayasa Perangkat Lunak Diungkapkan

Diterbitkan: 2022-03-11

Setiap insinyur perangkat lunak memiliki keahlian yang terdiri dari berbagai keterampilan yang mereka peroleh. Sebuah keahlian adalah "dalam dan sempit" jika Anda telah menguasai satu atau dua keterampilan dan sedikit lainnya; itu "luas dan dangkal" jika Anda dapat melakukan sedikit segalanya tanpa menjadi ahli dalam bidang apa pun.

Sebagian besar dari kita berada di tengah-tengah dengan beberapa keterampilan yang kuat, beberapa keterampilan rata-rata, dan banyak celah. Dalam artikel ini, saya ingin membahas spektrum yang luas dan berpendapat bahwa semakin dekat ke ujung yang luas akan menguntungkan sebagian besar programmer.

Keterampilan Insinyur Perangkat Lunak: Representasi grafis dari kumpulan keterampilan

Keluasan dan kedalaman, tentu saja, relatif. Misalnya, Anda bisa menjadi ahli dalam pengembangan web, atau hanya dalam pengembangan web sisi klien, atau hanya dalam JavaScript. Semua ini adalah keterampilan "dalam dan sempit" dalam beberapa hal, tetapi yang terakhir jauh lebih sempit daripada yang pertama.

Juga, keterampilan "dalam dan luas" dan "dangkal dan sempit" keduanya mungkin: Yang pertama berarti semua orang ingin mempekerjakan Anda, dan yang kedua berarti Anda belum mempelajari sesuatu yang berarti sama sekali. Karena mereka tidak terlalu umum, mereka juga tidak layak untuk dibahas secara mendetail.

Jenis Keterampilan dan Keahlian Insinyur Perangkat Lunak

Dalam dan Sempit

Memiliki keahlian yang mendalam berarti Anda ahli dalam setidaknya satu bidang.

Ambil SQL: Katakanlah Anda tahu segalanya tentang teori database relasional; pro dan kontra MySQL, PostgreSQL, Oracle, dan SQLite; cara mengoptimalkan kueri; kapan dan bagaimana mendenormalisasi database, dll. Klien yang mencari keahlian khusus ini akan ingin mempekerjakan Anda secepatnya, dan dengan alasan yang bagus. Anda akan mulai bekerja dan memberikan nilai seperti yang bisa dilakukan oleh sedikit orang lain.

Namun, jika proyek berkembang atau berubah secara signifikan, Anda akan digantikan atau dilengkapi oleh programmer dengan keterampilan yang tidak Anda miliki. Bahkan tanpa perubahan besar, apakah Anda dapat menyarankan perubahan arsitektur? Klien bisa lebih baik dengan database NoSQL atau tanpa database sama sekali, tetapi keahlian Anda yang sempit mungkin membuat Anda bias terhadap opsi yang tidak dikenal ini.

Luas dan Dangkal

Di sisi lain, jika Anda seorang generalis yang bukan ahli domain, Anda perlu waktu untuk meningkatkan proyek baru sebelum mencapai produktivitas puncak.

Sebagai contoh, mungkin Anda perlu melakukan proyek Python dan Anda belum pernah menggunakan bahasa itu sebelumnya. Namun, Anda mungkin pernah mendengar beberapa hal tentangnya (dinamis, ditafsirkan, multi-paradigma) dan pengalaman Anda dengan bahasa lain akan membuat transisi menjadi lebih mudah.

Kode yang awalnya Anda tulis mungkin bukan Pythonic (dengan tupel, pemahaman, atau generator) tetapi Anda akan tahu harus mulai dari mana. Anda akan membuat kemajuan yang stabil dan modul Anda yang telah diperhitungkan dengan baik akan mudah ditingkatkan nanti. Perspektif Anda yang luas tentang teknologi akan memberi Anda ide-ide yang mungkin terlewatkan oleh orang lain.

Saat proyek berubah, Anda akan menjadi aset bagi tim Anda, bukan kewajiban.

Skillset di Dunia Nyata

Dalam istilah geografis, kumpulan keterampilan yang sempit terlihat seperti gunung yang tinggi, dan kumpulan keterampilan yang luas seperti dataran tinggi. Menggunakan analogi ini, keahlian khas cenderung menampilkan beberapa gunung, bukit di sana-sini, dan banyak dataran.

Representasi grafis dari pegunungan, perbukitan, dan dataran

Pemrogram acak mungkin hebat dalam SQL dan Python, baik dalam pemrograman dan algoritme web, dan sangat khawatir tentang sebagian besar hal lain, seperti dump inti, server OAuth, atau aplikasi asli. Pemrogram seperti itu harus terus mengeksploitasi bidang keahlian mereka, sambil juga menemukan dan mengisi kesenjangan pengetahuan.

Strategi ini kemungkinan besar akan melayani mereka dengan baik selama bertahun-tahun.

Mengapa Pemrogram Perlu Mendiversifikasi Keahlian Mereka

Banyak proyek membutuhkan keterampilan yang tidak terkait yang digabungkan dengan cara yang tidak terduga. Sementara insinyur yang terampil secara luas dapat memberikan kontribusi yang berguna untuk sebagian besar dari mereka, keahlian seorang ahli akan sesuai dengan persyaratan yang tepat dari beberapa pemberi kerja. Itu tidak selalu menjadi masalah dalam jangka pendek, karena Anda hanya perlu satu pekerjaan untuk membayar tagihan.

Namun…

Spesialisasi yang berlebihan berisiko. Menempatkan telur Anda dalam satu keranjang mungkin baik-baik saja jika Anda dapat memprediksi masa depan lebih baik daripada orang lain, tetapi kemampuan itu langka dan tidak terkait dengan keterampilan teknologi. Pertimbangkan permintaan keterampilan pemrograman Windows di milenium kita. Atau tanyakan pada diri Anda: mungkinkah banyak dari kita telah menebak lintasan masing-masing Android, Flash, Nokia, atau Blackberry satu dekade lalu?

Terakhir, pengusaha papan atas sangat menghargai beragam keterampilan. Facebook tidak menugaskan karyawan baru ke tim sampai enam minggu setelah mereka mulai. Google mendorong transfer internal dan menjalankan beberapa program rotasi. Bahkan jika Anda menikmati pekerjaan lepas, tetap membuka opsi tidak ada salahnya. Jika Anda pernah mempertimbangkan untuk bekerja di perusahaan-perusahaan itu, Anda setidaknya harus menjadi seorang generalis.

Dengan asumsi bahwa Anda yakin dan ingin mendiversifikasi keterampilan Anda, bagaimana Anda melakukannya?

Cara Mendiversifikasi dan Meningkatkan Keterampilan Teknis

Anda dapat menukar uang dengan keterampilan:

  • Terima tarif yang lebih rendah saat beralih ke bidang yang tidak dikenal. Jika Anda 75% seproduktif biasanya, pemotongan gaji sementara sebesar 25% adalah wajar. Anda akan segera menemukannya kembali.
  • Lakukan pekerjaan demo yang tidak dibayar dengan keterampilan yang Anda inginkan saat melamar pekerjaan yang membutuhkannya. Jika ternyata Anda belum siap untuk perubahan, itu masih pelajaran yang berguna untuk dipelajari.

Anda juga dapat menukar waktu dengan keterampilan:

  • Berkontribusi pada proyek sumber terbuka. Anda akan mendapatkan saran dan validasi, memberikan kembali kepada komunitas, dan mungkin diperhatikan oleh calon pemberi kerja atau rekan kerja.
  • Lakukan proyek pribadi untuk kegembiraan, inspirasi, dan perubahan dari pekerjaan sehari-hari. Misalnya, saya mengkloning game Snake pra-smartphone sambil belajar React.

Anda harus mencari kesempatan belajar, tetapi Anda tidak dapat melakukannya terus-menerus. Untuk proyek wawancara Toptal saya, saya menggunakan Node.js dan Backbone, keduanya tidak memiliki banyak pengalaman. Itu menyenangkan, tetapi kecepatan belajar yang dibutuhkan tidak dapat dipertahankan selama berbulan-bulan.

Idealnya Anda akan bergantian antara periode stabilitas yang lama (dengan output dan pendapatan yang stabil) dan interval singkat ketika Anda menantang diri sendiri untuk mempelajari sesuatu yang baru. Seberapa sering Anda melakukan yang terakhir tergantung pada beberapa faktor, seperti keahlian Anda saat ini, permintaan pasar, dan tujuan pribadi Anda.

Mengapa Keluasan Baik untuk Pengusaha

Sejauh menyangkut pengusaha, keterampilan yang mendalam akan selalu dibutuhkan dalam beberapa skenario:

  • Ketika ada sedikit kepercayaan atau komitmen waktu antara majikan dan karyawan.
  • Ketika hasil bencana (seperti privasi atau insiden keamanan) mungkin terjadi.
  • Ketika keterampilan esoteris diperlukan.
  • Ketika tenggat waktu mendesak dan tidak dapat dinegosiasikan.

Namun, banyak proyek tidak mencentang kotak-kotak itu dan manajer perekrutan mereka harus mempertimbangkan insinyur yang berpengetahuan luas. Banyak keterampilan teknis, seperti pengujian dan dokumentasi kode, dan semua transfer keterampilan lunak (seperti komunikasi). Ketahanan penting bahkan ketika produk tidak berubah sepenuhnya; jika bagian yang Anda sewa untuk kios, seorang generalis dapat mengerjakan prioritas tertinggi berikutnya.

Representasi grafis dari pemberi kerja yang memilih pengembang dengan keahlian yang luas dan dangkal daripada yang memiliki keahlian yang dalam dan sempit

Mengingat pentingnya keterampilan yang luas, kita harus mendorong pengembang untuk melakukan diversifikasi, dan kita harus mengomunikasikan pentingnya pengetahuan yang luas kepada pemberi kerja yang mungkin terlalu fokus pada “pengalaman bertahun-tahun” dengan berbagai bidang dan keterampilan.

Tujuan akhirnya adalah rekam jejak klien yang puas; selain hard dan soft skill, itu membuktikan kemampuan insinyur untuk transisi ke daerah asing. Ini juga merupakan insentif yang kuat bagi pekerja lepas untuk tidak menjelajah ke bidang baru sebelum mereka siap melakukannya.

Menyerang Keseimbangan yang Tepat

Ketika keterampilan yang luas kurang dihargai, beberapa pengembang yang baik menganggur dan beberapa proyek yang baik kekurangan staf atau melebihi anggaran. Menuntut kecocokan keahlian yang sempurna adalah seperti menuntut pekerjaan di tempat, yang membuat lebih sulit untuk mencocokkan pasokan (tenaga kerja yang memenuhi syarat) dengan permintaan (pekerjaan yang bermanfaat).

Tak satu pun dari ini adalah argumen melawan keahlian domain; itu akan selalu berarti dan dihargai dengan mahal. Kita harus ingat bahwa keterampilan yang luas juga lebih penting daripada yang terlihat.