14 Haziran 2014 Cumartesi

Bölüm 1 - Yazılım Uzmanlığı ve Uzmanları

Yazılımın gücü gün geçtikçe her alanda kendini gösteriyor. Artık ne sağlık alanında ne de askeri sahada yeterli donanım ve gerekli yazılım olmadan sistem kuramaz, hayatları kurtaramazsınız. Bu sadece bir örnekti, her alanda yazılım olmazsa olmazlardan bir gereksinim haline geldi. Peki ama böyle bir sektörü ayakta tutmaya çalışanlar kimler? Kimler yazıyorlar bu uygulamaları? Bir uygulamayı kodlayınca her şey bitiyor mu?


Uzun zamandır "İnsan Kaynakları" adına işe alımları sağlıyorum. Toplamda 350 - 400 kişiyle görüştüğümü var sayarsak azımsanmayacak bir tecrübe edinmişimdir herhalde. Bunun üzerine de ~25 kişilik bir ekibi yönettiğimi düşürsek "İstihdam" ve "Personel Yönetimi" adına bir şeyler söyleyebilirim artık.

Yazılım üretiminin Türkiye içerisinde ciddiye alınmadığı aşikar. Yazılımı sadece kod üretimi olarak gören bir zihniyetin neticesinde ortaya çıkan ölü projeler, yeniden sıfırdan yazılan, performanssız, profesyonellikten uzak projeler bunun kanıtıdır. Bunların nedenini iki ana başlıkta toparlayabilirim:

1. Personel Problemleri
Bu başlığın alt başlıkları diğer sektörlere de uygulanabilir ancak detayları yazılım sektöründeki tecrübelerime dayanmaktadır. Bir personelin işten ayrılma nedenleri Türkiye sınırları dahilinde (Memleketin havasından mı suyundan mı bilmem) yaptığımız her şey gibi trajikomiktir. Bana ne zaman birisi işten ayrılıyorum diye gelse mazeretlerini dinlediğimde kahkaha atmak ile oturup ağlamak arasında gitgeller yaşarım.

Nazarımda en iyi yazılımcı "Proje Üretebilen"dir, sadece çok iyi kod yazan, çok iyi fonksiyon yazıp çağıran (Back-end), sadece çok iyi arayüz (Front-end) geliştiren kişi değildir, bunlar projenin gereksinimlerine göre zaten yapılması gerekenlerdir. Bir yazılımcı bu alanlardan birinde uzman olabilir ve hızlı ilerleyebilir ancak proje gereksinimi dahilinde başka şeyler de yapabilecek kapasitede olmalıdır, daha az bildiği bir mecrada daha yavaş olacaktır elbette ancak zamanla eksik kaldığı konularda da hız kazanacaktır.

Dünyayı sarsan kişiler bu tip insanlardan çıkar. Bir Start-Up şirketini düşünürseniz her kişi bir çok rolü oynamak zorundadır ve gün gelip de şirket büyüdüğünde bir çok konuda bilgi sahibi, zor kandırılan, işine hakim Yöneticiler olur bu insanlar. İyi bir yazılımcı mutlaka iyi bir yönetici adayı olacaktır. Çünkü problem çözücü olur bu insanlar ve problem çözmek mühendislik bakış açısına sahip olmayı gerektirir. Mühendislik okumak ile mühendis olunmadığı aşikar, ihtiyaçlara doğru, dayanıklı, sürekli ve güvenilir şekilde cevap vermek zor iştir ve amiyane tabir ile sahnenin tozunu yutmayı gerektirir.

İşten ayrılma nedenlerine ve yazılımcıların genelde içerisinde bulunduğu yanlış hissiyata bir kaç örnek vermek isterim:

* Aynı işi yapan ikinci bir fonksiyonu yazan arkadaşa var olanı kullan dediğimizde "Beni kısıtlıyorsunuz" demiş ve ayrılmıştı. "Çok yazık" demiştim ilk duyduğumda, memleketin güzide okullarından mezun olan genç bilgisayarcılarda "Yeniden kullanılabilirlik", "Fonksiyonel Programlama" mantığı dahi oturmamış. Hiç bir bahanenin ardına saklanamayacak kadar sığ bir bakış açısı.

