8 Ağustos 2015 Cumartesi

iyi bir programcı nasıl olunur?



Ödüllü bir yazılımcıdan, kaliteli yazılımcı yada diğer bir yaygın kullanım ile programcı olmanın reçetesi..

Onur Kazgan,ortaokuldan bu yana kendini yazılıma adamış bir insan. Onun ustalığı uluslar arası bir yarışmada alığı birincilik ödülüyle tescil edilmiş durumda.

2002 yılında Amerika’da yapılan PocketPC Zirvesinde Yahoo Messenger, AOL Instant Messenger, MSN Messenger Force gibi güçlü rakiplerini arkasında bırakarak PocketCHAT adlı IRC client uygulamasıyla ödül aldı. Bununla ilgili detaylı bilgi için http://www.sspocketchat.com/about.aspx adresine bakabilirsiniz. Onur’la “iyi bir yazılımcı nasıl olunur?” başlıklı bir röportaj yaptık.

Aşağıdaki metni okurken gerçek bir başarı hikayesi ve bu hikayenin sahibinin görüşlerini öğrenmiş olacaksınız.

Onur’un özellikle üzerinde durduğu şey, işinizi iyi yapmaya odaklanmanız ve çok çok basit de olsa bir yerlerden başlayarak işin içine girmeniz. “KODLAYIN, KODLAYIN, KODLAYIN”

Sevgili Onur aynı zamanda bir işveren. Kendi yazılımevini kurdu ve başarı grafiğini yükselterek ilerlemeye devam ediyor. Onur’a bir profesyonel olarak değil de kendi işinin sahibi olarak sektörde yer almak isteyenler için de görüşlerini sordum. O da tüm samimiyetiyle deneyimlerini bizimle paylaştı.
Teşekkürler Onur, başarılarının artarak devam etmesi dileklerimle. Röportajı yapan,tertip eden ve ekleyen Kadir Çamoğlu'dur.

KÇ: İlk yazılımla tanışman nasıl oldu?
OK: 1992 senesinde büyük çabalarla aldırmayı başardığım Commodere 64’ümle, Basic dilinde
dergilerden bulduğum kodları denemeye başladığım sıralarda tanıştım. O senelerde yazılım için program kelimesini kullanıyorduk tabii ki. İlerleyen senelerde ise DOS Basic ve Visual Basic 4.0 ile devam eden bir süreçte yazılımla amatör olarak ilgilenmeye devam ettim. Şimdi ise ekip arkadaşlarım ile birincil olarak .NET C# ile yolumuza devam ediyoruz.

 KÇ: Yazılımı bir meslek olarak baştan seçmiş miydin? Yoksa bir tesadüf sonucu mu yazılım evi sahibi oldun?
OK: Lise başlarından beri meslek olarak bilişim teknolojileri kesinlikle tek çalışmak istediğim alandı. Üniversite öncesinde ise tanıdık firmalara basit uygulamalar geliştirerek (VB 4.0) hem kendimi geliştiriyordum hem de meslekten ilk gelirlerimi elde ediyordum. Lise sonrasında 1 sene gecikme ile kazandığım üniversitede aynı bölümü okumam da bu süreci şüphesiz çok hızlandırdı. Böylece diğer alternatif konuları eleyerek daha da odaklandım. Yani hobisini meslek olarak yapabilme şansına sahip olmuş kişilerdenim. Şu anda da hala eskisi kadar keyif ve heyecan duyuyorum. Sadece eskisi kadar platformlarda hızlı sürüm atlamıyoruz, daha tutucuyuz. Önce olanı sindirip, sonuna kadar çözüm sağlayıp, yeni platformun oturmasını bekliyoruz. Bu da yazılımevi sahibi olmanın ve birçok projenin sorumluluğunu taşımanın sonuçlarından biri tabii ki. Yazılımı meslek olarak yapmak istiyenlere tavsiyem; eğer gerçekten bu işi yapmak istiyorsanız şartlar sizi neye zorlarsa zorlasın peşini bırakmayın. İhtiyacınız olan sadece bir bilgisayar. Sizi destekleyen çok fazla kaynak bulacaksınız. Yazılım işini sadece çok fazla para olduğunu düşündüğü için yapmak isteyenlere tavsiyem ise; öncelikle bu işi sevip sevmediklerini gözden geçirsinler. Ve tabii ki algoritma yeteneklerini. Bu ikisinden biri eksik olduğu zaman –özellikle de keyif almak- mutsuz ve sıkıntılı bir iş hayatı sizi bekliyor olabilir. Unutmayın ki her yazılımcının kendini gördüğü son nokta bir kafe sahibi olduğudur :)

