Geniş ve Dar Beceri Setleri: Yazılım Mühendisliği Becerileri Gizeminden Arındırıldı

Yayınlanan: 2022-03-11

Her yazılım mühendisinin edindiği farklı becerilerden oluşan bir beceri seti vardır. Bir veya iki beceride uzmanlaştıysanız ve çok az şeyde uzmanlaştıysanız, bir beceri seti “derin ve dardır”; Herhangi bir alanda uzman olmadan her şeyden biraz yapabiliyorsanız, bu “geniş ve sığ”dır.

Çoğumuz, birkaç güçlü beceriye, birkaç ortalama beceriye ve birçok boşlukla ortada bir yerlerdeyiz. Bu makalede, geniş-derin spektrumu tartışmak ve geniş uca yaklaşmanın çoğu programcıya fayda sağlayacağını tartışmak istiyorum.

Yazılım Mühendisi Becerileri: Bir beceri setinin grafik temsili

Genişlik ve derinlik elbette görecelidir. Örneğin, web geliştirmede veya yalnızca istemci tarafı web geliştirmede veya yalnızca JavaScript'te uzman olabilirsiniz. Bunların hepsi bir anlamda “derin ve dar” becerilerdir, ancak sonuncusu ilkinden çok daha dardır.

Ayrıca, "derin ve geniş" ve "sığ ve dar" beceri setlerinin her ikisi de mümkündür: Birincisi, herkesin sizi işe almak istediği ve ikincisi, henüz anlamlı bir şey öğrenmediğiniz anlamına gelir. Çok yaygın olmadıkları için ayrıntılı olarak tartışmaya değmezler.

Yazılım Mühendisi Becerileri ve Beceri Setleri Türleri

Derin ve Dar

Derin bir beceri setine sahip olmak, en az bir alanda uzman olduğunuz anlamına gelir.

SQL alın: İlişkisel veritabanı teorisi hakkında her şeyi bildiğinizi varsayalım; MySQL, PostgreSQL, Oracle ve SQLite'ın artıları ve eksileri; sorguların nasıl optimize edileceği; bir veritabanının ne zaman ve nasıl denormalize edileceği vb. Bu özel beceriyi arayan müşteriler, sizi en kısa sürede ve iyi bir sebeple işe almak isteyeceklerdir. Koşarak yola çıkacak ve diğer pek az kişinin yapabileceği gibi değer sunacaksınız.

Ancak, proje genişlerse veya önemli ölçüde değişirse, eksik olduğunuz becerilere sahip programcılar tarafından değiştirileceksiniz veya destekleneceksiniz. Büyük değişiklikler olmasa bile, mimari değişiklikler önerebilir misiniz? İstemci, bir NoSQL veritabanıyla veya hiç veritabanı olmadan daha iyi durumda olabilir, ancak dar uzmanlığınız sizi bu alışılmadık seçeneklere karşı önyargılı olabilir.

Geniş ve Sığ

Öte yandan, alan uzmanı olmayan bir genelciyseniz, en yüksek üretkenliğe ulaşmadan önce yeni projelere hız vermek için biraz zamana ihtiyacınız olacak.

Örnek vermek gerekirse, belki bir Python projesi yapmanız gerekiyor ve o dili daha önce hiç kullanmadınız. Yine de, muhtemelen onun hakkında birkaç şey duymuşsunuzdur (dinamik, yorumlanmış, çoklu paradigma) ve diğer dillerle olan deneyiminiz geçişi çok daha kolay hale getirecektir.

Başlangıçta yazdığınız kod Pythonic olmayabilir (tupler, kavramalar veya oluşturucularla birlikte) ancak nereden başlayacağınızı bileceksiniz. Sürekli ilerleme kaydedeceksiniz ve iyi faktörlü modüllerinizi daha sonra geliştirmek kolay olacak. Teknolojiye olan geniş bakış açınız size başkalarının gözden kaçırabileceği fikirler verecektir.

Proje değiştiğinde, ekibiniz için bir yükümlülükten ziyade bir varlık olacaksınız.

Gerçek Dünyada Beceri Setleri

Coğrafi terimlerle, dar beceri kümeleri yüksek dağlara, geniş beceri kümeleri ise yaylalara benzer. Bu benzetmeyi kullanarak, tipik beceri setlerinde birkaç dağ, şurada burada bir tepe ve birçok ova olması muhtemeldir.

Dağların, tepelerin ve ovaların grafik gösterimi

Rastgele bir programcı SQL ve Python'da harika, web programlama ve algoritmalarda iyi olabilir ve çekirdek dökümleri, OAuth sunucuları veya yerel uygulamalar gibi diğer birçok şey hakkında gerçekten endişeli olabilir. Böyle bir programcı, bilgi boşluklarını bulup doldururken uzmanlık alanlarından yararlanmaya devam etmelidir.

Bu stratejinin onlara yıllar içinde en iyi şekilde hizmet etmesi muhtemeldir.

Programcıların Neden Becerilerini Çeşitlendirmeleri Gerekiyor?

Birçok proje, önceden tahmin edilemeyen şekillerde birleştirilmiş ilgisiz beceriler gerektirir. Geniş vasıflı mühendisler bunların çoğuna faydalı bir şekilde katkıda bulunabilirken, bir uzmanın beceri seti, birkaç işverenin kesin gereksinimlerini karşılayacaktır. Faturaları ödemek için yalnızca bir işe ihtiyacınız olduğundan, bu kısa vadede mutlaka bir sorun değildir.

Ancak…

