Kötü Programcıya Övgü

0
FZ
Harold kötü bir programcıydı, gerçekten kötü bir programcı. Hani hem kendisi hem de etrafindaki herkes için kendine yeni bir meslek bulması gereken türden. Ama Harold iyi biriydi ve bir işte ömür boyu çalışacaklardandı; çok uzun süredir şirketteydi. Ezelden beri alt kademelerde olan bir programcısıydı, hiçbir zaman terfi etmedi, her sene maaşına en düşük zammı aldı ve yeri çok değiştiriliyordu. Ama kimse onu işten çıkarmak istemiyordu. Böylelikle ne zaman yeni bir proje başlasa ve yeni adama ihtiyaç olsa, Harold'ın takımının müdürü bu durumu fırsat bilip onu yönetmek zorunda kalacak bir sonrakı bahtsız kişiye gönderiyordu Harold'ı. Bir seferinde bu kişi ben oldum.
Kötü Programcıya Övgü

Bu olay, bir şirkette uzun yıllar kalmanın günümüzdekinden daha anlamlı olduğu 1980'li yıllarda geçiyordu. Yönettiğim ekip çok istekliydi. Belirleyici özelliğimiz daha iyi bir takım olma isteğimizdi ve bu hedef için de epey çalışıyorduk. İyi tanımlamış ve denenmiş süreçlerimiz vardı, gereksinim ve tasarım modelleme yaklaşımları geliştirdik ve gerçekleştirdik; gereksinimleri, tasarımı, kodu, test planlarını, test olaylarını, her şeyi denetleyen kapsamlı bir gözden geçirme yöntemi uyguladık ve bu yöntemi aynı zamanda mükemmelleştirdik. Hatta yenilikçi bir test etme yöntemi geliştirdik. Ve daha etkin olduğumuz zaman, daha da etkin hale gelmek için çok çalışıyorduk. Sonra takıma Harold katıldı.

Harold ekibe katılmadan çok daha önce ekipçe bir anlaşma yapmıştık: hiç kimsenin kötü bir işini projeye dahil etmeyecektik, o iş ister baş tasarımcıdan gelsin, ister test koordinatöründen, isterse de müdürden. Ve hatta Harold'dan gelse bile. Ekibin her üyesinin %100 başarılı olması için gerekli tüm süreçleri, şablonları, desteği, kaynakları, eğitimi, gözden geçirmeyi ve geribildirimi sunuyorduk. Bu başarı oranını ölçen metrikleri bile tanımlamıştık. Harold bize katıldığında ona sistemimizi gösterdik ve eğer bizim ekibin bir üyesi olacak ise bahsettiğimiz süreçlere tam olarak uymanın şart olduğunu açık açık belirttik. Bu disiplin herkes için geçerliydi, Harold için bile.

Bir Program Yeniden Tasarlanıyor

Harold'a verilen ilk görev kolay bir program sayılırdı. Kodlamaya başlamadan önce aldığı pakette iyice gözden geçirilmiş gereksinimler, tüm grafikleriyle birlikte ortaya konmuş görsel tasarım, test koşullarını geliştirmesi için kullanılabilecek, geçerliliği kanıtlanmış bir süreç ve biten kodun gözden ne zaman geçirileceğine dair bir zaman planı vardı. Harold kodu yazarken proje ile ilgili başka meseleler gündeme geldi ve bu yüzden kodunu gözden geçirme tarihini aksattık. Harold gözden geçirmemiz için bize kodunu getirdiğinde birim testlerini çoktan yazıp geçmişti. Bu durum normal ve beklenen süreçteki çalışma sırasına uymuyordu ama Harold'ın hatası değildi ve yazdığı program çalışıyordu, en azından Harold'a göre. Ancak kodu incelemeye başladığımızda gördük ki yazdığı program gözden geçirilmiş ve onaylanmış tasarıma kesinlikle uymuyordu. Harold ekibin sistem tasarımcılarına alternatif bir tasarım sunup bunu savunmamıştı, kendi kafasına göre ne şekilde istiyorsa öyle kod yazmıştı. Bu yüzden de yazdığı kod incelemeyi başarı ile geçemedi. Harold şok geçirmişti: "... ama tüm birim testleri geçti!..." diye bağırmıştı. İtirazları ve şikayetleri kurulum yöneticisine kadar çıkmıştı: "... çalışan bir şeyi yeniden yazmamı istiyorlar!..." Neyse ki bu protestosu görmezden gelindi ve yönetici de ekibin tarafını tuttu. Harold programı tekrar yazmak zorunda kaldı, bu sefer özgün belgelerdeki tasarıma uyacak şekilde. Kod yeniden gözden geçirme sürecine girdiğinde ilk tasarıma uygundu, iyi çalışıyordu ve bir iki basit yorum dışında hiç sorun çıkarmadan süreci başarı ile geçmişti.

Bazen yazılım süreçleri tüm bireysellik ve yaratıcılık izlerini silip atacak şekilde uygulanıyormuş gibi görünür.