KÇ: İyi bir yazılım mühendisi olarak kendini yetiştirmek için neler yaptın? Sence bunlardan en etkilisi hangisiydi? Kendini yetiştirmek isteyenlere tavsiyelerin nelerdir?

OK: 90’lı yıllarda her şey yeni şekilleniyordu. Özellikle Türkiye olarak da süreci epey bir geriden takip ediyorduk. Çoğu yeni yazılımcı bilmez belki, İnternet yaygın olmadığından onun yerine BBS’leri kullanırdık bilgi paylaşımı için. Tabii ki değişim ve gelişim hızı tahmin edilmeyecek şekilde hızlı arttı sonrasındaki yıllarda. O dönemlerde kendimi geliştirmek için yaptığım tek şey vardı tabii ki; günün çoğunu –bazen tümünü- bilgisayar başında geçirmek. Her gördüğüm yazılımı indirmek, denemek, kullanmak. İşletim sistemlerini kurcalamak, bozmak, defalarca yeniden kurmak. Bu çalışmaların en büyük faydası ne kadar çok sorunla karşılaşırsanız o kadar çok çözüm üretebilme yeteneğiniz artıyor. Özellikle yazılım geliştirmeye başlayan kişilerin bence en büyük eksiklikleri bu. Kod yazmak işin en kolay tarafı. Ancak karşılaşılan hataları analiz edebilmek, sorunları gidermek, çözüm üretmek en önemli ve değerli bilgi bence. Yeni ve eski nesil yazılımcılar arasındaki en temel fark da bu zaten. Kendini geliştirmek isteyenler için genel olarak tavsiyelerim şunlar; • Popüler tüm yazılım dillerinin kodlama yapısını az-çok bilin, ancak sadece bir ya da iki tanesine odaklanın. (Ben bir yazılımcının birçok dilde aynı mükemmele yakınlıkta yazılım geliştirebileceğine inanmıyorum. Zaten sektörün bir sürü dili bilene değil, tercih edilen dili en iyi ve en etkin şekilde kullanan elemana ihtiyacı var. Zaten siz bir şey öğrenirken arkanızı döndüğünüzde yenisi çıkıyor. Yani “Hoca aslında temel programlamayı bilmek yeterli, dil yapısını bildikten sonra, tüm dillerde proje yazarsın!” yaklaşımı bence doğru değil. Bu sizin sadece algoritma geliştirme yeteneğinizle ilgilidir. Bir yazılım geliştirme platformunu etkin kullanmak için ona uzun süre odaklanmanız gereklidir. Tabii ki bu sizin yazılım dünyasındaki kalite anlayışınızla da doğru orantılıdır.)

• Genel olarak işletim sistemlerini araştırın, bilin. Yazılım geliştirdiğiniz işletim sistemini ise çok iyi bilin. İşletim sistemi çok iyi bilinmeden kaliteli yazılım geliştirilemez.
 •Eğitim ve seminer fırsatlarını kaçırmayın. Bir konu hakkında fikir sahibi olmanın en hızı yoludur.
 • TCP/IP’yi ve popüler iletişim protokollerini (FTP, HTTP vb) iyi bilin, nasıl çalıştıklarını öğrenin. Ağ bağlantısı kullanmayan yazılım yok artık.
• Kesinlikle yeniden kullanılabilir kodlar geliştirin. Kod kütüphanenizi güncelleyin ve geliştirin. (Bana kod kütüphaneni göster, sana nasıl bir yazılımcı olduğunu söyleyeyim :) )
• Olabildiği kadar basit (karmaşık olmayan) çözümler üretin ve kodlar geliştirin.
• Kesinlikle ama kesinlik temiz kod yazın. Mili/saniye mertebesindeki performans için, kolay okunabilir kodlamadan vazgeçmeyin. Ufak bir ilave donanım ile kaybettiğiniz performansınızı geri kazanırsınız, ama spagetti kodlarınızı hiçbir şekilde geri çözemezsiniz.
• Kolay ve okunabilir kod yazmak için kafanızda ne tür algoritmalar için ne tür yapılar kullanacağınızı belirleyin ve bunu alışkanlık haline getirin. Yeni ve daha basit bir yapı bulduğunuzda geri dönüp eski kodlarınızı mutlaka değiştirmeye çalışın. 100 deneme çöp projeniz olacağına, 5 profesyonele yakın geliştirilmiş temiz uygulamasınız olsun.
• Kodlarınıza mutlaka yorum yazın. Her satırına değil, ama her bloğuna.
• Yazılımlarınızda kesinlikle sıfır yama ile proje geliştirmeye özen gösterin. Yama kullanmanızı gerektirecek mimarilerden kaçının.
• Yazılım geliştirirken, özellikle form ve arabirim tasarlarken diğer profesyonel uygulamalardan örnek alın. Onların nasıl yaptıklarına bakın. Yeniden keşfetmektense önce zaten keşfedilmiş olanı görün. İlk projelerinizde bunu aşmaya çalışmayın. Önce günceli yakalayın. Ötesine geçmek için ise biraz deneyim sahibi olmayı bekleyin.
• İyi bir kullanıcı olmadan, iyi bir yazılımcı olamazsınız. Yazılım geliştirirken kullanıcı kullanım alışkanlıklarına dikkat edin. Yazılım geliştirirken evrensel arabirim kısayollarına dikkat edin.
 • Yazılımcı olarak dikkat etmeniz gerekenlerden biri de müşteriyi doğru çözüme ikna etmektir. Eğer müşteri Windows uygulaması ister ve “kontroller arasında Enter ile geçilsin” der ise, bu konuda onu doğru olana ikna etmelisiniz. Bu tutumu çözümün her yerinde uygulamalısınız.
