Yazılım Takımlarında Baarı Tunca SELBES Meteksan Sistem, Simülasyon ve Görsel Sistemler Orta Dou Teknik Üniversitesi, Bilgisayar Mühendislii, Ankara, Türkiye e-posta: tunca.selbes@sgs.meteksan.com.tr e-posta: tunca.selbes@isbank.net.tr Özet Günümüz yazılım takımlarının büyük bir çounluu çok iyi yazılım gelitiricilerden olumalarına ramen, projeler baarısızlık ile sonuçlanmaktadır. Yazılım takımları gerekli özen gösterilmeden kurulmakta ve projelere atanmaktadır. Takım performansları unutulmakta, kiisel performanslara önem verilmektedir. Doru olan ise takım performansının önemli olmasıdır. Yazılım gelitiriminde motivasyon sanıldıından çok daha büyük önem taımaktadır. Bu makale, yazılım takımı kurarken göz önünde bulundurulması gereken noktaları, kiisel ve takım performanslarının önemini, motivasyonun gerekliliini, takım içindeki roller ve takım psikolojisi hakkında yapılan literatür aratırmasını, kiisel deneyim ve görüleri içermektedir. Anahtar Kelimeler Kiisel Performans, Takım Performansı, Motivasyon, Roller, Koordinasyon, Takım Psikolojisi 1. Giri Dünyada küçük, orta ve büyük ölçekli birçok yazılım irketinde, yazılım gelitiricilerin performanslarını artırmak en önemli ve en zor konulardan biridir. Bu nedenle takımları kuran kiilere çok büyük görev dümektedir. Takımları, birbirleri ile kolaylıkla anlaabilecek doru kiilerden kurmak gerekir. Doru roller, doru kiiler ve takım ruhu ekipte yer aldıı anda baarı kaçınılmazdır. Kiisel performanstansa takım performansının daha önemli olduu unutulmamalıdır. Yazılımda baarıyı salayan etkenler arasında kiisel performans, takım performansı, sosyal aktivite, doru roller ve kullanılan araçlar gösterilebilir. Takım baarısı ise müteri memnuniyeti, maliyet etkinlik, zamanında ve üretkenlik olarak ölçülebilir.
2. Kiisel Performans Mı, Takım Performansı Mı? Kiisel yapılan yazılım projelerinde veya küçük yazılım projelerinde, kiisel performans gerçekten büyük önem taır. Fakat proje boyutu büyüdükçe ve buna balı olarak projede çalıan insan sayısı çoaldıkça takım performansının önemi ortaya çıkar. Kimse takım çalıması olmadan sadece kiisel performansı ile büyük projeleri baarısızlıktan kurtaramaz. Tabiî ki kiisel performans yüksek olmadan takım performansı yüksek olamaz. Ama bu bir kiinin yüksek performansının bütün takım performansını artıracaı anlamına gelmez. Esas önemli olan her bir bireyin kiisel olarak maksimum performansa ulaıp, takım içerisinde bir sinerji yaratmasıdır. Neden yetenekli ve özel programcıların oluturduu takım, gerçek bir takım olamayabilir?. Bunun nedeni bazı programcıların birlikte çalıamamaları veya uyum gösterememeleridir. Bu yeteneklerinden veya özel olmalarından kaynaklanmaz; sorun kiisel konulardandır [1]. Takım içindeki insanların iletiimi güçlü olmadan, gerçek bir uyum salanamaz. 3. Motivasyonun Performansa Etkisi Her meslekte olduu gibi yazılım sektöründe de performans, motivasyondan direk etkilenmektedir. Çalıanların motivasyonu ne kadar yüksek ise performansları da o kadar yüksek olur. Kiinin motivasyonu; psikolojik faktörlere, yeteneklerine ve iletiim kabiliyetine balıdır. Bu noktada yöneticilere büyük görev dümektedir. Çalıanların motivasyonunu yükseltmek için yöneticiler, çalıanlarının psikolojik yönlerini kefetmeli, sorunlarına yardım etmeye çalımalı, maddi ve manevi yönden onların yanlarında olduklarını hissettirmelidirler. Yöneticiler çalıanların yeteneklerini gelitirmek için onları eitimlere göndermeli ve her yönden destek olduklarını göstermelidirler. Bu motivasyon yükseltici faaliyetler gerçekletirilirken mutlaka olumlu bir iletiim kurulmalıdır. Bu noktada yöneticiler irket politikalarını belirlerken yüksek performans bekleyip çalıanlarını motive mi etmeliler, yoksa önce çalıanlarını motive edip daha sonra yüksek performans mı beklemeliler? Bence bu konuda irketler her iki yöntemi aynı anda kullanmalı ve çalıanlarına uyguladıı politika u ekilde olmalıdır: Önce çalıanını motive etmeli, daha sonra bu motivasyondan yüksek performans beklemeli, aldıı yüksek performansa karı da çalıanını tekrar motive edecek ekilde ödüllendirmelidir. Bu döngü içinde takımın ve irketlerin daha baarılı olabileceini düünüyorum. 4. Takım Yaratmak Takımlar projelere göre yaratılır. Projenin içerii ne kadar büyük ise takım da o kadar büyük olur. Projeler iki bileenden var olur diyebiliriz. Birincisi teknik bileenler; süreçler, prosedürler, kullanılan araçlar, metodolojiler, kullanılan diller gibi. kincisi ise organik bileenler; insanlar, motivasyon, düünceler gibi. Projelerde çou zaman teknik bileenler daha çok önem arz etmektedir. Projenin baından sonuna teknik konularda birçok toplantı birçok deiiklik yaanır.
Organik bileenler ise gerekli mevkilere insanlar atandıktan sonra unutulmaktadırlar. Gerekli önem salanmamaktadır. Yazılım takımı oluturulurken üstesinden gelinmesi gereken bazı noktalar unutulmamalıdır. Bunlar; nsanlar farklı farklıdır ve yazılım gelitiriciler farklı insan tipleri ile çalımaya alıkın olmayabilirler nsan ilikilerinde zayıf olan yazılım gelitiriciler olabilir. Hâlbuki bu tarz yazılım gelitiriciler teknoloji konusunda gerekli bilgi birikimine sahip olabilirler Düüncelerde farklılıklar olabilir. Bu da sistem kavramada veya çözümünde farklılıklara yol açabilir Takım çalımasına yatkın olmayan çalıanlar olabilir. Takımları salam ekilde kurmak için aaıdaki noktalar dikkate alınmalıdır. Bunlar; Ortak bir dil oluturulmalı. Müteri ilikileri, takım iletiimi, karar verme yetenei gibi Ortak bir hedef oluturulmalı Baarılar edinilmeli ve paylaılmalı Takım üyeleri arasında bilgi alıverii olmalı. Takımdaki herkes herkesin ne yaptıını bilmeli, nasıl örendiklerini paylamalı ve nasıl baarılı olunduunu anlatmalı Mutlaka bireysel ve takım olarak kazançlar elde edilmeli ve paylaılmalı Takım içi koordinasyon da önemli noktalardan biridir. nsanlar, görevler ve kaynaklar arasında koordinasyonu salamak gerçekten zor bir ilemdir. Büyük ölçekli yazılım projelerinde birden çok takım bulunabilir. Aynı ürün üstünde paralel olarak çalıan birçok kii olabilir. Günümüzün gelimi yazılım mühendislii araçlarına ramen, koordinasyon insan ve kiisel faktörlerden dolayı problem olmaya devam ediyor [3]. Yazılım takımlarını kurarken veya rollerini analiz ederken R. Meredith Belbin tarafından tanımlanan Belbin Takım Rolleri yöntemi kullanılabilir. Belbin rolleri kullanılarak takım performansı gelitirilebilir, baarılı takımlar kurulabilir [1,2]. 5. Yazılım Takımı ve çinde Bulundurduu Roller Bir yazılım projesinde baarılı olmak için en önemli nokta takım olmaktır. Olması gereken yazılım irketini anlatırken bir futbol kulübünü örnek göstererek anlatmaya çalıacaım. En tepeden balarsak nasıl futbol kulüplerinin bakanları var ise yazılım irketlerinin de yöneticileri vardır. Futbol kulübü bakanları teknik konularda bilgili olsalar da hiçbir zaman takıma teknik anlamda karımazlar. Yazılım irketlerinde de yönetici olan kiiler teknik açıdan yeterli olmalılar fakat proje akıına çok fazla müdahalede bulunmamalılar. Kulüp bakanı oyuncu alımında teknik direktör ile birlikte seçilen oyunculardan kulübün parasının ve oyuncunun yeteneklerinin yeterli olduuna inandıkları oyuncuyu alırlar. Aynı ekilde yazılım irketlerinde de irket yöneticisi ve
proje yöneticisi çalıan yeteneklerini ve maddi durumları deerlendirdikten sonra çalıanları ie alırlar. Proje yöneticileri aynı birer teknik direktör gibidirler. Teknik direktörler uygulanacak taktikleri verirler, antrenmanları düzenlerler, maçlarda oynayacak oyuncuları seçerler, oyuncu transferlerini yönlendirirler ve daha birçok görevleri vardır. Proje yöneticilerinde de durum aynıdır. Projede çalıacak kiileri seçer, kimin hangi görevi yapacaına karar verir, motive eder, olaylara karı taktik deiikliklerine karar verir. Unutulmamalıdır ki proje yöneticisi çok iyi bir yönetici olabilir, fakat her ii tek baına yapamaz. Bu noktada Yazılım Kalite Güvence Uzmanları, Yazılım Test Mühendisleri ve Konfigürasyon Yöneticilerinin rolü ortaya çıkmaktadır. Yazılım projelerinde en önemli görevlerden birkaçını Yazılım Kalite Güvence Uzmanları, Yazılım Test Mühendisleri ve Konfigürasyon Yöneticileri sahiplenir. Bu görevleri futbol kulüpleri ile örneklemek gerekirse, bu görevdeki kiiler birer antrenör gibidirler. Bir futbol takımında deiik pozisyondaki oyuncular için deiik antrenörler bulunur. Takımdaki oyuncuların eksik yönlerini bulup, teknik direktör bilgisinde o eksiklikleri gidermeye çalıırlar. Yazılım projelerinde de durum aynıdır. Antrenörler gibi, Yazılım Kalite Güvence Uzmanları, Yazılım Test Mühendisleri ve Konfigürasyon Yöneticileri yazılım projesinin daha iyi olması için o projenin eksik yönlerini saptarlar, düzenlerler, kontrol ederler ve takibini salarlar. Bu örnekleme ııında, antrenörler futbol takımı için ne kadar önemli ise Yazılım Kalite Güvence Uzmanları, Yazılım Test Mühendisleri ve Konfigürasyon Yöneticileri de yazılım projeleri için o kadar önemlidir. Projenin daha iyi olması için yazılım mühendislerine birçok konuda katkıda bulunurlar. Yazılım projesinde çalıan programcılar ise aynı birer futbolcu gibidirler. Asıl ii yapan onlardır. Fakat gerekli teknik destei Proje Yöneticisinden, Yazılım Kalite Güvence Uzmanlarından, Yazılım Test Mühendislerinden ve Konfigürasyon Yöneticilerinden almadan kesinlikle baarıya ulaamazlar. Bireysel olarak ne kadar iyi programcılara sahip olunursa olunsun takım ruhu olmadan baarıya ulaılamayacaı yazılım takımlarına veya futbol takımlarına bakılarak görülebilir. 6. Yazılım Takım Psikolojisi Yazılım projelerinde programcılar genelde Yazılım Kalite Güvence Uzmanlarına, Yazılım Test Mühendislerine ve Konfigürasyon Yöneticilerine ekstra i yaratıyorlarmı gözü ile bakarlar. Hâlbuki istedikleri ve verdikleri iler o takımın ürettii yazılımın daha kaliteli olması içindir. Dolayısıyla programcılar ve Yazılım Kalite Güvence Uzmanları, Yazılım Test Mühendisleri ve Konfigürasyon Yöneticileri arasında iletiim çok büyük önem taımaktadır. Bu noktada iletiimi salayacak, takım ruhunu her zaman dinamik tutacak bir göreve ihtiyaç duyulmaktadır. Futbol takımı örneini vermek gerekirse, futbol takımlarında futbol ube sorumlusu görevi vardır. Bu görevdeki kiiler futbol takımına her türlü motivasyonu salarlar, manevi sorunları çözmeye çalıırlar, yöneticilerle iletiimi salarlar. Motivasyon ve iletiimin çok önemli olduu yazılım projelerinde de bu tarz bir görevde çalıacak deneyimli, iletiim yetenei yüksek, ve motivasyon gücü olan bir çalıan olması yazılım projesi için yararlı olabilir.
7. Sonuç Sosyal bir sistemde bazı roller, o sistemin ayakta kalması için kaçınılmazdır. Yazılım takımlarında da aynı durum söz konusudur. Bazı olması gereken roller takımın baarısı için gereklidir. Doru roller doru kiilere verildii takdirde yazılım takımında baarı kaçınılmazdır. Büyük projelerin zamanında bitmemesi ve baarılı sonuçlanmamasının nedenlerinin baında motivasyon eksiklii, takım olamama ve doru rollerin atanmaması örnek gösterilebilir. Bu noktada çözüm yöneticilere kalmaktadır. Yönetici motivasyon ve performans deerlendirmesini mutlaka doru ekilde yapmalı ve uygulamalıdır. Ayrıca takım ile olan ilikisini iyi kurmalı ve sürekli iletiim halinde olmalıdır. Takımı doru kiilerden salam temeller üstüne kurmalıdır. Takım üyeleri de takım içerisinde aynı amaç için çalıtıklarını unutmamalı ve yöneticilerine yardımcı olmalıdırlar. 8. Kaynakça [1] K. Todd Stevens, The Effects of Roles and Personality Characteristics on Software Development Team Effectiveness, Mart 1998, ulaılabilecek adres http://scholar.lib.vt.edu/theses/available/etd-31098-11056/unrestricted/final5.pdf [2] K. Todd Stevens, Sallie M. Henry Analyzing Software Teams Using Belbin s Innovative Plant Role, ulaılabilecek adres http://www.radford.edu/~kstevens2/istall.pdf [3] J. Alberto Espinosa, Robert E. Kraut, Sandra A. Slaughter, Javier F. Lerch, James D. Herbsleb, Audris Mockus, Shared Mental Models, Familiarity and Coordination: A Multi-Method Study of Distributed Software Teams, Aralık 2002, ulaılabilecek adres http://www- 2.cs.cmu.edu/~kraut/RKraut.site.files/articles/Espinosa02SharedMModelsFamiliarityCoordinati on.pdf