Daha İyi Bir Takım, Daha İyi Bir Sistem

Takımca ilginç bir şey fark ettik: Harold başarısız bir programcı olduğu için daha iyi bir takım haline gelmiştik: sürecimizi daha iyi tanımlamış ve daha sıkı uygulamaya başlamıştık, ölçümleri kurmuş ve daha tutarlı bir şekilde almaya başlamıştık, programcılara (özellikle Harold'a) destek ve yönlendirme sağlamayı daha iyi öğrenmiştik. Her şeyden önemlisi, bir takım hedefi ve etiği benimsemiştik: asla kötü iş kabul etmeyecektik ve iş yapamayan, daha zayıf bir takım üyesini de kolayca takımdan çıkarmayacaktık; kişinin takım standartlarına ulaşabilmesi için ne gerekiyorsa onu yapacaktık. Takım üyeleri bu hedefi desteklediği, kaynaklardan yararlandığı ve geçerli ürünler ürettikleri sürece takımımızın bir parçası olabilirdi ve takım onları profesyonel olarak gözetecekti. Bu etik bizi daha iyi bir ekip yaptı.

Modern fizik, bir sistemin davranışının o sistemin tek tek parçalarının davranışının doğrudan bir fonksiyonu olmayabileceğini öğreniyor. Bir saatin içindeki çark dişlerinin hepsi büyük çark dişi olmak zorunda değil. Bazen bir sistemde daha az iyi parçalar kullanarak daha iyi davranış elde edebilirsiniz. Bazen en iyi takımlar sadece süper kahramanlardan oluşmazlar ve eğer bir takım bir sınırlamayı aşmakta kararlı davranırsa, kendi personelinden kaynaklanan bir sınırlandırma bile olsa, o sınırlandırmanın olmadığı durumundakinden bile daha iyi bir takım haline gelebilir. Kötü programcıları işe almalıyız demiyoruz ama takımlar bir kutudaki birbirine bağlanmamış somunlar ve civatalar gibi değiller, onlar bir sistem. Etkin bir takımın dinamikleri bazen göründüğünden daha karmaşık ve inceliklidir ve performansı düşük kişilerin projeye ürettikleri ürünlerin ötesinde ve farklı etkileri olabilir.

Bazen yazılım süreçleri tüm bireysellik ve yaratıcılık izlerini silip atacak şekilde uygulanıyormuş gibi görünür. Sanki sistem kurmak, düşünce gerektirmeyen bir süreç haline getirilmeye çalışılır. Bu takımda biz bunu özellikle yapmamaya özen gösterdik; ama aynı zamanda kimsenin değerini ve getirisini düşünmeden herhangi birşeyi herhangi bir anda değiştirmesine izin vermemeye dikkat ettik. Kuşkusuz kimseye sadece tembellikten, yanlış anlamalardan veya yetersizliklerinden dolayı değişiklik yapmalarına izin vermedik. Ve kimsenin başarısız olmasına da izin vermedik.

Harold'ın Kurtuluşu

Harold'ın kodu onaylandığında kendisi herkesi şaşırtan şu sözleri sarf etti: "Biliyor musunuz, bu tasarım benim daha önce yaptığımdan çok daha iyi." Aslında o andan sonra Harold bizim yaklaşımımıza tamamen inanmaya başladı ve yine herkesi şaşırtacak şekilde bizim ekibin ve sürecin misyoneri gibi davranmaya başladı. Bununla kalmadı, ekibin sürecine ve kullandığı araçlara da katkıda bulundu, elbette uygun ekip incelemeleri ve onaylarından sonra.

Ekibimiz yazılan bir kodun inceleme esnasında varabileceği en üst kalite seviyesini "OLDUĞU GİBİ" olarak belirlemişti. Yani incelenen kodda hiçbir hata yoksa, hiçbir işlevsel sorun, tasarıma dair bir şüphe yoksa, belgelendirme tamamen yapılmışsa ve imla hatası dahi yoksa bu sistem "OLDUĞU GİBİ" kabul edilebilir, mükemmel bir sistem olarak etiketleniyordu. Projenin yaşam döngüsü boyunca gerçekleştirdiğimiz 500 incelemeden sadece tek bir kişinin hazırladığı bir kod "OLDUĞU GİBİ" kalite seviyesiyle geçebilmişti. O kişi Harold idi.

Phillip G. Armour'ın "In Praise of Bad Programmers" başlıklı makalesinden yazarın izni ile Elif T. Kuş, Yaşar Safkan ve Emre Sevinç tarafından Mart 2010'da çevrilip yayımlanmıştır.

Kaynak: http://ileriseviye.org/blog/?p=3025

Görüşler

0
Tarık
Çok soğuk bir hikaye.

Çok soğuk başarısız programcı VS Başarılı programcı karşılaştırması

Bana programcılık, hacker hikayesinden çok robotize ISO9001, OHSAS18001 kalite standardı başarım kılavuzlarını hatırlattı.

İnsanların neden medya hacker lığına özendiklerini şimdi az biraz anlayabiliyorum. Zira uzmanlık arttıkça herkesin ilgisini çeken edebiyat yerini böylesi soğuk hikayelere bırakıyor anlaşılan. Biraz insan edebiyatı yahu!, dönün artık şu Mars atmosferinden...!
0
ekomut
Kesinlikle katılıyorum.
0
mtkocak
İhsan berbat bir programcıydı. Çalıştığı işyerinde, beyaz duvarlarda oynaşan huzursuz jaluzi gölgelerinin verdiği mutsuzluğun otomatik termostatlı klima sesleriyle karıştığı zamanlarda çalışırdı hep. Klima rüzgarında titreşen jaluzi yaprakları her zaman koda eklemeyi unuttuğu son class yüzünden çöken moralinin getirdiği melankoliyle cıvıldaşmakta, fotokopi kağıtlari ise bu soğuk gecelerde etrafta uçuşmaktaydı.
0
Tarık
...
0
Tarık
...
0
SydBarrett
İşini severek, samimiyetle yapmaya çalışan, farklı düşünen ve özeleştiri yapabilen insanın mutlu sonu.

Motive eden bir yazı, Teşekkürler.
Görüş belirtmek için giriş yapın...

İlgili Yazılar

kernelguys.org: Türkçe Sistem Programlama

raistlinthewiz

Birsüre önce almış olduğum domain "kernelguys.org"u değerlendirmeye karar verdim. Aslında Mambo kurulumu yapmayı düşünürken bi anda kendimi vbulletin bir sistemle uğraşırken buldum.

Amaç?

http://kernelguys.org'un amacı Türkçe sistem programlama sunabilmek ve tabii ki eğer mümkün olursa bu konuyla ilgilenenleri bir araya getirebilmek.

Hiçbir şekilde kernelguys "hadi yeni bir forum kuralım" diyerek kurulmuş bir site değildir; vbulletin ihtiyaçlarımızı karşıladığı için seçilmiştir. Şu anda siteye aktif olarak içerik eklemekte ve bu süreçte diğer arkadaşlardan da destek beklemeyiz.

Nokia: Python Kullanmak İçin Bir Sebep Daha

FZ

Cep telefonu üreticisi Nokia, S60 serisi cep telefonlarının artık Python ile programlanabileceğini duyurdu. Açık kodlu olarak geliştirilen bu proje ile cep telefonlarını programlamak çok daha kolay hale gelmiş durumda. Bir kıyaslama yapmak gerekirse Hello World in C++, Epoc style (for Symbian OS) koduna bakılabilir. Benzer işi yapan bir Python programı ise 4-5 satır uzunlukta. (C++ linki için Hakan Latifaoğlu'na teşekkürler.)

Pythoncard çıktı

gencbeyin

Pythoncard çıktı! :-))
Eski Macintoshcular belki bilirler hypercard apple üstünde grafik arayüzlü programlar geliştirmek için harika bir araçtı. Bundan esinlenerek ortaya atılan bir proje, python skriptlerin grafik arayüz ile ilgili tanımlamalarını ayrı bir kaynak dosyasında saklıyarak, zahmetsiz ve kolay okunur uygulama geliştirilmesine olanak tanıyor.
Ayrıntı için bakınız... Tabii ki bu bir açık sistem projesidir ve katkılarınızı bekliyor, ancak o zaman mükemmeliğe ulaşacak! Bu işten anlayanlar hiç durmasın ...
Stephen Figgins'in bir yazısından...

