Programcı mı? Analizci Yazılım Uzmanı mı?

Programcı, analist, geliştirici, yazılımcı…Bu ve benzeri kavramlar pek çok ülkeye ya da organizasyon kültürüne göre farklı anlamları ifade ediyor olabilir. Bizim ülkemizde faaliyet gösteren bu başlıklara sahip kişilerin görevlerini şöyle açıklayabiliriz :

Bir programcı; verilen görevleri kodlar halinde tanımlayabilen kişilere diyebiliriz. Genellikle bu görev, gereksinim dökümanları ve kullanıcı hikayelerinin formlarındaki iş analistleri tarafından tanımlanır.
Bir analizci yazılım uzmanı; kullanıcılarla, onların ihtyiaçlarını tanımlamak üzere konuşur ve bu ihtiyaçları kod ortamında döker.

Programcılar temiz, hatasız, iyi düşünülmüş ve üzerine tekrar harcama yapmaya gerek kalmayan kodlar yazarlar. Bu tamamen iyi kodun ne anlama geldiğini bilmekle alakalıdır. Biraz matematik ama daha da önemlisi sorun çözebilme yeteneği gerektiren bir iştir. Algoritmik bilgi dağarcığı ne kadar iyi olursa bir programcı o kadar başarılıdır. Analizci yazılım uzmanı ise, organiazsyonun operasyonel sistemini, veritabanı uygulamalarını, tasarım platformlarını gözden geçirir, gereksinimlerini yerine getirir.

Tüm iş analisti fikirleri ile ilgilenen, pek çok insanın yazılım geliştimeye dair düşüncülerine hüküm sürebilecek yeteneğe sahip bir yazılım uzmanı yöneticisi ile konuştuğunuzda, birkaç yıl önce programcıların kullanıcılar ile asla iletişime geçmesine izin vermeyen bir baskı olduğunu hemen söyleyecektir. Bu büyük baskı daha sonra iş analistleri tarafından üstlenil de ve analizci yazılım uzmanı fikri sözcük dağarcığımızdan kaybolup gitti. Her analizci yazılım uzmanı programcı değildir; bu nedenle de programcı, her takımda olması gereken biri konumumdadır. Bir takım, birden fazla iş analistine sahip olmak yerine bazen yalnızca bir analizci yazılım uzmanına sahip olmayı tercih edebilir.

Kabul etmek gerekir ki verilen ilk tepkilere karşı akıllarda şöyle düşünceler uçuşmaya başlıyor :

  •  Bir programcının müşteri ile konuşmasına asla izin verilmemelidir.
  •  Dökümantasyonları kim üretiyor?
  •  Fakat iş analistleri müşteriyi tanıyor!

Bu soruların çözümlerini düşündüğümüzde şu iki gerçekğin farkına varabiliriz :

  • Bir analizci yazılım uzmanı olsaydınız, doğru insanlarla çaışmanın oldukça iyi sonuçlar ortaya çıkardığını görebilirsiniz.
  • İş Analistlerinin uygulamaları üzerinden, her şeyi yaptığı halde iyi bir program ortaya çıkarmadığı zamanları görebilirsiniz.

İyi bir yazılım uzmanı lideri ya da uygulama mimarı bu konulardan bazılarını çözüme kavuşturabilir; fakat onlar da her an olmaları gereken yerde olmayabilirler. Şirketler ve devlet departmanları için Analizci Yazılım Uzmanlarının çalışması için daha büyük ekipler ve programlar düşüncesini tekrar gözden geçirme zamanı olabilir. İş analistine sahip olmayan küçük ekiplerde önceden tanımlanmış gereksinimler listesi için ayrıca vakit ayıracak kimse olmadığı için ekipten birine bu konuda uzun süreli bel bağlamak yanlış bir hareket olacaktır. Bu durumda, direkt olarak müşteri ile iletişime geçmek ve ne yapmak istediğini, uygulamanın tamamının nasıl şekilleneceğini konuşarak anlamak, istediğini verebilmek için en iyi ve en etkili yolu bulmaya yardımcı olur.

Yazılımcı çevrelerinde iş analistlerinin programcı gibi davrandığı çok alışıldık bir durumdur. Dökümantasyonlar yüksek oranda ve standart olarak programcılara kodlamaları için gönderilir. Programcı, ne için sorulduysa ona göre kodlamayı yapar ve gereklilik miktarına göre baskılayarak dağıtır. Kodu ya da dökümantasyonu her ikisini de göz önünde bulundurmadan dağıtımına yönelmek, programcıyı yalnızca bir görev yapmış gibi gösterir. Çok fazla iş analistinin olduğu güncel gruplarda ise kesinlikle doğru şeyler üretilir; fakat bu sefer de deoğru şekilde yapılmayabilir. Tipik oarak, küçük ya da tek kişilik anailizci yazılım uzmanı ekiplerinde, ekibinin yaşama süresi programcının ya da analizcinin her ikisinin de işlerinde iyi olup olmadığına bağlı olarak değişir.