Aşırı uzmanlaşma risklidir. Geleceği herkesten daha iyi tahmin edebiliyorsanız, yumurtalarınızı bir sepete koymak iyi olabilir, ancak bu yetenek nadirdir ve teknik becerilerle ilgisi yoktur. Bin yılımızda Windows programlama becerilerine olan talebi düşünün. Veya kendinize sorun: Birçoğumuz on yıl önce Android, Flash, Nokia veya Blackberry'nin ilgili yörüngelerini tahmin edebilir miydik?

Son olarak, üst düzey işverenler çeşitli becerilere çok değer verir. Facebook, ekiplere başladıktan altı hafta sonrasına kadar yeni işe alımlar atamaz. Google, şirket içi aktarımları teşvik eder ve birkaç dönüşümlü program çalıştırır. Serbest çalışmayı seviyor olsanız bile, seçeneklerinizi açık tutmanın zararı olmaz. Bu şirketler için çalışmayı düşünürseniz, en azından biraz genelci olmanız gerekir.

İkna olduğunuzu ve becerilerinizi çeşitlendirmek istediğinizi varsayarsak, bunu nasıl yapardınız?

Teknik Beceriler Nasıl Çeşitlendirilir ve Geliştirilir

Beceriler için para ticareti yapabilirsiniz:

  • Bilmediğiniz bir alana geçiş yaparken daha düşük bir oranı kabul edin. Her zamanki gibi %75 üretkenseniz, %25'lik geçici bir maaş kesintisi yalnızca adil olur. Çok yakında tekrar toparlayacaksın.
  • Bunları gerektiren işlere başvururken, istediğiniz becerilerle ücretsiz demo çalışması yapın. Değişime hazır olmadığınız ortaya çıkarsa, bu hala öğrenilmiş faydalı bir derstir.

Ayrıca beceriler için zaman takas edebilirsiniz:

  • Açık kaynaklı bir projeye katkıda bulunun. Tavsiye ve onay alacaksınız, topluma geri vereceksiniz ve belki de potansiyel işverenler veya iş arkadaşlarınız tarafından fark edileceksiniz.
  • Sevinç, ilham ve günlük çalışmadan bir değişiklik için kişisel bir proje yapın. Örneğin, React'i öğrenirken akıllı telefon öncesi Snake oyununu klonladım.

Öğrenme fırsatları aramalısınız, ancak bunu sürekli yapamazsınız. Toptal röportaj projem için, ikisi de fazla deneyimim olmayan Node.js ve Backbone kullandım. Eğlenceliydi, ancak gerekli öğrenme hızı aylarca sürdürülemedi.

İdeal olarak, uzun istikrar dönemleri (sabit bir çıktı ve gelir ile) ile yeni bir şey öğrenmek için kendinize meydan okuduğunuz kısa aralıklar arasında geçiş yaparsınız. İkincisini ne sıklıkta yapacağınız, mevcut becerileriniz, pazar talebiniz ve kişisel hedefleriniz gibi çeşitli faktörlere bağlıdır.

Genişlik İşverenler İçin Neden İyidir?

İşverenler söz konusu olduğunda, bazı senaryolarda her zaman derin beceriler gerekli olacaktır:

  • İşveren ve çalışan arasında çok az güven veya zaman taahhüdü olduğunda.
  • Felaket sonuçları (gizlilik veya güvenlik olayları gibi) muhtemel olduğunda.
  • Ezoterik beceriler gerektiğinde.
  • Son teslim tarihleri ​​acil ve pazarlık konusu olmadığında.

Yine de birçok proje bu kutuların hiçbirini işaretlemez ve işe alım yöneticileri çok yönlü mühendisleri dikkate almalıdır. Test etme ve kod dokümantasyonu gibi birçok teknik beceri ve tüm sosyal beceriler (iletişim gibi) aktarımı. Ürünler tamamen değişmese bile dayanıklılık önemlidir; Tezgahlar için kiraladığınız kısım ise, bir genel uzman bir sonraki en yüksek öncelik üzerinde çalışabilir.

Derin ve dar bir beceri kümesine sahip bir geliştirici yerine geniş ve sığ bir beceri kümesine sahip bir geliştirici seçen bir işverenin grafik gösterimi

Geniş beceri setlerinin önemi göz önüne alındığında, geliştiricileri çeşitlendirmeye teşvik etmeliyiz ve çeşitli alan ve becerilere sahip “yılların deneyimine” fazla odaklanmış olabilecek işverenlere geniş bilginin önemini iletmeliyiz.

Nihai hedef, memnun müşterilerin bir sicilidir; sert ve yumuşak becerilere ek olarak, bu, mühendisin alışılmadık alanlara geçiş yeteneğini kanıtlıyor. Ayrıca, serbest çalışanlar için hazır olmadan yeni alanlara girmemeleri için güçlü bir teşviktir.

Doğru Dengeyi Kurmak

Geniş becerilere değer verilmediğinde, bazı iyi geliştiriciler boşta kalır ve bazı iyi projelerde personel yetersiz veya bütçesi aşılır. Mükemmel bir beceri seti eşleşmesi talep etmek, arzı (nitelikli işgücü) talep (ödüllü iş) ile eşleştirmeyi zorlaştırması bakımından, yerinde çalışmayı talep etmeye benzer.

Bunların hiçbiri alan uzmanlığına karşı bir argüman değildir; her zaman önemli olacak ve cömertçe ödüllendirilecektir. Geniş becerilerin de görünenden daha önemli olduğunu aklımızda tutmalıyız.