OpenOffice.org 1.0

tongucyumruk

OpenOffice.org geliştirme takımı yazılımın 1.0 sürümünü duyurdu. MS Office ailesine güçlü bir alternatif olan OpenOffice.org Sun Microsystems'ın kaynak kodunu açtığı StarOffice temel alınarak geliştirilmiş bir ofis yazılımı. Yazılım paketinin içinde kelime işlemci, tablolama, sunum ve çizim gibi araçlar geliyor. Programın içinden StarOffice'teki en sinir bozucu olay olan integrated desktop'ın çıkarılmış olması güzel birşey. Ayrıca ekranda gösterdiği türkçe karakterler Linux altında pek iyi gözükmüyorsa da bastığınızda kağıda çok güzel geçiyor...

Bilgisayar Sektöründe Yazılım Seferberliği

Nightwalker

2000 Yılında Kurulan Türkiye Bilgisayar Mühendisleri ve Programcıları Derneği, (TBMPO), bilgisayar sektörünün gelişmesine katkıda bulunmak adına çeşitli eğitim faaliyetleri organize etmektedir. Bu çalışmaların en başında KOSGEB' le oluşturulan stratejik bir ortaklığın sonucu olarak başlatılan YAZILIM SEFERBERLİĞİ dir. Müracaat eden firmalar şu an KOSGEB'in 38 tane teşvik ve hibe imkanlarından yararlanma fırsatı bulacaklardır.