Yazılım, “hype” ve “FUD”

Bloga, Güray dostum yorumunu yazdıktan 1 sene sonra devam ediyorum :) Son yazıda PHP’den bahsetmişim. Aslında PHP’yi çok kullandığım söylenemez. Benim için PHP’yi ilginç kılan şey yazılımla ilgili verilecek kararlarda üretkenliği önemseyenler için güzel bir örnek olması. Bu konuyu biraz açmak istiyorum öncelikle bakınız: http://blog.mailchimp.com/ewww-you-use-php/

Bir dilin Silikon Vadisi’nde ne kadar konuşulduğu, övüldüğü veya yerildiği, o dilin Silikon Vadisi’nde bile ne kadar kullanıldığının göstergesi değildir. Kod yazmaktan tartışmalara katılamayanlar vardır belki de… Bir projede kullanılacak dil veya ekosistem seçilirken bir çok mantıklı kriter göze alınabilir:

  • Örneğin projenin halihazırda bir ekosistemi olabilir. Bu sizin seçeneklerinizi doğrudan kısıtlar: iOS için Obj-C/Swift, enterprise çözümler için sadece Java veya sadece C# istenen projeler.
  • Örneğin projenin önceden geliştirilen kodlar ile uyumlu çalışması gerekebilir. Bu sebeple aynı dili veya birbiriyle anlaşabilen dilleri seçmek mantıklı olabilir. C ile yazılmışsa C/C++ veya mesela Pythondan C çağırmak gibi. Veya tamamen C kodunu ayrı tutup bir protokol ile diğer kodlara bağlanması haberleşmesi sağlanabilir.
  • Kriterler değerlendirildiğinde her dilin ön plana çıktığı alanlar vardır ve bu alanlarla ilgili bir çok kütüphane yazılmıştır. Bir alanda güzel kütüphanelerin olması o dilin aynı alanda kullanılmasına ve yine aynı dilde kütüphenelerin yazılmasına sebep olmuştur(Tavuk yumurta.). Bu kriter için örnekler: İstatistik ve bilimsel çalışmalar için R, hızlıca kolay host edilebilir web siteleri yapmak için PHP, hızlıca web siteleri yapmak için Python-Flask, Python-Django, Ruby-on-Rails, Ruby-Sinatra vb. , XML standartları ile çalışmak için Java (Microsoft açık kaynak yapmasaydı görmezden geleceğim C# de bu konularda öne çıkar), gömülü sistem türü adını-bilmediğim işlemci mimarilerinde az kaynakla çalışacak sistemler için C, oyunlar için C++, istisna olarak her şey için Python… Böyle bir kütüphane ekosistemi sizin projenizi hangi dille yazacağınızı seçerken önemli bir kriterdir.

Sonuçta, geçerli ve mantıklı kriterler için örnekler çoğaltılabilir. Aklınıza gelenleri yorumlarda ekleyin lütfen. Ancak “Şöyle yeni bir şey çıkmış süpermiş” lafını söylediğinizde veya duyduğunuzda alarm zillerini çalmanızı öneriyorum. Bende böyle bir refleks, yenilikleri takip etmeyi seven ve heyecan duyan birisi olarak tecrübeler sonucu oluştu. Yeniliklerden vazgeçemeyiz. Amaç heyecanın vakit ve enerji kaybına dönüşmesini engellemeye çalışmak. Çözüm olarak ise hobi projeleri görüyorum. Yeni bir teknolojiyi yan bir projede denerseniz, hem teknolojinin faydası konusunda daha hızlı sonuca varabilirsiniz hem de riske girmemiş olursunuz.

Ek olarak, İngilizce “hype” ve “FUD” kelimelerine bir teknolojinin gerçeklere dayanmadan övüldüğü/yerildiği belirtililen yazılarda rastlayabilirsiniz.

“Hype”: Bir şeyin olduğundan daha önemli, değerli görülmesi, hak ettiğinden daha çok konuşulması. Ör: “Don’t believe X hype”, “Y hype will fade”.

“FUD”: “Fear,Uncertainty and Doubt”. Korku, belirsizlik ve şüphe. “Hype” ‘ın tersi diyebiliriz. Genelde “spreading FUD about X” olarak kullanılır ve şüphe yayan kişide art niyet olduğunu da belirtir.

PHP’nin geleceği?

PHP ekosisteminde kütüphane/paket sistemi 2011’de packagist ile başlayabildi. Ruby’de bu tür bir sistemin(gems) 2003’de başladığı düşünülürse hayli geriden başladı.

Ancak:
-PHP dilinde ve ekosisteminin yavaş da olsa gelişmesi
-Devasa kullanıcı sayısı,
-PHP ile site yapmaya başlamanın örneğin Ruby’ye, Python’a göre aşırı kolay olması,
-Wordpress gibi kemikleşmiş projeler,
PHP’nin hiç bitmeyeceğini düşündürüyor bana.

packagist stats

Resim kaynağı: https://packagist.org/statistics

Design Then Code

“…it is easier to make changes to a design document than it is to the code.”

This quote is from an interview with lavabit founder Ladar Levison (1). There is a very important dynamic in software engineering. Ambiguous, ever-changing scope and functionality make coding a lot harder and time-consuming.

Personally, in my most effective coding sessions I can remember, I had a clear design and objective and I was only writing code to comply my own rules & API, at least  between specific versions.

However there are also times which you can’t design in advance or effectiveness isn’t the first priority. :)

 

Sources:
(1) http://highscalability.com/blog/2013/8/13/in-memoriam-lavabit-architecture-creating-a-scalable-email-s.html

Rails İstanbul Buluşması

Promoqube’un organize ettiği “Rails İstanbul” etkinliğine arkadaşlarımla birlikte katıldım.

Etkinlikte Promoqube dışında firmalarda çalışanlar, girişimciler ve öğrenciler vardı.

Tanışma ve sohbet çok keyifliydi. Bununla birlikte bu etkinliğin ve devamının herkese somut kazanç getireceğini düşünüyorum.

İlgimi çeken bir başka nokta: Burak Arıkan Bey, MIT’de bile öğrenme eyleminin derslerden daha çok buna benzer topluluklarda gerçekleştiğinden bahsetti. Toplulukların ne kadar önemli olduğunu kendi üniversitemdeki tecrübelerimden, özellikle girdiye(ben) ve çıktıya(yine ben) bakarak bilmeme rağmen MIT’de bile toplulukların daha önemli olduğunu birinci ağızdan duymak beni şaşırttı.

Bu etkinlikten sonra, topluluğun gücüne, kazan-kazan ilkesine ve insanların potansiyellerine daha çok inanıyorum. İnsiyatif alıp bu potansiyeli gerçeğe dönüştürmek isteyen, bu değişime ön ayak olmak isteyen şirketin Promoqube olması şaşırtıcı değil. Sadece kendilerinin değil herkesin birden kazanacağı böyle bir proje başlatmalarını tebrik ediyorum, sonuna kadar destekleyeceğim.

Girişimci olmak isteyen, bilgi çağında olduğumuzun farkında olan tüm dostlarıma sesleniyorum: Dünde takılmak, bugünün peşinden koşturmak yerine, şimdiden geleceği tasarlayıp yaşamak isteyenlerin tam da buralarda bir yerlerde olması gerekiyor! :)

Topluluğun Facebook sayfası: http://www.facebook.com/rails.istanbul

Topluluğun Twitter hesabı: http://twitter.com/railsistanbul

Ayrıca topluluktan bu yazıyı okuyanlar varsa benimle twitterdan iletişime geçebilirler: http://twitter.com/fatihpense