İyi Yazılım

İyi yazılım paylaşımları

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

Ödüllü bir yazılımcıdan, yazılımcı 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.

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.

Okuyucu Yorumları

Toplam 42 Yorum

Çok yararlı anektodlar var. Bilgilendirme için teşekkürler

Gerçekten faydalı bir röportaj olmuş.

Teşekkürler

Hocam sizede Onur Bey'ede teşekkürler.Gerçekten yararlı bir röportaj olmuş...

Öncelikle sorularıma cevapları bulmama vesile olduğunuz için Hocam size ve Onur beye Teşekkür ederim..yazıyı okudum ve bundan sonra ben bu işi yapabilirmiyim diye değil,seviyormuyum diye düşünüyorum çünkü sevdikten sonra yazıda belirtilen iyi bir yazılımcı olma yolundaki diyetleri uygulamak hayatımıza zevk ve BAŞARI katacaktır.

Esra Ünver.

Teşekkürler,
Yücel

Bu tarz röportajların devamını bekliyoruz. Özellikle yeni yazılımcılar için çok iyi bir referans olacağı kanaatindeyim.

Tek kelimeyle harika bir röportaj.Şimdi önümü daha iyi görebiliyorum.
Çok teşekkürler

ya çok teşekkür ederim, bana çok gerekliydi!

Teşekkürler, çok faydalı bir röportaj olmuş.

Gerçekten faydalı bir röportaj olmuş teşekkür ederim.

çok faydalı bir röportaj teşekkürler...

içten teşekkürler ...

Teşekkürler chip :)

Bu ilaç gibi geldi saol çip...

ben 14 yaşında küçük bir yazılımcıyım ileriye yönelik bir istek var içimde. İleride ki hedefimde yazılımlıcık doğal olarak. Asla bıkmadan bu yolda ilerlemek keşfetmek öğrenmek ve yazmak istiyorum. Tek sorunum ise bir grubumun olmaması. Nasıl çare bulabilirim bilmiyorum. Onur Kazgan abi liseye yeni geçtim eğer üniversteyi de bitirirsem sizin yanınızda çalışma imkan ve koşulları nelerdir beni aydınlatır mısın? Şimdiden Teşekkürler Furkan Adatepe E-posta: dooms.time@hotmail.com

yazılım üzerine mail grup lara üye olarak güncel problemlere katkıda bulunabilir destek alabilirsin.

teşekkürler...

Çok teşekkür ederim yazınız bir nebze daha heyecanlandırdı beni.

Süper bir röportaj olmuş.Ellerinize Sağlık.

biz yazılımcılar için çok değerli bir röportaj hazırlamışsınız..emeğiniz için teşekkürler..

biz yazılımcılar için çok değerli bir röportaj hazırlamışsınız..emeğiniz için teşekkürler..

Çok faydalı bilgiler gerçekten, teşekürler..

Görmüş geçirmiş arkadaşıma güzel Türkiye min gelişimine kattığı yüreğine teşekür ediyorum.

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...?

Merak ettiğim bütün sorunların cevaplarını buldum.Emeğinize sağlık...

Bi yazıyı ilk defa bu kadar iştahla okudum. Emeği geçenlere teşekkürler.

iyi bir yazılımcı nasıl olunur peki??

bilgiler için çok tesekkürler

merhabalar radyo iphonede chat programı var ordan ban yedim banımı eskiden telefonuma jelbreg yapıp ordan udid faker indirdim banımı öyle açıyordum ama şimdi telefonuma jelbreg yapıyorum sohbet ekranım çıkmıyor bunu nasıl açabilirim bana bu konuda yardımcı olan kimse yokmu acaba şimdiden herkse çok teşekkürler saygılarımla derya

Çok zahmetli bir meslek :) No Pain No Gain

yolu aydınlattı teşekkürler

Hocam iyi güzelde bi bilgisayar olsa. Nasil aldiracam ya .d.d.d

Bu tür yazılara karşıyım hemde başından sonuna kadar,Onur Kazgan Bey kendi yolunu kendi istediği şeyler yaparak çizmiş,Öğrendiği diller ile mesela.Milletimi az çok tanıyorsam "Bu adam C# İle başlamış bende onla başlamalıyım demeye başlıyor" hatta bazen google'ye PHP Öğreniyorum HTML Öğreniyorum gibisinde şeyler yazıp 3-5 saatte işin içinden çıkabileceklerini sanıyorlar.Mesela ben Metin2 oyuncusuyum Kendi pvp serverim için site tasarımlarını editleyerek php html css öğrendim.Karakter sınırı :/

anlayamadım birşey ama teşekkürler

YARININ NELER GETİRECEĞİNİ KİMSE TAM OLARAK BİLEMEZ ANCAK BELKİDE BAZEN SEZEBİLİR.... BU KODLAMA İŞİ SANKİ OLACAK GİBİ... :) HAYATIN KENDİSİNİN KOPYASI GİBİ, TAVSİYELERDE GAYET FAYDALI.... EMEĞİ GEÇENLERE TEŞEKKÜRLER...

Her yazılımcı spor yapmalı ve müzik dinlemelidir aksi takdirde beliniz ve ruhunuz tutulur:)

Çok yararlı. Teşekkürler. Özellikle tüm dilleri öğrenmek yerine bir kaç dile hakim olma tavsiyesi çok mantıklı.

Teşekkür ederim bende yazılım 1.sınıftayım dediklerinizi dikkate alacağım bilgileriniz için tekrar teşekkür ederim ??

söylediğin herşeyde haklısın hocam ağzına sağlık

Yıllar öncesinden bu tespitleri yapmak bence harika.Açıkçası aradığım yazıda tam olarak buydu.Yıl 2018 ve burda yazılanlar günümüzde hayla geçerli olan yazılar.Bu makalede yazılanlar ne kadar vizyon sahibi olduğunuzu gösterir.

çok sagulun derslerimde çok faydalı oldu

bu işi sevmiyorsan acilen bırakmalısın yoksa cokkk büyük hayal kırıklığı oluyormuş bir kaç abiden duymuştum aşkla bakmak lazımmış size tavsiyem arkadaşlar aşkla bakın sevin sevmeye çalışın yoksa büyük hayal kırıklığı geçen her saniye alehimize saygılar...

Sen de yorum yaz