Captured by Igor Ovsyannikov

Ben nasıl uzman olucam?

Mert SIMSEK
6 min readOct 20, 2017

İddialı bir başlık atmak istedim bilmem oldu mu? Bu yazı altında sizlere uzman olmak için kesin kurallar veremeyeceğim malesef. Böyle birşey sanırım imkansız. Ama amacım bizim oluşturduğumuz beyin fırtınasına sizin de katılmanızı sağlamak ve farklı fikirleri paylaşmak. Çok uzatmadan konuya giriş yapayım.

Kısa bir giriş

Bizim sahibinden.com’da mobil ekip olarak oturtmaya çalıştığımız — bence bunu başardığımız — bir kültür var. Her perşembe mesai saatleri bittiğinde, bir odada toplanıp tech-talks yapıyoruz. Her ne kadar mobil ekip olarak tech-talksları yapıyor olsak da konular sadece Android & iOS üzerine olmuyor. Şu ana kadar yaptığımız konular;

  • Reactive Programming
  • Realm
  • Firebase
  • React Native
  • NodeJS
  • SOLID Principles
  • JSON API
  • GO lang
  • Inspiring Marketing Strategies
  • Blockchain & Bitcoin
  • App is done, what now?
  • Mobile Application Testing
  • GraphQL on Mobile
  • How to be an Expert?

Bu sunumları nasıl gerçekleştiriyoruz çok kısa bundan bahsetmek istiyorum. Bir trello board’umuz var. Burada merak ettiğimiz, bilgi sahibi olmak istediğimiz konuları giriyoruz. Bu konu hakkında sunum yapmak isteyen arkadaş üzerine alıyor 1–2 hafta bu konuyu araştırıp sunum hazırlıyor ve bunun üzerine tech-talks yapıyoruz. Sunum yapmak için o konuda uzman olmak zorunda değiliz tabiki de. Ve o sunum geçtiğinde hepimiz o konu hakkında en azından temel bilgiye ve nasıl bir teknoloji olduğuna dair fikir sahibi oluyoruz. Ve en önemlisi iletişim kuruyoruz, beyin fırtınası yapıyoruz ve tartışıyoruz. Fazla uzatmadan bu blog postun konusuna dönmek istiyorum.

Beyin fırtınası

Bugün günlerden perşembe ve bir aksilikten dolayı sunum yapacak arkadaşımız katılamadı. Ve yine toplantı odamızda toplandık ve ne üzerine fikir alışverişi yapabiliriz diye düşündük. Ve sonradan şöyle bir fikir geldi aklımıza.

Bulunduğumuz alanda kendimizi daha çok geliştirip uzman olmak için neler yapılmalı?

Evet bence konumuz gayet güzeldi. Tabi ki de bu sorunun belirli bi cevabı yok. Burdaki amacımız odadaki herkesin kendi perspektifinden bakması ve aslında öz motivasyonunu tetikleyecek şeyi kendi bulması.

Sunumu daha yönetilebilir bir hale getirmek için şu adımları izleyecektik.

  • Herkes aklına gelen koşulları söyleyecek. Bir yığın koşul listesi çıkaracağız.
  • Daha sonra herkes bunlardan 5 tanesine oy kullanabilecek.
  • Daha sonra beyin fırtınası yapıp herkes uzmanlığa giden yolda oy verdiği gerekli koşulları açıklayacak ve beyin fırtınası yapacağız.
  • Ve son olarak beyin fırtınasından sonra tekrar oylama yapacağız. Böylece düşünülüp konuşulduktan sonraki oylamada daha tutarlı sonuca ulaşacağız.(Beyin fırtınasından sonra çoğu kişi oylarını değiştirdi)

Koşul Yığını

