Gürer Özen
Diğer her alanda olduğu gibi dengeli ve sağlıklı bir kavrayışa sahip olmak için doğruların yanında ``yanlış'' yöntemler hakkında da bilgi sahibi olmak gereklidir. Bu konuda yaşanmış çok tecrübe olmakla birlikte, yazılı olarak birkaç kaynak dışında ciddi bir eksiklik bulunmaktaydı. Bu makale, ağırlıklı olarak yazılım mühendisliği ile ilgili birkaç Internet sitesinden derlenmiş, daha çok özgür yazılım alanını ilgilendiren bu tür çıkmaz yolları tanıtmaktadır.
Ortak noktaları:
En sık görülenlerden biridir. Kullanıcıları memnun etmek ve rakip ürünlerden daha iyi olmak amacıyla akla gelen her şeyi ürüne ekleme yoluna gidilir. Bir noktada ``gerekli'' ve ``yararlı'' olan ile ``cool'' görünen arasındaki sınır kaybolur, ``nitelik'' yerine ``niceliğe'' bırakır ve kalite kaybolur. Yazılım karmaşıklaştıkça hatalar çoğalır.
Örnek: Tanıtımında rakiplerinden daha uzun özellik listesini öne koyan hemen her yazılım.
Hatalı yaklaşım: Programcıları bir araya toplayıp herkesin ürüne istediği özellikleri eklediği bir tasarım yapmak.
Çözüm: Tasarıma kullanıcı istekleri ve profili ile başlamak.
Herkesin kullanabileceği bir standart oluşturmak için tüm grup ve kişiler bir araya getirilir. Hedefi ve vizyonu gözeten bir hakem bulunmamaktadır. Toplu kavgadan ne sonuç çıkarsa kabul edilir. Tarafların her biri kendi vizyonunun bir parçasını son ürüne sokabildiği için ortaya hiç kimsenin beğenmediği ama düzeltilmesi için de kimsenin tartışacak enerjisinin kalmadığı bir ucube çıkar.
Örnek: Sözde ``web standartları''.
Hatalı yaklaşım: Tüm fikirlerin bir sentezi en iyi sonucu verir.
Çözüm: Ortaya çıkan şeyin çözmek istediğimiz soruna bir faydası var mı?
Tüm tasarım ve uygulama tartışmaları eposta ve benzeri yollarla yürür. Sanal ortamın limitli ifade olanakları yanlış anlaşılmalara ve kavgalara yol açar.
Örnek: Eposta listelerinde sıkça karşılaşabileceğiniz tartışmalar.
Hatalı yaklaşım: Internet sayesinde insanlar evlerinde çalışabilir, dünyanın öbür ucundan yazılım geliştirebilir.
Çözüm: Toplantılar, bir araya gelmeler, hatta çeşitli eğlenceler düzenlemek ve tarafları fiziksel olarak tanıştırmak.
Tasarruf yapmak amacıyla diğer gruplara destek sağlayan gruplarda kısıntı yapılır. Azalan destek ile birlikte tüm grupların verimi düşer. Bir benzeri de destek gruplarının önemsenmeyip denetlenmemesi yüzünden iş verimlerinin düşmesiyle oluşur.
Örnek: Joel Spolsky'nin eski işyeri ile problemleri ( http://joelonsoftware.com/articles/fog0000000043.html madde 9)
Hatalı yaklaşım: Yazılımcılar asıl önemli işi yapıyor. Desteğe ihtiyaç duymazlar, ufak tefek işleri de arada kolayca halledebilirler.
Çözüm: Gerekli önlemleri alıp destek işlerinin yürümesini, yazılımcıların ofis temizliği, halkla ilişkiler, basit işlerle zaman kaybetmemesini sağlamak.
Kullanıcı ya da yönetici çok acele olarak bitiş tarihini bilmek ister. Daha yeterli bilgi mevcut değil ve yol belirsizliklerle dolu iken, bu baskıyla bir takım varsayımlar yapılır. Eksik bilgiyle saptanan tarihler deadline haline gelir. Doğal olarak işler yetişmez.
Hatalı yaklaşım: Kesin sayılar üzerinden hesap yapıp proje istatistikleri çıkarmak, gidişatı bu şekilde takip etmeye çalışmak.
Çözüm: Önümüzü göremediğimiz yerlerde ana hedefi ufak hedeflere ayırmak. Kısa sürede yapılabilecek ufak hedefler üzerinden giderek yolun belirgin hale gelmesini sağlamak.
Kullanıcılar yeni bir özellik istediklerinde genellikle çözmeye çalıştıkları sorundan çok bu özelliğin nasıl uygulanacağından bahsederler. Özellik kullanıcıdan geldiği için bir gereksinim olarak görülür. Aslında zaten basitçe çözülebilen bir sorun için yazılımın karmaşıklığı gitgide arttırılır.
Hatalı yaklaşım: Kullanıcıyı geliştirici yerine koymak. Hangi sorunu çözmek için istendiğini öğrenmeden istekleri gereksinim saymak.
Çözüm: Önce isteklerin nedenini öğrenmeye çalışın. Gereksinimler her güncellendiğinde, üzerlerinden geçip bunları basitleştirebilir miyim diye düşünün.
Not Invented Here (NIH) syndrome. Bir bileşene ihtiyaç duyulur. Söz konusu işi yapan çeşitli hazır çözümler bulunmaktadır. Bu çözümler grup dışında geliştirildikleri için değerlendirmeye bile alınmaz. Belki daha kötü bir karşılık geliştirmek için kaynaklar ziyan edilir.
Hatalı yaklaşım: Biz ilk kez el attığımız sorunu o alanın deneyimlilerinden daha iyi çözeriz. Başkalarının koduna muhtaç değiliz.
Çözüm: Kimler bu sorunla karşılaşmış, nasıl çözmüşler, biz de bu çözümleri kullanabilir miyiz?
Bir kişi veya kurum uzun zamandır bir işi yapmaktadır. Bu süreçte yeni deneyimler kazanmamış, hep aynı çözümle başarıya ulaşmışlardır. Aslında iyi olmayan ama sorunu bir şekilde çözen bu yöntemi farklı bir sorun alanına taşımak istediklerinde başarısız olurlar.
Hatalı yaklaşım: Sorunu bugüne kadar nasıl çözdüysek gelecekte de aynı biçimde çözeriz.
Çözüm: Fırsat çıktığında yeni yaklaşımları denemek. Birkaç başarıdan sonra her sorunun altından kalkabileceğini sanmamak.
İki büyük bileşen iç içe geçirilir, dahili detayları birbirine bağımlı hale getirilir. Bileşenlerden birini değiştirmek veya başka bir platforma taşımak gerektiğinde ortaya büyük bir iş yükü çıkar.
Hatalı yaklaşım: Farklı sorunların çözümlerini bir arada tasarlamak. Yazılımı katmanlandırmamak. Soyutlama kullanmamak.
Çözüm: Tarafları en erken zamanda boşamak gereklidir. Faydacılığa kaçıp bileşenleri baştan ayrı tutmak en iyi çözümdür.
Bir yazılım özellikler kazandıkça başka sorunlara da yöneltilir. Ana görevinden gittikçe uzaklaşan bir takım fazladan ufak işler yapmaya başlar. Karmaşıklığı artar, her işi yapmaya çalışıp hiç bir işi iyi yapamayan bir hale gelir.
Örnek: Word yazılımı. Mektup yazmak için çok büyük, belge hazırlamak için çok düzensiz, serbest tasarım için çok sınırlayıcı. Yanında popup blocker ile gelen NVidia grafik kartı sürücüsü de başka bir örnek olabilir.
Hatalı yaklaşım: Büyük tek bir yazılımla her sorunu çözelim. Hazır altyapımız var, boş durmasın bu kodlar.
Çözüm: Yazımın yalnızca ana görevini en iyi biçimde yapması üzerinde yoğunlaşmak.
Kullanıcıların kendi isteklerini bilemeyeceği, çoğunun bırakın bilgisayarı, yapmak istedikleri işi bile bilmediği varsayılır. Programcılar piyasayı ve kullanıcıları dikkate almayıp kendi varsayımları ile tasarım yapar. Ürün başarısız olur.
Hatalı yaklaşım: Ben karşımdaki adamın sorununu ondan iyi bilirim.
Çözüm: Empati, kullanıcı testleri, pazar araştırmaları.
Yeteneksiz kişilerle ilgili genel problem, onların kendi yeteneksizliklerini farkedemeyecek kadar yeteneksiz olmalarıdır. İyi durumda olduklarını sandıklarından kendilerini düzeltip geliştirmeye çalışmazlar.
Hatalı yaklaşım: Bit açılır, söz konusu kişi yokmuş gibi davranılır. Söyledikleri ve yaptıkları göz ardı edilir.
Çözüm: Bu kişilerin yeteneklerinin arttırılması için çalışmak, onları durumlarının farkına vardıracak ve hızlanarak kendilerini toparlamalarını sağlayacaktır. Ancak genellikle bu durumdaki kişiler 10 yaşından sonra düzeltilemeyecek türden temel bozukluklara sahip olduklarından işin yürümeyeceğini baştan kabul etmek en iyisidir.
This document was generated using the LaTeX2HTML translator Version 2002-2 (1.70)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -no_subdir -split 0 -show_section_numbers /tmp/lyx_tmpdir27291dAe308/lyx_tmpbuf0/antipat.tex
The translation was initiated by on 2005-03-21