Teknoloji terimlerine baktığımızda hemen hemen her yeni terimin Amerika’dan çıkıp dilimize girdiğini görüyoruz. Özellikle, BT çalışanları olan bizler, mecburen yarı İngilizce, yarı Türkçe konuşmak durumunda kalıyoruz. İşte, benim, development ortamlarında çok kullandığım bir terim: Gerilla programcılık. Nedir gerilla programcılık?
Türk Dil Kurumu sözlüğünden gerilla kelimesini aradığımızda karşımıza şu anlam çıkıyor: düzensiz çete. Şimdi ne alakası var diyeceksiniz, ama çok alakası var…
Türkiye’de uygulama geliştirme ortamlarında yapılan programcılığın çoğu gerilla programcılıktır. Gerilla programcılık bir çete yani programcı grubu tarafından yapılan düzensiz programcılığa denir. Belli bir analiz yapılmadan, belli bir tasarım yapılmadan, belgeleme yapılmadan yapılan programcılıktır. Üniversitelerde, özellikle Bilişim Yönetim Sistemleri bölümlerinde iki tane önemli son sınıf dersi okutulur. Birincisi Sistem Analizi, ikincisi Sistem Tasarımı. Bu derslerin amacı, bir sistemi programlaya başlamadan önce yapılacak işlerin iyi düşünülüp belgelenip onaylanıp ondan sonra programlamaya geçirilmesini öğretmektir. Mantıken bu, gerçekten bir sistem uygulamasının geliştirilmesi için yapılması gereken en önemli ilk iki iştir. Yine ders kitaplarında, bir projede harcanması gereken zamanın yüzde altmışının, sistem analizi ve sistem tasarımı; yüzde otuzunun, programlama; yüzde onunun da, test olduğu yazılır. Ancak, tabii ki burası Türkiye. Gerek yok böyle şeylere, programı yazacak kişi ya da kişiler analiz yaparken tasarlarlar, tasarlarken programlarlar, programlarken de test ederler mantığı ile projeler yapılır. Sebebi, zamanın önemli olması mı, yani projeyi çabuk bitirmek mi? Bazen öyle, bazen değil.Genelde yaptığımız her işte olduğu gibi sebebi plansızlık, programsızlık ve tembellik. Peki bu projeler nasıl sonuçlanır? Uygulama geliştirme ortamlarında çalışanlar bilirler. Bu projeler çatlar ve patlar…..
Sistem analizi niye yapılır? Bir sistemin ihtiyaçlarını belirlemek için yapılır. Sistem için gereken ortamın sağlanması için, sistemin ne amaçlar uğrunda kullanılacağını belirleyebilmek için. Bu analizin sonucunda bu sistemi hayata geçirecek tasarımın yapılması gerekmektedir. Tasarım niye yapılır? Projenin boyutlarını gerçekten anlamak, sistemin tüm detaylarını düşünüp belgelemek, tüm işleyişi çıkarmak, proje zaman ve kaynak planı yapabilmek için. Sistem tasarımı yapıldıktan sonra, projenin bölümlere ayrılarak, programcılara verilmesi gerekmektedir. Programcı ise, kendinden tam olarak ne istendiğini, yani yaptığı programlamanın hangi standartlara göre ne sunması gerektiğini bilmesi gerekir. Eksik bir analiz ve tasarım her zaman başarısız bir uygulamaya sebebiyet verecektir.
Plansızlık ve programsızlık gerilla programcılık için çok güzel bir ortamdır. Genelde programcılar, gerilla programcılık yapmayı sevmezler. Acaba, kim plansız programsız iş yapmayı sever? Ancak, analizi ve tasarımı yapılmamış bir projeyi programcının önüne koyarsanız, programcının yapabileceği iki şey vardır. Ya, kurumsal standartları (eğer varsa) bir yana koyarak, kendi standartlarına ve mantığına göre bir analiz ve tasarım yapar, belgeler ve bunun üzerinde kod yazmaya başlar, ya da sonunu göremediği bir projenin içinde erimeye razı olarak programlamasını yapmaya başlar. Programcı, birinci seçeneği seçerse, bu programcının harcayacağı zamanı çoğaltır. Projenin sonuçları programcının kişisel yetenekleri, tecrübesi ile ve zeka seviyesi ile doğru orantılı hale gelir. Bu tip gerilla programlama yapabilen programcılar, süper yetenekli ve tecrübeli programcılardır. Ayrıca, sistem analizini ve sistem tasarımı işlerini kendileri yaparak, sadece programcı değil, hem sistem analizcisi, hem de sistem tasarımcısı olurlar. Yeteneksiz, tecrübesiz veya çok zeki olmayan programcılar, bu tip projeleri kesinlikle kotaramazlar. İkinci seçeneği seçen programcı ise, maalesef, okyanusta kaybolacak bir gemiye binen kişi gibidir. “Uzun ince bir yoldayım” diye mırıldanmaya başlamaması için hiçbir sebep yoktur. Hiç bitmeyecek bir projeye girdiğini kısa bir süre sonra anlayacaktır. Bundan sonra iki şey için dua edilebilir, projeye başka bir programcının atanması veya projenin iptal edilmesi. Gerilla programcılık yapılan bir uygulama geliştirme ortamında yöneticinin taşıdığı risk ise, çok büyüktür. Düzenli plan, program ve belgeleme yapılmadığı için, yönetici, programcının işini bitirmeden kaçmaması için dua etmeye başlayacaktır. Özellikle, BT çalışanlarının ortalama altı ayda bir iş değiştirdiğini göze alırsak, bayağı büyük bir risktir bu, tabii ki hastalık, kişisel nedenler veya ölümü saymazsak…