Programlamada Üretim Hızını Arttırmak…

Bir ürün ortaya koyarken, aynı diğer sektörlerde olduğu gibi yazılım sektöründe de maliyet çok önemli elbette.

Yazılım ve donanım masraflarını çıkardığımız zaman geriye kalan maliyet yazılımcıların çalışma süresi, bu yüzden de projenin ne kadar hızlı geliştirilirse maliyeti o kadar düşük olur diyebiliriz. İster kendi projenizi geliştiren bir yazılımcı olun, ister bir şirket, bu gerçek değişmiyor.

Tabii üretim hızını arttırırken, bunun tam karşısında dikilen çok önemli bir parametre var, o da KALİTE ! Hızlı yazmak uğruna kaliteden ödün vermemeliyiz… Türkiye’deki berbat yazılım kalitesinin bence en büyük nedeni bu.

Sorun?

Makine mühendliği eğitimi sırasında üretim planlama ile ilgili derslerimiz vardı. Bunlardan biri de seri üretimde maliyetin düşürülmesi için yapılabilecekler. Mesela bir otomobil üretim bandını düşünün.

Her ne kadar yazılım sektörü ile kıyasladığınızda maliyeti etkileyen çok fazla parametre olsa da, aynen yazılımdaki gibi üretim hızını ne kadar arttırırsanız birim otomobil başına maliyetiniz de o kadar düşer.

Burada hızı optimize ederken en önemli bir prensip vardır:

Üretim işleminin hızını arttırmaya zorlarsanız kaliteden kaybedersiniz. Ancak asıl optimize edebileceğiniz nokta, üretim işlemleri arasında ara maddelerin bir yerden bir yere transferi, makineye bağlanması, makineden sökülmesi gibi ara işlemlerdir.

Örneğin bir torna işlemini olması gerekenden daha hızlı yaparsanız torna bıçağının ısınması vb. nedenlerden ürettiğiniz malzemenin yüzey KALİTESİ düşer, pürüzsüz bir yüzey yerine tırtıklı bir yüzey elde edersiniz.

Çok benzer bir şekilde kod yazma süreniz 3 aşağı  5 yukarı bellidir. Eğer çok hızlı yazmaya çalışırsanız mutlaka bazı noktaları gözden kaçırmaya başlarsınız. Bunun da acısı birkaç ay sonra çıkar: “Ben mi yazmışım lan bunu?!?!”

Nasıl?

Peki bu konuda ne yapılabilir? Programcı özelinde baktığımızda bence önemli unsurlardan birisi, aynı seri üretim yapan bir fabrikada olduğu gibi, ara işlemleri optimize etmek. Yani program yazarken rutin olarak yaptığımız ara işlemleri hızlandırmak.

İşte benim optimize ettiğim bazı şeyler. Eğer bu listeye eklemek istediğiniz bir şey varsa lütfen yorum olarak yazın, buraya eklerim…

1. Çift Monitör Kullanmak

Bilkent’teki işimde monitörümün yanına ikinci bir monitör koyduğum zaman çalışma arkadaşlarımın ilk tepkileri daha çok “wow ne havalı” gibi hafif dalga geçen bir yaklaşımdı. Şu an, departman müdürümüz de dahil çoğu kişi çift monitör kullanıyor…

Nedeni kesinlikle hava atma merakımdan değil. Basit bir rutini devreden çıkartmak: (Alt + TAB) kombinasyonu. Bir proje yazıp test ederken saatte kaç keç alt+tab kombinasyonunu kullandığınızı saydınız mı? Ben de saymadım aslında ama: ÇOK :)

Bir monitöre favori browser’ınızı koyuyorsunuz, diğerine editörü. Editörde yazdığınızın sonucunu browser’dan karşılaştırıyorsunuz. Ya da CSS ile uğraşıyorsunuz atıyorum. CSS’i Firebug ile modifiye ederek istediğiniz sonucu elde ediyorsunuz. Sonra yandaki monitörden son halini CSS’e yazıyorsunuz.

Hatta itiraf ediyorum atuyorum 5 dakika süren bir işlemi yaparken ikinci monitörde minesweeper oynadığım da çoktur :) Çünkü o sırada başka bir işe girerek ilkine olan konsantrasyonumu kaybetmek istemem…

2. 10 Parmak Yazabilmek

Dalga geçmiyorum, hala 2-3 parmakla kod yazmaya çalışan insanlar var yahu!

3. Shortcut Kullanmak

Belki abarttığımı düşüneceksiniz ama, hiç klavyeden elinizi kaldırıp mouse’a götürmenin size vakit kaybettirdiği dikkatinizi çekmiş miydi? Bu hareket belki 0,3 saniye alıyor ama günde belki 10.000 kere yapıyoruz.  Hemen hemen her işlemin bir shortcut’ı var: Commit et, kaydet, yükle (upload), dosya aç, dosya bul vs.vs. Bazı işlemlerin çok abuk shortcut’ları olabiliyor, tek elle yapamadığınız. Onları da üşenmeden değiştirin derim…