* Front-end / Back-end tercihi ile ayrılan arkadaşlarımız oldu. Sektöre "Yazılımcı" adı ile salınan "Front-end Developer" tabirinin bir neticesi olarak değişen bir algı maalesef. Front-end (Arayüz) Development bir meslek olsa da projenin yazılım ayağının bir parçasıdır ve bu mesleği icra edenlere Web Developer denmez. Sadece Back-end'den anlayan bir Web Developer ancak ve ancak kulağı bilmeden Örs, Üzengi ve Çekiç hakkında yorum yapan ve kendi adına "Uzman" diyen bir doktora benzer. Bir sorunu çözmek için en az iki kişiye ihtiyaç duyan insan kalabalığından ibaret firmalar çıkar ortaya. Daha kötüsü kendi başına proje çıkaramayan insanlar türer.

* Bir de ArGe mevzusundan dolayı dert yananlar var. Elbette her firmanın bir ArGe stratejisi olmalıdır ancak unutulmamalıdır ki dünya üzerindeki hiç bir firmanın her personeli ArGe'ye yönlendirecek, "Hadi hep birlikte ArGe yapalım" diyebilecek bütçesi yoktur. Firmalarda plan ve bütçe dahilinde ArGe yapılır. Memleketimizde ArGe, "Eğitim" ile karıştırılır daha çok. Yeni bir şeyler üretemiyorsak, var olanı öğrenmeye çalışıyorsak bunun adı "Eğitim"dir. Bu konuda firmalar eğitimler düzenleyebilir ancak her konuda eğitim de mümkün değildir. Bu noktada eksiğini gören kişinin de kendi çabası gerekir, kendi zamanından feragat ederek eksiğini gidermesi gerekir.

* C# ile kod yazmış ve adına uzman yazılımcı diyen kişilerin VBNet görünce 011000100110111101101011 görmüş gibi tepki vermesi de takdire şayandır. Hayattaki tek uzmanlığı C# olan programcı, ağız seçen dişçiye benzer. Kendinde mühendislik görenin yazılım dili bağımlılığı olamaz.

1.1 Kalite Anlayışına Sahip Olamamak
Bir çok iş verenin ve yazılımcının eksik kaldığı nokta sanırım budur. İşverenler için kısa vadede karlılığı artırmanın en kolay yolu kaliteden ödün vermektir, ancak uzun vadede ölümcül bir hatadır. Para tatlı geldiğinden çoğunluk kısa vadeyi seçer, hal böyle olunca bu firmalarda görev almış yazılımcılara da kaliteyi ve kötünün neden kötü olduğunu anlatmak çok zorlaşır, çünkü kötü şeylere kolay alışılır.

Alışkanlık dediğimiz şey eğer iyiyi barındırıyorsa mükemmeliyetçiliğe götürür, kötüyü barındırıyorsa da felakete. Maalesef sektörümüzde de kötü alışkanlıklar bir hayli fazla. Yazılımcılık hayatımın ciddi bir kısmında iyi yazılmayan projelerin iyileştirilmesiyle uğraştım, Böbrek-Oriented Programming ile Türk Yazılım Sektörünün ne hale getirildiğini bilfiil gördüm.

Kötü ürün üretmek her sektörde müşteri ve itibar kaybı iken yazılım sektöründe olağan karşılanıyor ve normalleştiriliyor, belki de sektörel olarak en büyük tehlike de budur. Bu habitat içerisinde yetişen yazılımcılar da doğruyu sorgulamadan, yanlışı doğru kabul ediyor ve içi boş uzmanlar olarak hayatlarına devam ediyorlar.

