Ana içeriğe atla

Yazılım Dünyası 1 İ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ı.

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 olarakdeğ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 birsü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ı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.


Yorumlar

Bu blogdaki popüler yayınlar

Matlab Programlama Soru Çözümü

26 Matlab Soru Çözümleri 26
25 Matlab Soru Çözümleri 25
24 Matlab Soru Çözümleri 24
23 Matlab Soru Çözümleri 23

Matlab Programlama 18 Matlab de Rand Fonksiyonu Kullanımı

Merhabalar herkese. Yeni ve belkide programlamada kullanım alanları ve yaptırabildiği uygulamalar dolayısıyla programlamanın önemli konularından olan rastgele sayı üretmeye yardımcı olan  rand fonksiyonundan bahsetmeye çalışacağım bu yazımda sizlere.
Bismillah diyelim ve başlayalım.
Her programlama dilinde olduğu gibi Matlabde de rastgele sayı üretmeye sağlayan bir fonksiyonumuz bir metodumuz mevcuttur.
Temel kullanımı rand(n,m) şeklindedir. Bu ifade şunu yapar n satırlı ve m sütunlu bir matrisi 0 ile 1 arasında rastgele gelen ondalık sayılar ile doldurur.

Matlab Programlama Konu Anlatımı

18 Matlab Programlama 18 Matlab de Rand Fonksiyonu KullanımıMerhabalar herkese. Yeni ve belkide programlamada kullanım alanları ve yaptırabildiği uygulamalar dolayısıyla programlamanın önemli konularından olan rastgele sayı üretmeye yardımcı olan rand fonksiyonundan bahsetmeye çalışacağım bu yazımda sizlere.Bismillah diyelim ve başlayalım.Her programlama dilinde olduğu gibi Matlabde de rastgele sayı üretmeye sağlayan bir fonksiyonumuz bir metodumuz mevcuttur.Devamını Gör-->
17 Matlab Programlama 17 Matlab de Kullanıma Hazır Fonksiyonlar Ve İşlevleriMerhabalar herkese. Matlab derslerimizin 13. sü ile yolumuza devam ediyoruz. Bu dersimizde sizlere Matlab'in pek çok hazır fonksiyonundan ve işlevlerinden bahsetmeye çalışacağım.O zaman Bismillah diyelim ve yolumuza koyulalım.1 SAYI YUVARLAMA FONKSİYONLARIMatlab de ondalık sayılar üzerinde işlem yapabilmek için bize kolaylık sağlayan 4 tane fonksiyon vardır. Bu fonksiyonlar fix, round, ceil ve floor'dur.Devamını Gör-->
16 Matla…