Aslında shortcut değil ama, yeni IDE’lerde code templates diye bir olgu var. Örneğin netbeans’de “assign” yazıp TAB’a bastığımda $this->assign(‘parameter’, $parameter); gibi bir kodu otomatik üretiyor ve cursor ‘parameter’ üzerinde oluyor. Onu örneğin ‘users’ olarak değiştirdiğimde otomatik olarak $parameter da $users oluyor…

Kullandığım başka bir trick de Textmate’ten: Shift + Ctrl Enter yaptığımda bulunduğum satırın sonuna bir noktalı virgül koyup sonraki satıra geçiyor. Bunu netbeans’de yapmak için basit bir makro kaydetmem gerekti. Bir satırın ortasındayken sona git, noktalı virgül koy, sonra enter’a bas yerine epey hızlandırıyor beni…

Siz de kendi hızınızı arttıracak shortcut’lar üretebilirsiniz.

4. Programlara Kolay Erişim

Favori programlarınızı başlat menüsü altından tüm programlara, oradan program dizinine, oradan programa gidip mi çalıştırıyorsunuz?

Her gün kullandığınız programları mac kullanıyorsanız dock’a ekleyebilir, windows 7 kullanıyorsanız “pin” ile taskbar’a sabitleyebilirsiniz. (Daha eski bir windows kullanıyorsanız önce onu çöpe atmakla işe başlayabilirsiniz!) Günlük kullanmadıklarınızı ise buraya koymayın ki bu sefer de yüzlerce program arasından günlük programınızı aramayın…

Diğer programlara erişmek için Mac’te Cmd+Space ile spotlight’ı açıp programın adını yazabilirsiniz. Aynısını windowsda yapmak için klavyenizdeki windows tuşuna basıp programın adını yazmaya başlayın, başlat menüsü açılıp program listede çıkar, oradan yine klavyeyle seçip açabilirsiniz.

5. Yıldırım gibi Çalışan Bir Bilgisayar

Birçok yerde işin bu erbapları der ki:

“Paranızın alabileceği en iyi bilgisayarı alın”

Sonuçta işinize yatırımdır bu. Bir yandan donanım problemleriyle ya da kanıran bir bilgisayarla uğraşırken nasıl konsantre olabilirsiniz ki işinize?

Kullandığınız donanımın birbirine uyumlu olması çok önemli o yüzden marka bilgisayarları tercih etmekte yarar var. Para ayırabiliyorsanız Mac’i sırf bu yüzden tavsiye ederim. Windows 7 bana göre gerek stabilite, gerek performans, gerekse fonksiyonalite açısından Snow Leopard’ı solladı ancak donanım olarak Mac kadar düzgün çalışan PC her zaman toplanmıyor. Sessizliği de cabası…

En son yakın bir arkadaşım bilgisayarının sesinden bıkıp kasayı yan odaya koymaktan bahsediyordu… Duvarı delip kabloları oradan geçirecekmiş ;)

Windows 7 kullanıyorsanız hızlı bir USB belleği windows 7’yi hızlandırmak için kulanabilirsiniz. USB’yi takın ve ekrana çıkan yönlendirmeleri takip edin. Bilgisayarınızın daha hızlı tepki verdiğini görebilirsiniz.

Linux’a gelince… Desktop olarak Kullanmayın! Bu kadar basit :)

NetBeans Windows Versiyonu Türkçe Bug’ı

NetBeans Son zamanlardaki favori editörüm NetBeans‘de iki önemli sorun vardı: İlki SFTP desteğinin olmayışı, ikincisi de windows versiyonundaki türkçe karakterler ile ilgili bir bug. Watch Full Movie Streaming Online and Download

SFTP desteği 6.7M2’den itibaren verilmeye başlanmış. Türkçe karakterler ile ilgili bug ise çabalarım sonucunda düzeltildi sonunda. *200903060201* numaralı buildden itibaren geçerli olan bu düzeltme sanırım v6.7’nin stabil sürümüne dahil olacaktır.

Stabil olmasa da olur diyenler gecelik derlemeler sayfasından indirilebilir.

PHP Editörleri (IDE’ler)

Editör ya da IDE’ler doğru kullanıldığında üreticiliğinizi ve kod kalitenizi kat kat arttırabilirler. Ne yazık ki birçok şeyde olduğu gibi editör konusunda da çok huysuzum. Şöyle huzurla kullanabileceğim bir PHP IDE’sine ne yazık ki kavuşamadım. İşte denediklerim:

  1. Dreamweaver (http://www.adobe.com/products/dreamweaver/)
  2. Zend Studio 5.x, 6.x Eclipse, PDT (http://www.zend.com/en/products/studio/)
  3. NuSphere PHPEd (http://www.nusphere.com/)
  4. TextMate (http://macromates.com/)
  5. NetBeans (http://www.netbeans.org/) Ücretsiz
  6. vim

Continue reading