Nasıl uzman olunur? Ya da takip ettiğimiz örnek aldığımız uzman yazılımcılar nelere sahipler? Artık soruyu nasıl sorarsanız. Bu soruyu sorup hızlıca herkesten cevaplar aldık ve şöyle rastgele bir liste çıktı karşımıza. Ve bu listede hepsinin listede olmasının kendine göre geçerli sebepleri vardı. Genel olarak neden listede bulunduğuna dair birer cümle ile açıklamaya çalışacağım. Daha sonra bizim seçtiğimiz ilk 5 i yazacağım. Şimdi bu maddeler için sunulan argümanlarla birlikte maddeler şu şekilde.

  • Yurtdışı teknik sunum yapmak: Teknik sunum derinlemesine araştırma gerektirir. Ve bu sunum ana dilde olmadığı zaman 2 kat daha fazla çalışma ve tekrar gerektirir.
  • Blog post yazmak: Öğrendiğimizi tekrar etmenin en iyi yolu yazmaktır.
  • Sertifika almak : Sertifika almak için çalışıp hazırlık yapmak gerekiyor.
  • Title almak (Google Developer Expert, Java Champion): Title almak hep community ayağının güçlü olduğunun ve sürekli kendini geliştirmede olduğunu gösterir. Tek seferlik değil sürekli gelişimi sağlar.
  • Community’e dahil olmak ya da Community oluşturmak: Yazılımcı toplulukta yer almak topluluktaki kişilerle fikir alışverişini sağlar. Böylece tek başına gelişmekten kat kat daha hızlıdır.
  • Open Source projeler oluşturup katkı sağlamak: Açık kaynak projeleri okuyup katkıda bulunmak öz motivasyonu tetikler ve hem kendi ihtiyaçlarını hem de başkalarının yazılım ihtiyaçlarını çözebilirsin.
  • Başkalarının yazdığı kodları okumak: Sadece kendi öğrendiğin bilgileri uygulamayı bırakıp başka yazılımcıların da yazılım problemlerinin üstesinden nasıl geldiğini inceleme fırsatı bulabilirsin.
  • Stackoverflowda cevap vermek: Ne kadar çok cevap vermeye çalışırsan o kadar farklı problemle karşılaşırsın. Ve problemle karşılaştığında bunu çözme kabiliyetini geliştirir ve bilgi birikimini arttırabilirsin.
  • Stackoverflowda soru sormak: Soru sormak cevap vermekten çok daha zordur. Eğer kendini geliştirmek istiyorsan soru sormalısın. Ne kadar çok soru sorarsan o kadar kendini geliştirirsin.
  • Teknik blog okumak: Yazılımda bir problemi çözebiliyor olabilirsin fakat bunu detaylıca anlatan farklı blogları okuyarak farklı anlatımlarla bilgini pekiştirebilirsin.
  • Konferanslara katılmak: Konferanslarda hem konuşmacılarla hem de katılımcılarla bilgi alışverişinde bulunabilirsin.
  • Refactor yapmak: Refactor yapmak biraz yanlış anlaşılabilir. Burda asıl anlatılmak istenen şu; zaten hali hazırda düzgün çalışan bir kodun var. Ve gayet düzgün yazılmış. Daha sonra bunu daha efektif hale getirecek bir teknoloji çıktığında dönüp bunu refactor edip sürdürülebilirliğini sağlıyor musun?
  • Alan dışı teknik bilgi: Farklı dikeydeki teknik kümeler bizim bakış açımızı genişletir. X sürede öğrenebileceğimiz bir bilgiyi, farklı teknik bilgi birikimine sahip olduğumuz için X/2 sürede öğrenebiliriz.
  • Kitap yazmak: Kitap yazmak en çok emek isteyeni. Çok emek beraberinde bolca tecrübe ve bilgi birikimi ve detay getirir.
  • Eğitim videosu çekmek: Diğer paylaşım kanalları gibi bu da başka bir paylaşım kanalı.
  • Düzgün bir kişilik: Bu madde belki yanlış anlaşılabilir. Buna daha sonra geleceğim :)
  • Döküman okumak: Bir dil, kütüphane, framework vs ne kullanırsak kullanalım öncelikle bunun dökümanını açıp baştan aşağı okumak.
  • Döküman yazmak: Oluşturduğumuz kütüphane, proje, framework vs dökümanını yazmak.
  • Sosyal medyada aktiflik: Burda bir örnek verildi toplantıda, bir yazılımcı arkadaşımız sosyal medyada blog yazıları daha fazla okunduğu için sürekli kendini motive edip yeni blog yazıları yazıyor.
  • Kendini tekrarlamamak: Zaten bildiğimiz bir şeyi tekrarlamak yerine yeni yöntemler keşfedip kendini geliştirmek
  • Yeni projelere başlamak: Her yeni proje bilgi birikimini genişletir. Her projede yeni bir şeyi tecrübe ederiz.
  • Farklı dinamiklerde takımlarla çalışmak: Takım arkadaşları teknik seviye olarak kişiyi en çok etkileyen etkenlerden biridir.
  • Mülakata girmek: Farklı ülkelerde firmalarla mülakata girerek oradaki kullanılan teknolojileri ve kendi eksiklerini görmek

1. Oylama

Yukarıdaki koşullar ve kısa açıklamaları hızlıca düşünülüp söylenmiş koşullar. Şimdi okuyup “yeaa bu ne böyle bence çok saçma” diyebilirsiniz. Demeyin :) çünkü beyin fırtınasında ortaya çıkan bir yığın sonuçta o.

Odadaki herkes 5 oy verebilecek diye bir kural koyduk. Ve bi 10 dk herkes kendi kendine düşünüp oylamayı yaptık. Sonrasında herkes seçimlerini savunup sebeplerini söyleyecekti.

  • Open source’a katkı (6 oy)
  • Yurt dışı sunum yapmak (4 oy)
  • Sertifika almak (2 oy)
  • Community’ye dahil olmak ya da Community oluşturmak (2 oy)
  • Refactor yapmak (2 oy)
  • Alan dışı teknik Bilgi (2 oy)
  • Kişilik (2 oy)
  • Döküman okumak (2 oy)
  • Kendini tekrarlamamak (2 oy)
  • Proje oluşturmak (2 oy)
  • Farklı Dinamiklerde takımla çalışmak (1 oy)
  • Kitap yazmak (1 oy)
  • Stackoverflow cevap vermek (1 oy)
  • Title almak (Google Developer Expert, Java Champion)(1 oy)