(Deneyimle sabittir ki, müşteri tercihine bırakılan her proje kaliteden uzaklaşır ve ileride karmaşık sorunlar yaşanmasına zemin hazırlar.)
Kendinizi proje ve ürün geliştirmek konusunda ilerletmek için; o Kendi kendinize ya da ekip arkadaşınızla bir konu ile ilgili başından sonuna kadar gidecek bir proje yapın. Bu konu yeni olmak zorunda değil, hatta olan bir şeyi yeniden, aynı şekilde yapmaya da çalışabilirsiniz. Ancak kendinizin de kullanabileceği bir proje seçmeye özen gösterin. Hem müşteri, hem de üretici olun. o Sıfırdan analiz edin. Sıfırdan tasarlayın. Tertemiz kodlayın.Görsel tasarımlarını ve ekran yerleşimlerini tamamen kendiniz yapın. Diğer uygulamalardan örnek alın, ama kesinlikle özen gösterin. o Ürününüzü test edin. Mükemmel oluncaya ve içinize sinene kadar da revize edin. o Ürününüz için mutlaka sorunsuz çalışan bir kurulum hazırlayın. o Ürününüzü tanıtan bir web sitesi ya da doküman hazırlayın. Yukarıdaki diyet listesine uyarak geliştirilecek yazılımların/projelerin gelişime katkısı olacağını düşünüyorum. Tabii ki bu benim tercih ettiğim ve uyguladığım bir diyet :)

KÇ: Bir yazılım evi sahibi olarak, kendi yazılım evlerini açmak isteyenlere tavsiyelerin nelerdir?
OK: Yazılım evi sahibi olmak yazılım geliştirmek ve kod yazmaktan çok öte bir durum tabii ki. Projenin her tarafı ile en profesyonel yaklaşımınız ile ilgilenmeniz gerekiyor. Eğer proje yaşam döngüsüne hakim değilseniz girişiminiz başarısız olabilir. Bununla beraber tabii ki iyi bir çevreye sahip olup ve sektöre de kısmen hakim olmanız gerekiyor. Yazılımevi işletirken de en fazla dikkat edilmesi gerekenlerden biri de iç yapınız. Aşırı düzenli ve sistematik çalışan bir kişiliğiniz yok ise kısa süre spagetti yazılım evine dönebilirsiniz. Unutmamak gerekir ki her yaptığınız proje için akabindeki yıllarda desteğini de vermenizi gerektirir. Bu şartları sağlamak için iç yapınızı iyi kurgulamanızda fayda var. Özetle sektörde pişmeden kesinlikle kendi yazılımevlerini açmalarını tavsiye etmiyorum. Önce yazılımcı olarak, sona da proje yöneticisi olarak görev almalılar sektörde. Hafif suyunu bıraktılar mı, altını kısıp yeni oluşumları için çalışmalarına başlayabilirler :) KÇ: Bir yazılımevi sahibi olarak, yazılım profesyoneli olarak çalışacaklara tavsiyelerin nelerdir? OK: Benim tavsiyem, çalışmalarında yukarıdaki diyet listesini uygulamaya çalışsınlar. Bu onların yazılıma, projeye ve kaliteye olan yaklaşımlarını geliştirecektir. Yazılım geliştirmek keyif vermiyorsa, meslek tercihlerini gözden geçirsinler. Yazılım ancak motivasyon ve heyecan duyguları ile gerçekten verimli halde geliştirilebilir. Yoksa sürekli bugün bildiğinizin yarın eskidiği bir platformda para kazanmak gerçekten çok zor.

Kaynakça : http://www.chip.com.tr/blog/kadircamoglu/iyi-Bir-Yazilimci-Olmanin-Recetesi_1322.html

0 yorum :

Yorum Gönder

Lütfen yorumlarınızı sayfamızla paylaşın..