Bir firma ancak çalışanları kadar değerlidir ve çalışanların ürettiği kaliteli ürünler o firmayı diğerlerinden ayrı kılar. Kaliteyi sıralamada aşağıda tutan bir firma kendi ölüm fermanını imzalar ve buna neden olan elemanlar da bir gün işsiz kalmaya mahkumdur.

Bir şeye vakit ayırıyorsanız en iyisini yapmak zorundasınız. Çünkü zaman, insan hayatında geri kazanılamayan tek şeydir ve her zaman söylediğim gibi sadece kişinin kendi zamanı değildir kaybolan, aynı zamanda "Milli Servet"tir. Zamanı iyi değerlendiremeyen, değer üretemeyen insanların yaşadığı memleketlerin sokaklarında mutsuz insanlar gezer.

1.2 Müşteri Bakış Açısına Sahip Olamamak
Yazılımcıların genelde yaptığı bir yanlış vardır: Müşterinin ihtiyaçlarını anlamadan, ürettiği şeye müşteri gözüyle bakmadan geliştirme yapmasıdır. IF'ler ve ELSE'lerden öte, ihtiyacı karşılamaya yönelik iş yaptıklarının bilincinde olmamaları da tekrar tekrar yazmaya, zaman kaybetmeye neden olur. Müşteri isterini karşılamayan yazılımların kullanımının ne kadar zor olduğunu az çok herkes tecrübe etmiştir. Tabi burada müşterinin eksikleri muhakkak olacaktır, eksik aktaracak ve yahut anlık ihtiyaçlarına göre ve bütçesine göre hareket edecektir. Ancak yazılım yapmak demek danışmanlık anlamına da gelir ve müşteriyi yönlendirici, bilgilendirici olmalıdır.

1.3 Zamanı Yönetememek
Çoğu insan kendi zamanını yönetmekten acizdir. Hep az gelir 24 saat. Hep daha fazlasına sahipmişiz gibi planlar yaparız. İşte bu yüzden proje bitiş tarihlerinde (Deadline) sabahlamak zorunda kalırız, çünkü o zamana kadar hep "daha vaktimiz var"dır. Bu yüzden projeler ötelenir ve bütçeler aşılır. Zamanı yönetmek en zorudur ama en yapılması gerekendir. Ciddi bir disiplin gerektirir çünkü. Bir şeye ayırman gereken vakti ayırman gerektiği vakitte ayırman gerekir, yoksa ötelenir, sarkar, başka şeyleri sarkıtır. Domino etkisi denir buna ve bütün planları alt üst eder, tekrar tekrar yönetim zamanı ayırıp bütün süreci tekrar tekrar revize etmek gerekir. Bir kişinin yaptığı hata diğer herkesi çok net ve tartışılamayacak şekilde etkiler. En öncelikli olarak ne kadar zamana ihtiyaç olduğunu, ne kadar kaldığını, kalan zamanın riskini rutin aralıklarla şahsi olarak ve proje genelinde ölçmek gerekir. Çünkü "Sen uyursan herkes ölür!".

1.4 Erken Olgunlaşmak
Y nesli kuşağında en çok rastladığım problem bu. Bir tekkeye giden talebe 2 yılda ne kadar derviş olursa, nazarımda yazılımcı da bu sürede o kadar uzman olur. Zamane nesil (Yazar burada yaşlanmış olduğunu anlatmaya çalışıyor) henüz kapıdan girerken dervişe yanlış yolda olduğunu anlatmaya çalışıyor artık.

Oysa ki tecrübe proje üretimindeki kilit noktadır ve kolay kazanılamaz. Zaman ister, emek ister, hatalarından öğrenmek ister, göz yaşı ister, olgunlaşmak ister, müşteriden fırça yemek ister...

Steve Jobs: Stay hungry, stay foolish

