Herkese tekrardan merhaba.
Çok tartışmalı ve her seferinde aldığım geri bildirimler doğrultusunda yazılımcı arkadaşların bana gerek forumlarda, sosyal medyada veya attıkları e-postalarda bahsettikleri bir konuyu biraz karışık ve biraz da basit manada ele almak istiyorum.
Başlık, evet biraz tuhaf.
* * *
Kendimden ve sektörden örnekler vererek bu konuyu açıklığa kavuşturma hedefindeyim.
Aldığım freelancer işlerde, çalıştığım şimdiki veya önceki şirketlerde yaptığım projelerde; yapısı gereği yazdığım uygulamalar veya bileşenler çoğunlukla son kullanıcıya hitap eder.
Biz yazılımcılar uygulama geliştirirken yaptığımız ilk şey analizdir. Bu yadsınamaz bir gerçektir. Yani bir müşteri bizden bir X yazılımı / Y websitesi / Z bileşeni yaratmamızı istediğinde; önce onu anlamak isteriz. Bu müşteri ne istediğini biliyor mu?
(Bu soru, yüzlerce proje geliştirdikten sonra ortaya çıkan bir sorudur tabi. Çünkü müşteri çoğu zaman ne istediğini bilmez veya yapmak istediği şey hakkında bilgi eksikliğinden tarif edemez. O yüzden bu soruyu gerekirse defalarca kendimize ve onlara sorarak teyit almaya çalışırız, “Kullanıcı buraya tıkladığında yapılmasını istediğiniz şey nedir?, bu alan neyi ifade eder?, neyi tetiklemeli?, istediğiniz sonuç nedir?” vb. gibi sorular sorarız. Önce müşteriyi ve müşterinin istek/ihtiyaçlarını anlamak gerekir. Emin olun, müşterinin her zaman danışacağı veya fikir alacağı; bilgili veya çok az bilgili insanlar etrafında vardır. Fakat size değer katacağı yeni bilgiler veya yeni teknolojileri bile keşfetmenize olanak sağlayabilir. Tek yapmanız gereken Google amcaya sormaktır.)
Eğer müşteri ne istediğini biliyorsa veya siz bu sorunu çözüme kavuşturmayı başarmışsanız; geriye hangi yöntemler, hangi teknolojiler, hangi bileşenler kullanılmalı şeklinde; kısacası “Hangi X kullanılacak” denklemleri kafanızda belirmeye başlar.
Bu süreçte vereceğiniz cevaplar çoğunluk kişisel olmakla beraber geleceğe bakış açınızla alakalıdır. Örneğin,
- Desteği bitmiş bir teknolojiyi/bir bileşeni kullanıp, bir an önce işi çözüp zamanı nakit durumuna çevirmek ama gelecekte aynı müşteri size “Yeni özellikler eklenmeli isteğiyle” geldiğinde sıfırdan yazmak zorunda kalmak mı?
- Performans bakımından şahane hızlı ama hiç bilmediğiniz bir teknolojiyi öğrenmek mi?
- “Ya ben yazayım, nasıl çalışıyorsa çalışsın, zaten bir daha böyle iş ne zaman gelir?” mantığıyla işe tamamlamak mı?
Acemisinden profesyoneline; çakalından işin ehlisine kadar pek çok kişinin takıldığı yerlerdendir bu.
Profesyonel yazılım şirketleri veya geliştiriciler ise “Gelecek vaat eder mi?”, “İlerde bize ihtiyaç duyarlar mı? Duymazlarsa ne yap(ıl)malı?” sorusunun cevabını öngörür.
* * *
Bu yazıyı yazarken aklıma üniversite yıllarından Microsoft sevdalısı; hayranı ve bağımlısı bir arkadaşım geldi. Varsa yoksa “.Net” derdi. Biraz da egoistti. Microsoft tarafından aldığı MCPD sertifikalı bir arkadaşımızdı. Mesleki bakımından gerçekten başarılı bulduğum bir arkadaş olsa da bakış açılarımız tamamen çok farklıydı bu sektör ile alakalı. Çünkü gerektiğinde takım oyununu oynaman gerektirir bu sektör. Bu yüzden yenilikçi bakış açısına sahip olman gerekir.
Bir keresinde üniversite içerisindeki Teknopark gezimizde gerçekten profesyonel bakış açısına sahip, senelerini yazılıma vermiş; lise mezunu ve 4 milyon dolar üzerinde ciroya sahip olduğu yazılım şirketinin sahibine saçma sapan bir soru sorup, beş-on dakika sorular havada uçuşturarak “.Net” i kendince savunmuştu (Bana sorarsanız daha temkinli yaklaşabilir veya daha somut konuşarak işi çözümleyebilirdi. Bu şirket sahibi ağabeyimiz, %100 Pure Java takılırmış zamanında ama sırası geldiğinde başka teknolojileri de kullanmaktan çekinmezmiş). Bu deneyimli ve başarılı yazılımcı ağabeyimizin de cevabı yerindeydi, “Gözlerini biraz aç, yazılım sadece Microsoft’tan ibaret değil.”
Tabi bu bahsi geçen arkadaşım, üniversite sonrasında edindiği sektörel tecrübelerden artık şimdi Linux ortamında da uygulama geliştirmeye başlamış. Üstelik script bile yazıyormuş, laf aramızda kalsın ama arada bloğuna bakıp inceleme fırsatı buluyorum. Başarılı buluyorum. .Net’ten de biraz uzaklaşmış sanki. Ağabeyin verdiği tavsiyeye de uymuş.
* * *
Microsoft ile Linux’un bile yıldızları barıştı, siz neyden bahsediyorsunuz?
* * *
Uygulama geliştirirken, körü körüne bakmayı sevmem; kaldı ki şirketler de böyle yapmaz. Elindeki yeteneği ve bilgiyi dikkate alır çoğunlukla, alsalar da asıl olay; yazının başında belirttiğim gibi gelecek, zaman maliyeti ve bakış açısı ile ilgilidir.
Örneğin, ben web servislerle iletişim halinde olacak paket gönderen/alan bir web uygulaması yazacağım ve frameworklere ihtiyacım var. Hadi hep bildiğimiz teknolojiyi kullanalım, ASP.Net’te ilgili web servisini referans olarak gösterip, projeme dahil etmem sadece dört-beş tıklama. Hadi diyelim paket alıp gönderen kodu da yazdım.. Peki, ilgili paketi gönderip, cevabı response ederken bu arada geçen süre ne kadar verimli? Daha aza indirgeyen başka bir şey var mıdır?
Araştırmaya başlarım.
Benim gözümde bir şeyi araştırırken üç temel kavram vardır;
- Sizden önce Amerikayı keşfeden mutlaka biri vardır.
- Yanlış şekilde araştırıyor olabilir misin?
- İlk keşfeden sen olabilir misin?
Dileyim ki, bulduğum sonuçlar arasında yaptığıma benzer ama farklı içerikler kullanan biri “PHP ile birlikte Laravel kullanarak daha hızlı verim elde ettiğini” iddia etmiş.
Denerim, acımam..
Denemek için aldığım kodu komple indirdim, kendime göre düzenledim ve çalıştırdım (diyelim)..
İncelemeler sonucu, verimlilik ve performans bakımından, ASP.Net’ten daha etkin ve başarılı bir şey olduğuna kanaat kıldım. “Evet bu sefer oldu, şahane çalışıyor!”.
Hiç vakit kaybetmeden bu projeyi kendime göre yeniden yapmaya karar veriyorum. Laravel’in son versiyonunu indiriyorum, önceden bulduğum kodları kendime göre entegre etmeye çalışıyorum.. Bir de ne göreyim, önceki indirdiğim kodlar Laravel’in eski versiyonu içinmiş.. Hayde..
Dur bakayım eski versiyonuna ait dökümantasyon var mı?
beş-on dakika sonra..
E, o da yok; ne yapacağız şimdi?
İşte burada bir çıkmaza girdik. Eski versiyona artık destek kalkmış.
Biraz daha araştırıyorum ve araştırmalarımın sonucunda CodeIgniter ile bu işi başaranları keşfediyorum. Ama ben hiç CodeIgniter kullanmamış biriyim.. Birkaç deneme yapıp, makale okuduktan sonra bakıyorum ki Laravel’e göre kapsam daha basit ve CodeIngiter framework’un dokümantasyonu şahane olmakla beraber, desteği hep verilecekmiş.. falan filan..
Hadi CodeIgniter öğrenelim,
bir-iki gün sonra..
aaa şahane bir şey lan bu!
* * *
Yukarıdakine benzer bir senaryoyu bir ay kadar önce bir projede yaşadık.
Neyse ki şirketteki deneyimli ağabeylerim sayesinde sorunu kısa sürede çözümledik.
Şimdilerde ise çatır çutur yazıyorum kodları acımadan.
* * *
Bu ana kadar anlattıklarımı gelişi güzel yazdım.
Yani akademik dilden çok, daha samimi şekilde ifade etmek istedim ama bazı detayları atlayarak 🙂
Daha fazla bilgi ve bakış açısı için; yazılım geliştirme süreci ile alakalı bu tezi incelemenizi isterim.
Bir sonraki makalede görüşmek üzere.
Enis Kurtay YILMAZ