Gelişme

Tüm maddeler üzerine derin derin konuştuk. Gerçekten bu koşul uzman olmak için ve bu yolda ilerlemen için gerekli mi? sorusunu sorduk. Hepsini yazmak isterdim ama kısa ve öz tutmak istedim bu yazıyı. Bu arada, evet, yukardaki maddelerin hepsi birbirinden değerli ama bizim amacımız biraz farklıydı. ilk 5 koşulu seçmeye zorladık kendimizi. Argümanlarımız üzerine tartışırken oy sayısı arttıran koşullar Title almak, Kişilik ve Proje oluşturmak oldu. Bunları biraz daha detaylı anlatacağım sıradaki başlıkta.

2. Oylama

Bu oylamada oylarını birinden diğerine kaydıranlar oldu. Dediğim gibi önem sırasına göre sıralamak istiyorduk. Ve bizim perspektifimize göre ilk 5 şu şekilde.

  • Open source’a katkı sağlamak: Bu hepimizin ilk koşulu olarak belirledik. Open source projelere katkı sağlamak ve kullandığımız open source projeleri paylaşmak. Hem bizim gelişmemizi sağlar hem de diğer yazılımcı arkadaşların gelişmesine katkı sağlar.
  • Yurt dışı sunum yapmak: Kendi adıma konuşursam şimdiye kadar bir çok sunum yaptım. Tüm etkinliklerde sunum yapmak için hevesli bi şekilde “Hadi ben sunum yapayım” diye giriyorum. Sunum tarihi yaklaşınca, “keşke hemen ben yaparım demeseydim kim hazırlıcak sunumu şimdi!” demeye başlıyorum. Sunum yaptıktan sonra da “Harika, bu konuyu bildiğimi sanıyordum ama daha bir çok şey öğrendim! Tekrar yeni bi konuda sunum yapmalıyım!” şeklinde sonlanıyor. Bu paradox aslında üstünkörü öğrenme yerine derinlemesine öğrenme sağlıyor. Peki neden yurt dışı, Çünkü kendi sınırlarını daha çok zorluyorsun ve gerçekten kolay elde edilmeyen bir tecrübe elde ediyorsun. He yok yurtdışında yapmıyorsan yurtiçi sunumlarda bu dediklerimin hepsinin yine geçerli olduğunu düşünüyorum.
  • Kişilik: Kişilik konusu yanlış anlaşılmaya en elverişli konu sanırım. “Ya hu uzman olmakla kişiliğin ne alakası var?!” demeyin. Bize göre var. Eğer başkalarının gelişimini engelliyorsan, soru sorulduğunda yardım etmiyorsan, bilgi birikiminle egoist davranıyorsan, juniorlarının hata yapmasına izin vermiyorsan, sürekli yazılımsal hataları yüzüne vuruyorsan, fikir alış verişine açık değilsen kusura bakma o toplantı odasında uzman değilsin bizim taraftan bakılınca :)
  • Title almak (Google Developer Expert, Java Champion vs.): Bunun en büyük motivasyon kaynaklarından birinin olduğunu düşünüyorum. Olay sadece title değil tabiki. Buradaki Google Developer Expert i birazcık açmak istiyorum. Bu diğer community title’larında da geçerli olduğunu düşünüyorum. Buradaki linkte Google tarafında seçilen ve kendi uzman oldukları teknolojilerde tüm dünya üzerindeki yazılımcılara yardım etmek için can atan onlarca geliştirici var. Ve bu title a sahip oldukları için bunun getirdiği sorumlulukları da omuzlanıyorlar. Kendi alanlarında kendilerini sürekli güncel tutmaya çalışıyorlar. Uzman olma yolunda en büyük katalizörlerden biri olduğunu düşünüyorum.
  • Yeni projeler oluşturmak: Yeni projeler yeni deneyimleri beraberinde getirir. Tıpkı bir inşaat mühendisi gibi düşünebilirsiniz. Sürekli aynı binayı inşa etmek yerine farklı yapılar denemesi onu daha tecrübeli yapar. Bu yeni projeler oluşturmayı aslında projeyi yeniliklere açık tutmak olarak da ele alabiliriz kısaca.

Son olarak

Son olarak şunu da söylemek istiyorum. Yukarıdaki yazılanlar tamamen bir kaç arkadaşın bir araya gelip subjectif olarak değerlendirdikleri bir listedir. O yüzden “Vurmayın arkadaşlar!” demek istiyorum. Siz de bu yazının altına değerli fikirlerinizi paylaşırsanız sevinirim.

Kendi bir kaç fikrimi de beyan etmeden geçemeyeceğim. Umarım bu koşulların hepsini her zaman en iyi şekilde sağlar ve hiç bir zaman uzman olamayız.

--

--

Mert SIMSEK
Mert SIMSEK

Responses (9)