Karmaşıklığın iki yüzü – Asli ve Arızi

Eminim çok kez başınıza gelmiştir; geliştirme yaparken, çözmeye çalıştığınız ana problem yerine bir anda kendinizi teknik sorunlarla boğuşur halde bulmak. IDE sorunları, network sorunları, yanlış konfigürasyonlar… Siz de benim gibi iseniz içinizden geçmiştir; ben elimdeki probleme odaklanmak yerine neden bunlarla uğraşıyorum.

Fred Brooks 1975 tarihli “The Mythical Man-Month” kitabında yazılım geliştirmenin zorluklarını asli(essential) ve arızi(accidental) olarak ikiye ayırıyor. Asli zorluklar problemin özü ile ilgili ve çoğu zaman soyut şeyler: veri yapıları ve aralarındaki ilişkiler, algoritmalar. Problemi nasıl çözersek çözelim oradalar. Arızi zorluklar ise probleme ürettiğimiz çözümden – yani yazılımdan ve üretim süreçlerinden kaynaklı zorluklar. Aynı problemi farklı teknoloji çatıları ile çözebiliriz esas aynı kalacak; karşılaştığımız sorunlar farklılaşacaktır.

Peki bu bilgi gerçek hayatta ne işimize yarayacak?

  • Brooks, yazısında arızi tarafta büyük gelişmelerin zaten yaşandığını ve artık buradaki iyileştirmelerin etkisinin kısıtlı olacağını söylüyor. Değer önerimizin hangi tarafa düştüğünü değerlendirerek kariyerimize yön verebiliriz. Bir .NET geliştiricisi olmak mı finans sitemlerinde uzman olmak mı daha değerli?
  • Modüler ve bağımsız bir sistem hepimizin isteği peki modül sınırlarını nasıl belirleyeceğiz? Alın size bir başlangıç kriteri: asli olanı arızi olandan ayırabilirsiniz. Örneğin bir kelime işlemci uygulamasında kelimeleri dosyadan okuduğunuz ve yazdığınız bir modül(arızi), kelimeler üzerinde işlem yaptığınız başka bir modül(asli), kelimeleri ekranda görselleştiren başka bir modül(arızi) olabilir.
  • Asli zorlukları aşmanın bir kısa yolu yok gibi görünüyor size sunulan sihirli değneklere mesafeli yaklaşın. Paydaşlarla o uzun konuşmalar yapılacak, isterler belirlenecek, sistemler tasarlanacak, demolar revizeler olacak …

Comments

Leave a comment