Yıllardır yazılım projelerinin içinde yer alıyorum.
Geliştirici olarak başladım, ekip liderliği yaptım, yöneticilik yaptım. Bu süreçte birçok başarılı projeye de, başarısız projeye de tanıklık ettim.
Dışarıdan bakıldığında yazılım projelerindeki problemlerin genellikle teknik olduğu düşünülür.
Yanlış teknoloji seçimi.
Performans sorunları.
Yetersiz mimari.
Kalitesiz kod.
Elbette bunların hepsi önemlidir.
Ancak yıllar içerisinde fark ettiğim bir gerçek var:
Başarısız projelerin büyük çoğunluğunda asıl problem teknik değil, iletişimdir.
Üstelik bu iletişim problemi yalnızca yazılımcılar arasında yaşanmaz.
Analistler, test ekipleri, proje yöneticileri, müşteriler ve iş birimleri arasında da ortaya çıkar.
Ve çoğu zaman kimse bunun farkında bile olmaz.
Kimse Aynı Şeyi Düşünmüyor
Bir proje toplantısında on kişiye aynı gereksinimi anlatın.
Toplantıdan çıktıktan sonra herkese ne anladığını sorun.
Büyük ihtimalle on farklı cevap alırsınız.
Çünkü insanlar duyduklarını değil, anladıklarını hatırlar.
İş birimi kafasında farklı bir ekran tasarlar.
Analist farklı yorumlar.
Yazılımcı farklı düşünür.
Test uzmanı farklı senaryolar oluşturur.
Sonra geliştirme tamamlanır ve klasik cümle gelir:
“Ben bunu istememiştim.”
Aslında problem kod değildir.
Problem, baştan itibaren herkesin farklı şeyler anlamış olmasıdır.
En Tehlikeli Kelime: “Tamam”
Toplantılarda beni en çok korkutan kelimelerden biri “tamam”dır.
Çünkü bazen insanlar gerçekten anladıkları için değil, toplantıyı bitirmek için “tamam” derler.
Soru sormaktan çekinirler.
Eksik noktaları dile getirmezler.
Yanlış anlaşılmaktan korkarlar.
Sonuçta proje ilerler ama herkes farklı bir hedefe doğru yürür.
Aylar sonra ise şu cümleler duyulur:
- “Ben öyle anlamamıştım.”
- “Bana böyle anlatılmamıştı.”
- “Bu detaydan haberim yoktu.”
- “Bu değişiklik sonradan çıktı.”
Bu cümlelerin çoğu aslında eksik iletişimin sonucudur.
İyi Yazılımcılar Bazen Kötü İletişimciler Olabiliyor
Yazılım sektöründe sık gördüğüm bir durum var.
Bazı geliştiriciler teknik olarak çok güçlüdür.
Ancak konu iletişime geldiğinde zorlanırlar.
Yalnızca kodun konuşmasını isterler.
Toplantılardan hoşlanmazlar.
Detay anlatmayı sevmezler.
Karşı tarafın teknik seviyesini dikkate almazlar.
Oysa kariyer ilerledikçe şunu fark ediyorsunuz:
Teknik bilgi sizi iyi bir geliştirici yapabilir.
Ama etkili iletişim sizi değerli bir profesyonel yapar.
Çünkü yazılım geliştirmek yalnızca bilgisayarla değil, insanlarla da çalışmaktır.
Müşteri Teknik Detay Değil Çözüm İster
Birçok genç yazılımcı kariyerinin ilk yıllarında şu yanılgıya düşer:
“Müşteri teknik olarak neden böyle yaptığımızı anlarsa ikna olur.”
Gerçekte müşterilerin büyük kısmı teknik detaylarla ilgilenmez.
Onlar şu soruların cevabını ister:
- Sorunum çözülecek mi?
- Ne zaman çözülecek?
- Sistemi nasıl etkileyecek?
- Risk var mı?
Biz bazen teknik doğrulara o kadar odaklanıyoruz ki karşımızdaki kişinin ihtiyacını unutabiliyoruz.
İletişimin amacı haklı çıkmak değil, anlaşılmaktır.
Sessizlik Her Zaman Sorunsuzluk Anlamına Gelmez
Liderlik yaptığım dönemlerde önemli bir ders öğrendim.
Bir ekipte kimsenin soru sormaması her şeyin yolunda olduğu anlamına gelmez.
Bazen tam tersidir.
İnsanlar çekiniyor olabilir.
Sorunlarını paylaşmıyor olabilir.
Yardım istemekten kaçınıyor olabilir.
Bu yüzden ekiplerde güven ortamı oluşturmak kritik öneme sahiptir.
İnsanlar hata yaptıklarında rahatça söyleyebilmelidir.
Bir şeyi anlamadıklarında soru sorabilmelidir.
Risk gördüklerinde bunu dile getirebilmelidir.
Çünkü söylenmeyen problemler zamanla büyür.
Başarılı Projelerin Ortak Noktası
Bugüne kadar başarılı olmuş projelere baktığımda ortak bir özellik görüyorum.
Bu projelerde en iyi yazılımcılar olmayabiliyor.
En modern teknoloji kullanılmıyor olabilir.
Mükemmel mimari kurulmamış olabilir.
Ama insanlar birbirleriyle sürekli konuşuyordur.
Bilgi paylaşımı vardır.
Sorular erkenden sorulur.
Problemler erkenden dile getirilir.
Beklentiler netleştirilir.
İletişim güçlü olduğunda birçok teknik eksiklik telafi edilebilir.
Ancak iletişim yoksa en iyi teknik ekip bile zorlanır.
Yazılım kariyerimin ilk yıllarında iyi bir mühendis olmanın yalnızca teknik bilgiyle ilgili olduğunu düşünürdüm.
Bugün ise farklı düşünüyorum.
İyi bir mühendis;
Sadece iyi kod yazan kişi değildir.
İyi dinleyen,
Doğru soru soran,
Beklentileri netleştiren,
Karşı tarafı anlamaya çalışan,
Bilgiyi paylaşan kişidir.
Çünkü yıllar içinde öğrendiğim en önemli gerçeklerden biri şu oldu:
Yazılım projelerini çoğu zaman kod değil, insanlar başarır. İnsanların birlikte başarabilmesi ise iletişimle mümkündür.