5 puan yazan spilist2 2021-12-04 | 7 yorum | WhatsApp'ta paylaş

Son zamanlarda öğrenme, gelişim, üretkenlik gibi başlıklar üzerine sürekli düşününce böyle bir konu merak ettim.

Daha da ileri giderek, sizce iyi bir geliştirici ile olağanüstü bir geliştirici arasındaki farklar nelerdir?

İsterseniz yanıt verirken 'geliştirici'yi, içinde bulunduğunuz ya da iyi bildiğiniz başka bir rol/meslekle de değiştirebilirsiniz. (ör. tech lead, CTO, CEO, kurucu, tasarımcı, PM, ...)

Ben olağanüstü geliştiricilerin ortak noktalarının büyük ölçüde şu üç şey olduğunu düşünüyorum.

  • Sorunu fark etme: Başkalarının sorun olarak bile görmediği şeyleri keşfeder ve iyileştirme fırsatlarını bulurlar.

  • Sorunu tanımlama: Sorun durumunu ve nedenlerini çok çeşitli katmanlar ve bakış açılarıyla ele alır, şimdiye kadarki deneyimlerini örüntülere dönüştürerek sorunu çok daha kolay (ya da daha etkili, daha kökten) bir probleme indirgerler.

  • Sorunu çözme: Seçilebilecek birden fazla çözümü düşünebilir, her çözümün trade-off'larını anlayabilir ve mevcut organizasyonun durumuna uygun çözümü seçerler. Bu kararı hangi noktada, hangi sinyallere bakarak değiştireceklerini de bilirler. Ayrıca çözüm yöntemini küçük birimler halinde, hızlı geri bildirim alabilecekleri bir şekilde uygularlar.

7 yorum

 
benjamin 2021-12-17

Moda anlayışı sıfır.

Ortak özellik dersen aklıma gelen tek şey bu.

Yarısı şaka yarısı ciddi..... haha

 
xguru 2021-12-04

Temelde ben de geliştiricinin sorun çözen kişi olduğunu düşünüyorum.

Bunu ille de geliştiricilerle sınırlı konuşmak gerekmeyebilir ama ben, olağanüstü insanların ortak özelliği olarak "bağlantı kurma"yı seçerdim.

Bilgi, deneyim, fikir gibi pek çok şey insanın zihninde bulunuyor; bence önemli olan, bunları ne kadar iyi birbirine bağlayabildiğidir.

Bir sorun fark edildiğinde çözüm aklına gelmesi birinci düzey bir bağlantıdır,

ama sorunla sorunu bağlayıp daha karmaşık durumları öngörmek ve başka çözümler bulmak da bir bağlantıdır,

çözümle çeşitli fikirleri birleştirip daha basit, daha esnek ve daha üstün bir çözüm ortaya çıkarmak da bir bağlantıdır diye düşünüyorum.

Sadece geliştirme tarafında değil, geliştirme ile iş tarafındaki unsurları ilişkilendirerek düşünmek ya da birbiriyle hiç ilgisiz şeyler arasında bağ kurmak da günümüzde çok önemli bir yetenek olabilir diye düşünüyorum.

 
spilist2 2021-12-04

Facebook'ta da sormuştum; Kim Chang-jun bana bir makaleye bakmamı öneren bir yorum bırakmıştı. Bunu neden düşünemedim diye hayıflanıyorum.

2015 tarihli “What Makes a Great Software Engineer?” makalesinin 150 kez atıf aldığını görünce okumayı düşünüyorum.

https://ieeexplore.ieee.org/abstract/document/7194618

 
guswns1659 2021-12-15

spilist2 merhaba! Sanırım bu soruyu Facebook'ta da paylaştığınızı görmüştüm :) Benim de sürekli düşündüğüm bir konu ama, acaba makale içeriği için özellikle önerebileceğiniz bir şey var mı?

 
spilist2 2021-12-15

Sanırım makale bir doktora tezi (dissertation); PDF'e göre tam 300 sayfa. https://digital.lib.washington.edu/researchworks/bitstream/…

Bu yüzden henüz sadece 2. bölüme kadar (introduction, related works) okuyabildim ama sadece buraya kadar bile içerik çok hoşuma gitti. Cümleler de zor olmayacak şekilde yazılmış. Tavsiye ederim.

 
guswns1659 2021-12-29

Paylaştığınız makaleler arasında 6. bölümün en kritik kısmı gibi göründüğü için okudum haha, içerik gerçekten güzelmiş! Bir kez daha kendime dönüp bakmamı sağladı!! haha, teşekkür ederim.

 
spilist2 2021-12-04

Soruyu ortaya atıp Google'da arayınca birkaç yazı gözüme çarptı. 10x engineers diye bir anahtar kelime de varmış.

https://linkedin.com/pulse/great-engineer-vs-good-marissa-fayer-mba/

  • İyi geliştirici, problemleri çözmek için özel araçlara sahiptir. İyi geliştirici sistematik ve akılcıdır; her açıdan bakar ve mümkün olan tüm giriş/çıkışları analiz eder.

  • Üstün geliştirici, yukarıda bahsedilen tüm yetenekleri temel alarak bunları hemen kullanılabilir çözümlere uygular. Halihazırda bilinen kalıpları (bilim ve matematik ilkeleri, yalın geliştirme prensipleri vb.) yaratıcı biçimlerde yeni gerçek hayat problemlerine uygular.

  • En üstün geliştiriciler dinlemeyi bilir. Probleme kulak verir, paydaşlara ve onların değer verdikleri şeylere kulak verir, pazara kulak verir, geri bildirime kulak verir. Ve yaratıcı yöntemler düşünmesini sağlayan iç sesine kulak verir.

==

https://www.quora.com/How-do-you-identify-a-good-vs-great-engineer

Cevap çok fazla ama... en çok oy alan birkaçına bakarsak:

  1. (Konveyör bandına vantilatör getiren kişi örneğini vererek) Tembel insan her zaman çalışmamanın yolunu bulur. Tembel mühendis en iyi mühendistir.

  2. İyi mühendis, kendisinden istenen problemi çözer. Bazen kendi teknik yetkinliğini geliştirmek için dersler alır. Üstün mühendis ise kendisinden istenenin bir adım ötesine geçer.

  • İnsanlar soruları olduğunda onu bulur.

  • Sürekli öğrenir.

  • Bildiklerini sürekli paylaşır.

  • Doğru olduğuna inandığı şeyi savunur ama ne zaman vazgeçmesi gerektiğini de bilir.

  • Elini taşın altına koymaktan çekinmez.

  1. Kötü mühendis, sistemde bir bug olduğunda neden düzeltmesinin zor olduğuna dair bahaneler üretir. İyi mühendis, kendi uzmanlığına dayanarak bug'ı düzeltir. Üstün mühendis ise verilen problemin arkasında gizlenen anlamı bulur.
  • Diğer tüm sistemlerde benzer bug'lar var mı (veya zaten düzeltilmiş mi) diye kontrol eder.

  • Benzer bug'ların tekrar yaşanmasını önleyebilecek uzun vadeli çözüm veya tasarım önerir. (Her çözüm arasındaki cost/benefit analysis ile birlikte)

  • Kendi uzmanlık alanının dışına da bakarak, başka grupların benzer bir sorun yaşayıp yaşamadığını araştırır. (Veya onlarla zaten iletişime geçmiştir)