5 min read

Yazılımcılar ve İş Geliştiriciler Arasındaki Bitmek Bilmeyen Savaş

Son zamanlarda kendimi yine acilen bitirilmesi gereken bir projenin içerisinde buldum. Normal şartlarda daha geniş bir zaman diliminde kodlanması gereken projeyi hepimizin bildiği sektördeki kalıplaşmış nedenlerden dolayı çok daha kısa bir süre de bitirmemiz gerekiyor. Yazılımcılarda panik havası hakim. Bir tarafta “Bu projenin bu kadar kısıtlı bir zamanda bitmesi imkansız, daha fazla zamana ihtiyacımız var.” diyen yazılımcılar, diğer tarafta da “Evet belki bitmeyebilir ama şartlar bunu gerektiyor. Bu kısa zamanda bunu full özelliklerle bitirmemiz gerekiyor.” diyen iş geliştirme ekibi.

Hal böyle olunca; isteklerinden taviz vermek istemeyen, müşteriyi memnun etmek adına gelen her talebe “evet bunu yapabiliriz” diye cevap veren iş geliştiriciler ile yazılımlarını kendi çocukları gibi görüp, yazılımlarının sağlıklı ve uzun ömürlü olmasını sağlamak için birçok isteğe hayır diyen yazılım ekipleri kendilerini yeni bir proje savaşında karşı karşıya buluyorlar. Kısaca iş geliştirici grubuna “Evetçiler” ve yazılım geliştiriciler grubuna da “Hayırcılar” diyebiliriz.

Yazılımcılar olarak neden HAYIR deriz?

Tahmin edersiniz ki biz yazılımcılar olarak “Hayırcılar” grubunun temsilcileriyiz. Bir yazılımcı olarak gelen her yeni kod yazma isteğine varsayılan olarak HAYIR cevabının verilmesi gerektiğini düşünenlerdenim. Hatta zamanında bu konu ile ilgili dilim döndüğünce bir yazı yazmaya çalışmıştım. Buradan okuyabilirsiniz. Geliştirilen yazılımın amacını ve kapsamını tam olarak özümsedikten sonra hangi özelliğin eklenmesi diğer bir deyişle hangi kodun yazılıp yazılmaması gerektiğinin ayrımını yapmak nispeten daha kolay oluyor.

Hayırcılar cephesinde olarak biz yazılımcıların savunduğu tek şey gelen isteklerin gerçekten yazılımın amacına ve kapsamına uygun olarak gerçek bir ihtiyaçtan geldiğini anlamak ve buna göre kod yazmak. Dolayısı ile Hayırcılar olarak kötümser veya kod yazmak istemeyen yazılımcılar tayfasını temsil etmiyoruz. Sadece gereksiz tüm ıvır zıvıra hayır diyerek, gerçekten müşterinin ürünü kullanırken çektiği acıdan ortaya çıkan ve sadece bir müşteri değil birden fazla müşteriden gelen ihtiyaca yönelik tüm isteklere “Evet! Hadi bunu kodlayalım” diyoruz.

Diğer taraftan iş geliştiriciler açısından durum her zaman bu şekilde algılanmayabiliyor. Tabi ki yazılım geliştirme süreçlerinden az çok haberdar olan ve buna göre müşteriden gelen istekleri yazılım ekibinin önüne getirmeden evvel güzel bir filtre uygulayan iş geliştiriciler de var. Onlara saygımız sonsuz ve tüm bu yazılım geliştirme sürecinde bir takım olarak onlarla birlikte hareket edebiliyoruz. Malesefki sektördeki genel profilin bu kadar pozitif ve farkındalık bakımından bu seviyede olduğunu düşünmüyorum.

İş geliştiriciler neden her isteğe EVET der?

Çoğu iş geliştiricisini bilirsiniz. En azından yazılım hayatınız süresince bir veya daha fazla kez onlarla uzlaşma adına bir mücadele içerisinde bulunmuşsunuzdur. “Müşteri her zaman haklıdır” veya “müşteri velinimetimizdir” felsefesi ile güdümlendiklerinden midir bilinmez, müşteri tarafından gelen her isteğe EVET deme eğilimindelerdir. Çoğu durumda gelen isteğin gerçek bir ihtiyaçtan mı yoksa müşterinin kafasında kurduğu fanteziden mi geldiğini sorgulamaksızın varsayılan olarak bu isteği yazılım geliştirme sürecine dahil etmeye çalışırlar. Müşteri ve yazılım ekibi arasında herhangi bir filtreleri yoktur. Müşteriyi memnun etmek adına en ufak isteği bile geri çevirmeden yazılım ekibinin önüne getirirler ve bunu olmazsa olmaz bir özellikmiş gibi göstermeye çalışırlar. Belkide çalışmazlar sadece firma içerisinde geliştirilen yazılımın amacı ve kapsamı kendileri tarafından tam olarak özümsenmediğinden veya firmanın izlediği politikadan dolayı her özellik onlar için hayatı önem taşır. Çünkü yazılım geliştirme süreçlerine ve bir yazılımın hayat eğrisi hakkında en ufak bir fikirleri bile yoktur.