Hayatta edindiğim felsefelerden en önemlilerinden birisi "Biliyorum diyenden korkacaksın". Çünkü bilmek görecelidir, buna dair çok güzel bir atasözümüz vardır "el yumruğu yemeyen kendi yumruğunu değirmen taşı sanır". Kendi gelişimine bakıp "ben oldum" denmez, her karşılaştırma bir referans noktası ister. Olduğunu zannediyorsa birisi, muhakkak referans aldığı kişi olmamıştır, eksiktir, referans noktası değiştirilmelidir.

Kişi asla bilmek ile tatmin olmamalıdır, hele ki yazılım gibi dinamik ve değişken bir sektörde. Her zaman aç, her zaman yetersiz görmelidir kendini. İnsanın kendine yapacağı en iyi yatırım budur.

1.6 Eğitim Yetersizliği
(Yine) Maalesef eğitim sistemimizin ürettiği nesillerde "hazırcılık", "biri bana anlatsın" mantığı çok yaygın. Araştırmak yerine birinin anlatmasını beklemek, şirket değiştirmek ve sonrasında merak ettiği şeyler konusunda hayal kırıklığına uğramak da sektörel açıdan tatminsiz elemanlar olmasına yol açıyor, öz geçmişlere baktığınızda kısa aralıklarla çok iş değiştirenleri görürsünüz. Genelde mazeretler çalışılan yerin yetersiz olduğuna dairdir, alt alta toplasanız toplam tecrübeleri 2-3 yılı geçmez, hep merak etmişimdir acaba neyi biliyorlardı da neyi yetersiz buldular, tam bir muamma. Daha doğrusu şımarıklık. Şahsen bu fikirde olan arkadaşları mecbur kalmadığım müddetçe görüşmeye dahi çağırmıyorum, çünkü güvenemiyorum, çünkü güvenin temelinde sadakat yatıyor, her yıl iş değiştiren bir kişiye iş veren olarak nasıl güvenebilirsiniz ki?

Bizim çocukluğumuzda öğretmenler haklıydı ve biz dayak yediğimizde kesin bir haltlar karıştırmışızdır diye bakılırdı. Şimdi sınıflarda kalma yok, okula 1 gün dahi gitse öğrenci geçiyor, liselerde çarpım tablosunu bilmeyenler var, 20 yıl Türkçe eğitim alıp da Türkçe'yi kullanmasını bilmeyenler var, hazır cevap olup da bir türlü soracak soru bulamayanlar var, ne zaman bir şey istese o anda sahip olanlar var. Yani zorlanma yok, her şey bir tık kadar kolay. Elbette istisnalar her zaman vardır, okuduğu okul, aile yapısı gibi parametrelerle farklı olanlar vardır ancak genele vurduğunuzda durum hakikaten vahim. Kolaycılığa alışmış nesiller yetiştirmemeliyiz, bir şeylere sahip olmak için çalışmak gerektiğini bilmesi gereken nesiller yetiştirmeliyiz. Sayısız üniversite açıp, içini boş derslerle ve boş kafalarla doldurmamalıyız. Öğretmenler yetkin olmalı ve sadece müfredat anlatılmamalı, sorumluluk bilinci, iyi/kötü gösterilmeli. Sadece öğrencilere yüklenmek kolaycılık olur, buna neden olan sistemleri değiştirmemiz gerekir. Bu noktada aileler de, devlet de, öğretmenler de kendini gözden geçirmeli ve nasıl nesiller yetiştirdiğini görmelidir.

Ben daha okula bile başlamamışken babam elimden tutar sanayi bölgesine götürür çalışan çocukları gösterirdi. "Okumazsan böyle olursun". Yağ, kir, pas. Kötü gelirdi gözüme. Ancak şimdi bu işleri yapabilecek beceriye sahip ara elemanları dahi eğitim sistemimizle kazanamıyoruz. Artık herkes üniversite mezunu oluyor ve kendilerine yakıştıramıyorlar bir çok şeyi. İlk iş görüşmelerinde yetişmiş eleman maaşı istiyorlar ve alamıyorlar, sonra da gelsin KPSS, "Devlete sırtı daya".

Suç kimin?

Hiç yorum yok:

Yorum Gönder