İyi Bir Yazılımcı Olmanın Reçetesi

Ödüllü bir yazılımcıdan, yazılımcı olmanın reçetesi
10 Eylül 2008
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.

Kadir Çamoğlu
kadircam@hotmail.com

* * *

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ımevi 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ına ihtiyaçı var. Zaten siz bişi öğ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 ortantı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ı öğenin. 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. Milisaniye 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ı gerektiricek mimarilerden kaçının.

• Yazılım geliştiriken, ö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.

o 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ımevi sahibi olarak, kendi yazılımevlerini açmak isteyenlere tavsiyelerin nelerdir?
OK: Yazılımevi 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ımevine 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.


Toplam 20339 kez okundu.
Oyla:
En Düşük
Oy ver: 1Oy ver: 2Oy ver: 3Oy ver: 4Oy ver: 5
En Yüksek
YORUMLAR
Toplam 26 yorum
123456Sonraki
Ziyaretçi yazmış:
Bi yazıyı ilk defa bu kadar iştahla okudum. Emeği geçenlere teşekkürler.
29 Eyl 2011  14:00%100Bu yorumu beğendimBu Yorumu Beğenmedim%0
Ziyaretçi yazmış:
Merak ettiğim bütün sorunların cevaplarını buldum.Emeğinize sağlık...
08 Eyl 2011  14:41%50Bu yorumu beğendimBu Yorumu Beğenmedim%50
Ziyaretçi yazmış:
Güzel Bir Röpertaj yapmıssınız... Benim bir sorum olcakk ... Ben program yazmyıı az da olsa güzell yazmaya başladımm... ama ÖSS den kaygım var...ÖSS yi kazanamassam yine bildiğim haldee program yazmayıı iş imkanım olabilrmi...?
29 Eki 2010  20:44%0Bu yorumu beğendimBu Yorumu Beğenmedim%100
Ziyaretçi yazmış:
Görmüş geçirmiş arkadaşıma güzel Türkiye min gelişimine kattığı yüreğine teşekür ediyorum.
24 Eki 2010  01:01%33Bu yorumu beğendimBu Yorumu Beğenmedim%67
Ziyaretçi yazmış:
Çok faydalı bilgiler gerçekten, teşekürler..
04 Eki 2010  22:21%50Bu yorumu beğendimBu Yorumu Beğenmedim%50
123456Sonraki


Bu sayfalarda yer alan okur yorumları kişilerin kendi görüşleridir. Yazılanlardan CHIP Online sorumlu değildir.
Siz de yorumunuzu yazın
CHIP Online Ziyaretçisi
Yorumunu Gönder
Lütfen bu bölüme sadece yorumlarınızı yazın. Teknik yardıma ihtiyaç duyduğunuz konuları lütfen forumda ilgili bölüme veya Uzmanına Sorun bölümümüze yazın, yanıtınızı çok daha sağlıklı ve hızlı olarak alabilirsiniz
Siz de kendi teknoloji blogunuzu ücretsiz oluşturun!

Tek Kişilik Yazılımevi-Kategoriler

 


Eylül 2008
PtsSalÇarPerCumCtsPzr
1234567
891011121314
15161718192021
22232425262728
2930     

CHIP Online Yazar Blogları

Yazarlarımızdan, editörlerimizden sizlere...

Cem SinanoğluCem Sinanoğlu
Ne halin varsa gör!
Selim ÖztürkSelim Öztürk
22 Kasım = Sansür mü?
Rik FergusonRik Ferguson
Yılbaşı alışverişinde yalancı fırsatlara kanmayın!
Kadir ÇamoğluTek Kişilik Yazılımevi
Yazılım Test Uzmanlığı Kariyeri
Zeynel ÖztürkZeynel Öztürk
Google+ sizi yayınlamasın!
 

CHIP Dergisi: Şubat 2012


İşbirliği ortaklarımız

  • Hepsiburada.com
  • Level
  • Turhost
  • CHIP Download
  • yenibiris.com
  • CHIP Download
 
 
Cep telefonları | Ekran kartları | Masaüstü | Notebook | Ses kartları | Webcam | Klavye & Fare | Yazıcılar | Tablet Ev Sineması
Mp3 Player | Usb Bellekler | Video kameralar | Fotoğraf Makinesi | Taşınabilir diskler | LED & LCD Tv | Monitörler | OEM | PDA
Navigasyon | Oyun Konsolu