Genç Yazılımlılar İçin – I
Gerek yüzyüze görüştüğüm gerek ise email yoluyla bana ulaşan gençler, çok sıklıkla benden “yol gösterme” istiyorlar. Hepsine ayrı ayrı birşeyler yazmaya çalışıyorum ama bir müddet sonra bunları topluca ifade etmenin daha faydalı olduğunu düşünüp bu yazıyı kaleme aldım. “Yol gösterme” isteği ile ilgili öncelikle şu iki şeyi belirtmem lazım. Benden yol gösterme ve tavsiye isteyen gençler öncelikle hakkımda hüsn-ü zanda bulunup, bana büyük bir sorumluluk yüklüyorlar. Bu durum onların iyi niyetini gösterirken beni ise sıkıntıya sokuyor. Öte taraftan gençlerin bu isteği tamamen bir ihtiyaçtan kaynaklanıyor. Her toplumda, önden gidenler, bilgi ve tecrübelerini arkadan gelenlarle paylaşırlar; bundan daha tabi birşey olamaz. Bu konuda belki dikkat edilmesi gereken şeyin, herkesin kendi tecrübesinden elde ettiklerini paylaşıyor olmasıdır, dolayısıyla her paylaşım da tabi olarak pek çok şahsi kanıyı ve tecrübeyi içinde barındıracaktır. Ülkemizde yaygın olan düşünce yapısının taklitçi ve detaycı olduğunun çok iyi farkındayım. Yani düşüncemiz yapımızda özgünlük az ve soyut kavramlar yerine tek tek olaylarla ilgilenerek vaktimizi harcıyoruz. Tek tek olaylardan yola çıkarak, sistematik olarak, soyut bir düşünce dünyası kurgulamaktan çok uzağız. Dolayısıyla da büyük resmi görmekte zorlanıyoruz. Eğitim kurumlarımız, eğitim ve gelişimi, kuru malumat ile problem çözme olarak ele aldıklarından, soyut düşünce yapımızın gelişmesine katkıda bulunmuyor. Bu da tek tek ağaçları gören ve sayan ama ormanda olduğunu farkedemeyen bireyler ortaya çıkarıyor. Dolayısıyla önden gitmiş olanların bilgi ve tecrübeleri, ormanı farketmek için daha önemli hale geliyor. İşte acizane tavsiyelerim:
- Öncelikle kendinizi tanıyın. Yazılım dünyasıyla ilgili nelerden hoşlanıyorsunuz, neleri yapmak size zevk veriyor, merakınız ne yönde gibi sorularla başladığınız bu tanıma süreci, nelere yeteneğim var şeklinde daha zor soruların cevabını alacak şekilde daima aklınızın bir yerinde çalışır halde olsun. Kendinizi ne kadar erken tanırsanız o kadar isabetli karar verirsiniz. Bir kişinin kendini tanıması zor ve ömür boyu süren bir faaliyettir, bunun farkındayım. “Kendini bilmek”, dini olsun olmasın her hikmet kaynağı disiplinin en temel öğretilerindendir. Kendinizi tanıdıkça, toplumda kol gezen ideolojik söylemlere kanmaz, daha sağlıklı adımlar atarsınız. (Bu konuda “Her Zeki Öğrenci, Programcı mı Olmalı?” başlıklı yazıma gözatabilirsiniz.)
- Odaklanın. Gençlerde gördüğüm en temel sıkıntı, bir odaktan yoksun olmaları. Kendine bir konu belirlemiş ve o konunun üstadı olmak için var gücüyle çalışan gençler yerine, her çiçekten bir damla almaya çalışan gençler görmek çok daha ihtimal dahilinde malesef. Bu da pek çok konudan birşeyler bilen ama hiç birini tam olarak kavramamış, dolayısıyla da bir şeyi baştan sona ele alıp çözme yeteneğini haiz olmayan kişiler demek. Çok sık sahit olduğum şeylerden birisi: Hem Oracle veri tabanı, hem Java hem de Cisco için sertifika almayı planlamak ya da ne bileyim sadece birkaç yıllık kariyerinde üç-beş tane Java ya da .Net gibi heyula bilgi birikimine sahip yapılarla uğraşmış olup, hiç birinde bir projenin farklı katmanlarını, farklı vechelerini tam olarak görmemiş ve hiçbirinde yetkin bir duruma gelmemiş olmak. Günümüzde dünyasında “genişlik” yerine “derinlik” daha önemli. “Genişlik” ancak farklı ama ilişkili konularda derinleşerek elde edildiğinde anlamlı olur. Yüzeysel, “turistik” seviyedeki malumatın, yetkinlik açısından önemi yoktur. Dolayısıyla hedef belirleyin, odaklanıp, gerektiği kadar üzerinde çalışın, belli bir yetkinlik seviyesine gelin, sonra ilgili bir başka yan alana geçin öyle ki ikisi bir araya geldiğinde anlamlı bir bütün oluştursunlar.
- Bilgi hiyerarşisine önem verin. Temelleri anlamadan ileri konulara dalmayın. Yani daha iyi bir ifade ile “bilgi sahibi olmadan fikir sahibi olma” hastalığına kapılmayın. Unutmayın bu bizim milli hastalığımız. Gerçekliği kavramak için önce onu ciddiye alın, en temelinden başlayarak anlamaya çalışın, sonra üzerinde yorum yapın. Dolayısıyla okulda “Operating Systems” derslerine girmeden Android ya da Linux gurusu olma hayaline kapılmayın. Kendisine hayranlık duyduğunuz o işletim sistemlerinin ya da programlama dillerinin yaratıcıları ya formal ya da informal yollarla, ama muhakkak en temelinden başlayarak kendilerini yetiştirmişlerdir. Pek çoğu Stanford ya da MIT gibi okullardan doktora sahibidir. Pek çoğu, okuldayken “gerçek hayatta ne işimize yarayacak bu” diye sorduğumuz Matematik derslerini ya da hocasını beğenmediğimiz için derslerini astığımız mesela Algorithms dersine gereken önemi vermiştir. Formal bir eğitim imkanı bulamayanların ise bir şekilde tırmalayarak gerekli altyapıyı kazandıklarını görürsünüz. Dolayısıyla şu ya da bu şekilde, en temel Matematik, İşletim Sistemleri, Algoritamlar, Veri Yapıları vb. konularda gerekli altyapıya önem vermeden, aklınıza gelecek süper bir fikirle yeni bir Steve Jobs olmayı düşünüyorsanız, büyük bir ihtimalle ne eğitim ne başarı ne de Jobs hakkında fazla birşey bilmiyorsunuz demektir. Bunun için “Outliers” kitabı iyi bir başlangıç olabilir.
Şimdilik bu kadar. Aklıma geldikçe yenilerini paylaşacağım. Fikirlerinizi ve eleştirilerinizi her zaman beklediğimi ifade etmeliyim.
Toplam görüntülenme sayısı: 2301
Selman
18 Ekim 2011 @ 05:14
Özellikle 2. madde başlığında söylediklerinizle ilgili olarak; Maalesef ki derinleşmeden genişleyen bilgi birikimi yapısının önemli bir nedeni sektör şartları. İlanlara baktığımızda gördüğümüz ve şahsım olarak ilk küfrettiğim şeydir; A dan Z ye bilinen bütün yazılım teknolojilerinin aday tarafından biliniyor veya bu teknolojileri barındıran projelerde çalışmış olmasının beklenmesi. Küçük ve orta ölçekli yazılım evlerinde, hatta bir çok kurumsal şirketin bilgi işlem bölümlerinde bu derinleşmeyi sağlayacak bir yapı yine maalesef ki bulunmuyor. Hem PL/SQL, hem javascript-css, hem Java veya C# ( ki sadece bu ikisinden biri sizin de bahsettiğiniz gibi tek başına koca bir heyula), hem raporlama araçları “1” yazılımcı tarafından haiz olunması gereken yazılım teknolojileri…
Mustafa
18 Ekim 2011 @ 06:42
Sayın hocam, değerli tecrübelerinizi bizimle paylaştığınız için çok teşekkürler, Maltepe üniversitesi Mühendislik fakültesinden öğrenciler olarak bloğunuzu takip ettiğimizi bilmenizi isterim.
Akin
18 Ekim 2011 @ 09:35
Eyvallah arkadaşlar… Çok sevindim bunu duyduğuma.
Akin
18 Ekim 2011 @ 09:37
Derinleşmeden, sadece “turistik” seviyede bir bilgi ya da daha çok malumat ile işlerimizi yapıyor olma gerçeğini ortaya çıkaran nedenlerden birisinin, sektör şartları olduğu kesin. Ama unutmayalım ki “sektör” dediğimiz şeyi, “ben sen o” oluşturuyor.
Selman
19 Ekim 2011 @ 04:57
“Ben sen o” nun geliştirici kademesinde olanların yapabileceği derinleşerek, bu derinliğin anlamını bilgi ve tecrübe birikimi ile ortaya koyarak genişlik-derinlik farkı konusunda proje yöneticilerinde, daha üst seviyede yöneticilerde bir farkındalık oluşturmaktır.
Sözgelimi Hibernate API kullanılan bir projede hangi durumlarda dahi ortaya çıktığı bilinmeyen bir hatanın ne olduğu ve nasıl çözülebileceği konusunda fikirler üretebilecek kadar Hibernate API bilgi, tecrübesine sahip olmak mesela. İşte derinlik budur.
Coşkun
11 Şubat 2012 @ 09:05
tamam selman sen orda derinleş kendin
selcuk gural
23 Eylül 2013 @ 22:36
Benim anlattıklarınız hakkında yorum yapabilecek kadar bilgim ve birikimim yok ne yazık ki…Yazıyı okurken aslında farkında olduğum ancak bir türlü kendimi bu hastalıktan kurtaramadığımı tekrardan anladım.
Özellikle 2. madde benim açımdan bakıldığında harika özetlenmiş…
Tekrar tekrar teşekkürü bir borç bilirim, iyi ki sizin gibi sektöre öncülük eden insanlar var. Kafamdaki bir çok soruya bu ve diğer yazılarınızla çözüm yolu bulabileceğimi düşünüyorum.
Murat
20 Temmuz 2014 @ 20:21
Derinleşme konusu önemli bir konu özellikle bir konu hakkında “biraz biliyorum” diyebilmek için bile künhüne vakıf olma ihtiyacı hisseden birine göre ancak şöyle bir durum var, teknoloji o kadar hızlı gelişiyor ve o kadar hızlı “eskiyor” ki, mecburen genişlik, derinleşmeye fırsat bulamadan etkisine alıyor kişiyi, derinleşmek için ayırdığınız zamanda, bakıyorsunuz ki o alan eski ve demode olmuş, bu sebeple geri dnüp baktığınızda harcadığınız zamana acımaya başlıyorsunuz.
Bu durumu fark ettiğimde o pişmanlık geçtikten sonra, soyut olan yazılım dünyasındaki teknolojileri biraz daha soyutlaştırmayı denedim. Bu sayede teknoloji değişse ve gelişse bile öğrenme süremi oldukça kısaltmayı başardım. tabii bu derinlikten taviz vermeyi gerektiriyor. Ancak istenildiğinde istenen derinliğe inebilmeyi de başarabiliyorsunuz. Siz yeterli derinliğe ineceğinizde çoktan kalkmış bir teknolojinin derinliğine inmek gibi bir riski minimize etmiş oluyorsunuz.