Gelen gereksiz istek yazılımcılar tarafından HAYIR cevabı verildikten sonra ilk ikna çalışmalarının başını “Ne olacak ya hemen ekleyiver işte. Küçücük bir özellik. Ne kadar zor olabilir ki? Ben olsam çok kolay yapardım.” gibi cümleler çeker. Çok mu kolay??? Gerçekten mi? Yazılım geliştirme ile ilgili uzaktan yakından en ufak bir bilgisi olmadan gelişi güzel bir ikna yöntemi olduğu ne kadar da net gözüküyor. Olayın kolaylık ve zorlukla alakalı olmadığı henüz kavranmamış durumda. Olay tamamen o firmadaki yazılım kültürü ve geliştirilen yazılımın gelecekte izleyeceği hayat eğrisi ile alakalı. Fakat bu yazılımcılar tarafından anlaşılabilirken iş geliştiriciler bakımından anlaşılması çok zor bir olgu gibi görünüyor.

Peki Evetçiler ve Hayırcılar nasıl uzlaşabilir?

Direk olarak bunun çözümü şudur diyerek size bir gümüş kurşun sunacak durumda olduğumu düşünmüyorum fakat kendi firmamızda uygulamaya çalıştığımız ve en azından işe yaradığına dair izlenimler edindiğimiz naçizane tecrübelerimizi paylaşmak istiyorum. Belki tecrübelerimiz diğer ekiplere de yardımcı olabilir.

Öncelikle bunun firma kültürü ile ilgili olduğunu düşünüyorum. Eğer şirket bir yazılım şirketi ise yani en büyük sermayesi geliştirilem yazılımlar ise ilk olarak yazılıma, yazılım ekibine ve yazılım geliştirme süreci ile ilgili kültürün ekipler arasında sağlam temellere oturtulması ile işe başlanabilir. Geliştirilen yazılımın dış dünyaya tanıtımını yapan ve yazılımın istenilen olgunluğa ulaşmasında ki geri bildirim döngüsünde önemli yere sahip iş geliştiriciler, şirketteki yazılım kültürünü iyi almış olmalıdırlar. Kendi iş modellerini ve iş geliştirme stratejilerini yazılım ekibi tarafından geliştirilen yazılım üzerine kuracakları için yazılım ekibine yakın olmak, onlarla gerçek bir iş birliği içinde çalışmak önem arz eder.

Yazılımın tam olarak hangi probleme çözüm olarak üretildiğini anlamak dolayısı ile yazılımın amacını anlamak gelen istekleri yazılım ekibinin önüne getirmeden önce bir filtre oluşturma da yardımcı olacaktır. Gereksiz isteklere karşı geliştirilen bu filtre bir elek gibi görev yapacağından yazılım hayat eğrisi boyunca ekiplerin koordineli olarak oturup konuşarak uzlaşma yoluna gidebilmeleri bu eleğin olgunlaşmasında önemli rol oynayacaktır. Zamanla şirket kültürü ile harmanlanarak olgunlaşacak bu elek sayesinde müşteri memnuniyeti iş geliştiriciler tarafından sağlanabilirken, yazılım ekibine de geliştirdikleri yazılımı uzun yıllar boyunca müşterilerin problemini çözmede amacından şaşmadan sağlıklı bir şekilde geliştirebilme imkanı verecektir.

Ayakta durmasını sahip olduğu yazılımlara borçlu olan bir şirket için iş geliştiricilerin amaçlarından önce yazılımın amaçları önde gelmelidir. Diğer bir deyişle iş geliştiricilerinin amaçları da yazılımın amacının etrafında toplanarak paralel olarak ilerlemelidir. Daha önce bahsettiğimiz gibi bir yazılımın hayat eğrisini bilmek, gereksiz olmasına rağmen eklenen her bir özelliğin uzun vade de yazılımı nasıl kötü etkileyebileceği konusunda yardımcı olacaktır. Aktif geliştirmenin eklenen gereksiz özelliklerden dolayı uzun vade de yavaşlayabileceği hatta durma noktasına gelebileceği yazılım ve iş geliştirme ekibi tarafından hatta ve hatta tepe yöneticileri tarafından tam olarak anlaşıldığına emin olunmalıdır. Doğru yazılım kültürü oturtulduktan sonra olumsuzluklar ve uzlaşmazlıklar en aza indirgenmiş olacaktır.