windows-mac-or-linux

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;

  1. Sizden önce Amerikayı keşfeden mutlaka biri vardır.
  2. Yanlış şekilde araştırıyor olabilir misin?
  3. İ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’den bile daha iyiymiş ve CodeIngiter framework’un dökümantasyonu şahane olmakla beraber, desteği hep verilecekmiş..

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

2 thoughts on “Microsoft mu yoksa Linux mu; PHP mi ya da ASP.Net mi; yoksa Elma veya Armut mu?

  1. Merhaba,

    JSON için araştırma yaparken ulaştım sitene. Daha sonra da sitenizde biraz dolaştım ve sizi tanımaya çalıştım. Okudum yazdıklarınızın bir kısmını. Yararlandıklarım da oldu.

    Zor bir kıyaslamaya daha ciddi davranmanızı beklerdim. Çünkü yeni yetişen arkadaşlarımızın kafaları ister istemez karışık. Her yazıyı bir kurtarıcı gibi görüp okuyor ve etkileniyor.

    Yazılımla ilgilenen kişi önceliğini algoritmaya vermelidir. İşletim sistemi de programlama dili de sonraki mesele. İyi bir algoritmayla istediğin işletim sistemine, istenilen dilde programlama yapabilirsin.

    Hiçbir işletim sistemi küçümsenemez. Zira programlama dilleri de öyle. Ama hedef göstermek gerekirse gençlere:

    1- İşletim sisteminin yaygınlığı, (gerek kurumsal, gerek kişisel)
    2- Programlama dilinin sektördeki yaygınlığı, kaynak bulabilme ve projeye göre gösterdiği başarılar.

    dikkate alınmalıdır.

    Kurallar dikkate alındığında kıyaslanan Linux ve Windows işletim sistemlerinin bir birlerine oranla başarılı ve başarısız yönleri mevcuttur. Aynı şekilde asp.Net ve PHP için de geçerli bu.

    Kullanım oranı (kişisel, kurumsal), kaynak bulma, eğitim olanakları açısından windows işletim sistemi uzunca yıllar liderliğini korudu ve daha da koruyacağı aşikar.

    Dolasıyla windows işletim sistemi için yazılacak masa üstü uygulaması daha büyük bir pazar bulacaktır kendisine. Hem yazılım araçlarının (Visual Studio) hem veri tabanı ve araçlarının (MSSQL Server, Management Studio) ücretsiz oluşları ve bunlar hakkında yerli yabancı döküman, örnek kod bulma kolaylığı ve eğitim olanakları düşünüldüğünde yazılıma yönelecek kişilerin windows’a ayrıcalık tanıması kendi yararına olacaktır.

    Web uygulamalarında PHP’nin açık kaynak kodlu on binlerce uygulaması gerek son kullanıcı açısından, gerekse kodlayıcı açısından bulunmaz bir nimettir. Tabi her nimetin artıları gibi eksilerini de göz önünde bulundurmak koşuluyla. Sizin yazmadığınız, hakim olmadığınız kodların nelere mal olacağını iyi hesaplamak gerekir ki, günümüz hackerlerinin arka bahçesinde köleleri olmanız bile içten değil.

    Windows uygulamalarına getirilen en büyük eleştiri her uygulamanın ücretli ve pahalı(!) oluşudur. Linux’ta bunlar bedava sunulmaktadır.

    Yazılım, elle tutulmayan, başka bir tabirle bir madde olmayan ki nesne diye geçiştirilebiliyor, stoksuz bir üründür. Stoğu olmayan ürünlere maliyet oluşturmak da dünyanın en zor işidir.

    Sorulsa bana en iyi programlama dili hangisidir? diye, hiç tereddüt etmeden vereceğim cevap : En hakim olduğun dil. derim.

    O yüzden genç kardeşim, heyecanını anlayabiliyorum. Ama mezun bir arkadaşımız ve sektörde bir yer bulabilmiş arkadaşımız olarak senin de artık daha dikkatli yazılar yazmanı, bu uğurda 20 yılını doldurmuş, bir ağabeyin olarak öneririm.

    Akdeniz Bilişimciler Derneği Başkanı
    Levent Ali Keten

    1. Öncelikle böyle güzel bir yazıyı eleştirilerle beraber dile getirdiğiniz için teşekkürlerimi bir borç bilirim.

      Bahsetmiş olduğunuz bu yazıdaki kıyaslamayı daha ciddi şekilde ben de ele almak isterdim. Ancak sizinde geri bildirimde belirtmiş olduğunuz En hakim olduğun dil kısmına katılmıyorum. Çünkü bu yazıda vermek istediğim ana mesaj; yapılan projelerde yeni bir bakış açısıyla beraber gelen algının değişmesi, daha uygun veya daha başarılı bir teknoloji/teknik/sistem kullanılabilir üzerinedir. İyi ile kötüyü ayırt edebilmemizin tek çıkış noktası, mutlaka karşılaştırdığımız en az iki farklı şeyin sonucunda elde ettiğimiz deneyimler ve tecrübelerdir. Elbette en iyi programlama dili sizin hakim olduğunuz dildir ancak gerektiğinde körü körüne bakmak yerine; karşılaştırma yapabilmeyi ve tarafsız anlamda gerektiğinde en iyi bildiğiniz dili savunmasız bırakacak şekilde eleştirmeyi bilmek gerekir. Benim savunmak istediğim ve anlatmak istediğim şey budur.

      Algoritma, kullanılacak ilgili sektördeki programlama dilinin yaygınlığı, Microsoft’un pazarda yerini koruyacağını, Microsoft ürünlere ait örnek kod bağlamında dokümanları veya eğitimleri konusunda vermiş olduğunuz bilgi ve deneyimlerinize kesinlikle katılıyorum. Özellikle Microsoft gibi köklü bir kuruluşun deneyimleri zaten bizim sektörümüz için hep çözüm odaklıdır. Bunu Xamarin ile birlikte mobil platformlarda birkaç sene önce kadar attığı adımlar için de konuşabiliriz, Linux ile yıldızlarının barışması için de konuşabiliriz.

      Ama her ne kadar çözüm odaklı yaklaşıp, ürünlerinin belirli bir seviyeye kadar ücretsiz olsa da belirli konularda yetersiz kalabilmektedir. Örneğin benim için MSSQL, bir Firebird değil 🙂 Bunu, şu anda hastane sektöründe yazdığım ve gerektiğinde bizden önceki firmaların verileriyle çalıştığımdan elde ettiğim deneyimlerle söylemekteyim. Büyük verilerden bahsediyorum. İki binden fazla kadar tablolar, istemediğiniz kadar prosedürler, milyonlarca ve hatta hastanenin yapısına göre milyarca verilerden bahsetmekteyim. En basitinden iki aynı sorguyu tarafsız olarak farklı ürünlerde çalıştırdığımda aldığım sonuçlar ortadadır. Sunucuda kurulu işletim sisteminin aynı olmasına rağmen performansları ve transactionları dikkate aldığım en önemli husustur. Yalnız burada Firebird’ü savunuyuorum MSSQL’e karşı ama Firebird de bir Oracle değildir, yeri geldiğinde başka şekilde eleştirmekte gerekir 🙂 Böyle konuşursak konu zaten ilerledikçe paraya gidiyor..

      Eleştirilere her zaman açık biriyimdir saygı çerçevesinde olduğu sürece.
      Yaptığınız geri bildirim beni mutlu etmekle beraber, başka bir bakış açısı daha kazanmama vesile oldu.
      Tekrardan çok teşekkür ederim.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir