Elektronik

6. İnsan Kaynakları Yönetimi

BİLGİ SİSTEMLERİ PROJE YÖNETİMİ
6. İnsan Kaynakları Yönetimi

6. İnsan Kaynakları Yönetimi

Özlü Söz

Proje yöneticileri orkestra şefi gibidir.

 

 

Kazanımlar

1. Proje ekiplerindeki roller hakkında bilgi sahibi olabilir.

2. Yazılım proje ekiplerindeki başlıca rolleri öğrenebilir.

3. Proje yöneticisinin yapması/yapmaması gerekenler konusunda fikir sahibi olabilir.

4. Proje yöneticisinin sahip olması gereken özellikleri öğrenebilir.

5. Bir projede kişilerin beraber çalışması için gerekli olan kuralları kavrayabilir.

 

Birlikte Düşünelim

1. Bir kaynak olarak insanın projedeki değeri ve önemi nedir?

2. İnsan kaynağının ücretlenedirilmesi nasıl yapılır?

3. İnsan kaynağınnı diğer kaynaklardan farklı kılan unsurlar nelerdir?

4. Proje yöneticisinin proje ekibinin kalanından farklı olarak sahip olması gereken özellikler nelerdir?

5. Tüm projelerde proje yöneticilerinin sahip olması gereken ortak özellikler nelerdir?

 

 

 

Başlamadan Önce

İnsan kaynakları yönetimi süreci; bir projeye ait rollerin, sorumlulukların, gerekli becerilerin ve raporlama ilişkilerinin belirlenmesi, belgelenmesi ve personel yönetimi planının geliştirilmesi sürecidir ayrıca proje ekibinin organize edilmesine, yönetilmesine ve yönlendirilmesi ne yönelik süreçleri içerir. Proje ekibi bir projenin başarılı bir şekilde tamamlanması için en önemli unsurlardan biridir ve doğru bir şekilde belirlenmediği sürece başarılı bir proje oluşturulması mümkün değildir. Proje yöneticisi ise projenin beyni görevi görür ve projenin organizasyonunu sağlar. Proje yöneticisinin proje ekibinin geri kalanından farklı bazı özellikleri bulunması gerekmektedir. Projede ekibin birlikte uyum içerisinde çalışabilmesi de projenin başarısı için mutlak gerekli bir unsurdur.

Bu bölümde proje ekibi, proje yöneticisi ve bir proje ekibinde birlikte çalışabilmek için gerekli kurallar açıklanmaya çalışılacaktır.

 

 

6. 1. Proje Ekibi

Tüm projelerde olduğu gibi yazılım projelerinde de en önemli kaynak insan kaynağıdır ve proje yönetimi büyük ölçüde insan yönetiminden oluşur. Yazılım geliştirme kişilerin yaşadıkları sorunları yine kişilerin fikir ve buluşları sayesinde çözme işlemine dayanır.

Neticede proje ekibi, insanlardan oluşur. Ekip kelimesi her çalışma ortamında eşitlik, birlik ifadesi vermek için sık sık kullanılır. Aslında iş hayatındaki birliklerin çok azı gerçekten ekip olmanın tam karşılığını verir. Ekip kelimesi için kabul gören bazı tanımlamalar şu şekildedir:

• Ekip, önceden tespit edilmiş hedeflere ulaşmak için bir araya gelmiş, birbirlerine bağımlı ve beraber hareket eden en az iki ya da daha fazla kişinin oluşturduğu topluluktur (Eren, 2008).

• Ekibin bir görevi, net çizilmiş sınırları, kendi iş süreçlerini yönetmek için açıkça belirtilmiş yetkileri ve makul bir zaman dilimi için istikrarlı bir üyelik durumu vardır (Hackman, 2002).

• Ekip; “Görevlerinde birbirlerine karşılıklı bağımlı, sonuçlar için sorumluluğu paylaşan, kendilerini sağlam bir sosyal varlık olarak gören ve dışarıdan da aynı şekilde görülen, herhangi bir sosyal sistem içine yerleşmiş insan topluluğudur.” (Sundstrom vd., 1990).

• İdeal olarak birbirini tamamlayan ya da benzer yeteneklere sahip, ortak ve büyük bir amaca ve ortak değerlere inanmış performans hedefleri olan ve bu hedeflerle kendilerini değerlendiren, çoğunlukla az sayıda kişiden oluşan organizasyonel bir yapıdır.” (Ensari, 1999).

Her ne kadar gelecekte robotların da bu tip işlemleri gerçekleştirileceği düşünülse de insan etkisi hiçbir zaman sıfırlanmayacaktır. Projelerde önemli kararlar insanlar tarafından alınır, analiz ve tasarım gibi yazılım geliştirme aşamalarını insanlar yürütür, yazılımı kullanacak olanlar da yine insanlardır. Ekibi oluşturan insanlar ile müşteriler arasında düşünce farklılıkları olabilir ve projenin başarılı olması için bu iki grup arasında uyum olması gereklidir. Bir projenin 120 adam/ay emek gerektirmesi bu projeyi 1 kişinin 10 yıl boyunca çalışarak yapabileceği anlamına gelmez. Bu yüzden büyük yazılımlar, birçok farklı kişi ve görev tanımından oluşan ekipler tarafından gerçekleştirilir ancak burada belirtmek gerekir ki sadece aynı ortamda çalışmak ve aynı projede görev almak kişileri “ekip” yapmaz. Ekip dendiğinde aynı hedefi paylaşan, birbirinden haberdar olan ve birbirlerinin sorunlarına çözüm üretmeye çalışan bir insan topluluğundan bahsedilmektedir. Ekip olmak ve ekip çalışmasıyla ilgili temel kaidelere uymak, proje geliştirmenin temel şartıdır. İnsanların kabiliyetleri süreç ve teknolojide karşılaşılan sorunların üstesinden gelmeyi sağlayabilir ancak beceri ve motivasyonun eksikliğini gidermez. Bu yüzden proje ekibi; beceri, tecrübe, kabiliyet ve birlikte çalışmaya uyumu üst düzey kişilerden oluşturulmalıdır. Ekibin devamlılığını sağlamak ve becerisini arttırmak için gerekli çalışmalar sürekli yapılmalıdır. Her yazılımcı ve her yazılım ekibi özellikleri farklıdır ve özel yönetim gerektirir. Tüm ekipler için uygun olan bir proje yönetim stratejisi mevcut değildir. Bu sebeple bir proje yöneticisi; kendi çalışan ve ekibinin yapısını tanımalı, kuvvetli ve zayıf yönlerini çok iyi bilmelidir. Oluşan ve çalışmaya başlayan bir ekibin yapısını sonradan değiştirmek genellikle zordur. Bu yüzden plan hazırlanırken ve yazılım geliştirme yöntemi, kullanılacak yazılım geliştirme aracı ve diğer altyapılar seçilirken ekibin yapısı dikkate alınmalıdır. Ekip sadece fiziksel olarak kodları geliştiren ya da projede bir şeyle üreten kişiler olarak değildir, bunun yanı sıra üst yöneticiler, son kullanıcılar ve/veya müşteriler de yazılım geliştirme ekibinin bir parçası olarak düşünülmelidir. Projenin başarısı veya başarısızlığı, proje ekibine bağlı olarak oluşan bir kavramdır. Ekip ruhuyla yapılan çalışmalar ayrı ayrı yapılan çalışmalardan her anlamda daha başarılı olur. Özellikle yazılım projelerinde uyumluluk ve birlikte çalışabilirlik gibi kavramların ne kadar önemli olduğu düşünülecek olursa bu konunun önemi bir kez daha anlaşılır. Yazılım projesi, birbiriyle bağlantılı birçok farklı görevin koordineli bir şekilde yapılmasıyla gerçekleştirilir. Bu görevler analiz, tasarım, kodlama ve test gibi alanlarda belli rollerle standartlaşmıştır ancak farklı firmalarda ve farklı projelerde bu rollerin tanımları değişebilir. Büyük projelerde her rol için ayrı bir ekip de oluşturulabilir. Rol tanımı; firmanın yapısı, projenin özellikleri ve yazılım geliştirmede kullanılan sürece göre netleşir. Ekibin her üyesi kurum, proje ve süreçteki yerini bilmelidir. Kişi, süreç içerisinde aynı anda birden fazla role sahip olabilir. Bu anlamda rol unvandan farklıdır. Küçük bir projede proje yöneticisi, sistem mimarlığını da yürütebilir. Analiz aşamasında sistem analist olarak çalışan bir kişi, sonra test grubunda görev alabilir ancak her temel görevin doğrudan bir sorumlusu olması proje yönetimi açısından faydalıdır. Kişi aynı anda birden fazla göreve atanarak sürekli bölünmemelidir. Bir projede yer alan proje ekibi genellikle aşağıdaki şekildedir:

Şekil 18. Projede Yer Alan Proje Ekibi

Proje Yöneticisi: Adından da anlaşıldığı üzere proje sürecini yöneten kişidir. Projenin istenilen kalite ve sürede tamamlanması için gerekli planın hazırlanması, standartların, teknik altyapının, kullanılacak metodolojilerin belirlenmesi, plandaki faaliyetlerin koordinasyonu, görevlere uygun kişilerin atanması ve proje ekibinin plana uygun hareket etmesi gibi işlemleri gerçekleştirmekten sorumludur. Projelerde temel kararları proje yöneticileri alır ancak proje yöneticisinin tüm modüllerdeki tüm işlere sürekli müdahale etmesi, ayrıntılarla uğraşması mümkün ve doğru değildir. Proje yöneticisi, başarı ve başarısızlık durumunda açıklama yapacak, gerekirse hesap verecek ilk kişidir.

Takım Lideri: Takım lideri, proje yöneticisine bağlı çalışan teknik yöneticilerdir. Projenin teknik altyapısının müşterinin isteklerine ve bu istekler doğrultusunda hazırlanmış plana göre geliştirilmesinden sorumludur. Proje yöneticisiyle birlikte ihtiyaç ve teknik gereksinimler arasında bir köprü niteliği taşır. Genellikle küçük ve orta ölçekli projelerde proje yöneticisi ile takım lideri aynı kişidir. Proje büyüdükçe her modül için bir takım lideri tayin edilebilir.

Proje yöneticisi birçok projeyle ilgilenebilirken takım lideri genellikle tek bir proje ile ilgili çalışır. Proje yöneticisi genellikle projede teknik bir işlem gerçekleştirmezken takım lideri kimi zaman yazılım geliştirme işlemine dahil olabilir.

Yazılım Mimarı: Yazılım mimarı, kullanıcı ihtiyaçlarını karşılamak için nasıl bir yazılım mimarisi kullanılacağını belirleyen proje ekibi üyesidir. Yazılım mimarisi yazılımın üst düzey bir modelidir ve ayrıntılı tasarımın nasıl olacağı konusunda yol gösterir. Yazılım mimarisi; yazılım içerisinde kullanılacak olan araçları, verilerin türleri, kodlama şekli vb. birçok konuyu belirleyen unsurdur. Özellikle bir yazılım projesindeki analiz, tasarım ve gerçekleştirme aşamalarının birbiriyle tutarlı olması için yazılımın mimari yapısı doğru kurulmalıdır. Mimarinin belirlenmesi konusunda kesin kurallar yoktur ve tecrübe gerektiren bir işlemdir, bu yüzden mimarinin tecrübeli kişilerden oluşan çekirdek bir ekip tarafından hazırlanması ve diğer yazılımcıların bunu kullanarak yazılımı gerçekleştirmesi önerilir.

Sistem Analisti: Sistem analisti; son kullanıcı/müşteri ihtiyaçlarını tespit, analiz ve belgelemekle sorumludur. Gerçekleştirilen yazılım veya prototipi son kullanıcıya/müşteriye sunarak gelen geri beslemeleri yazılım ekibine aktarır. Sistem analisti, yazılım ekibindeki en önemli rollerden birisidir. Analiz çalışması, yazılımın hizmet vereceği sektörde tecrübesi olan kişilerle birlikte yürütülmelidir. Örneğin hukuk alanına hizmet edecek bir yazılım için bir avukatla sağlık alanı ile ilgili bir yazılım geliştirirken bir hekimle bir inşaat çizim projesinin yazılımı geliştirilirken bir mimarla çalışmak gibi…

Yazılım Geliştirici: Yazılım geliştirici, yazılımın gerçekleştirilmesinden ve ortaya çıkmasından doğrudan sorumlu olan ekip üyelerine verilen isimdir. Genellikle kısaca programcı olarak anılır. Gerçekleştirme işlemi program kodlarının, arayüz ve raporların yazılması gibi faaliyetleri kapsar. Gerçekleştirme yapılabilmesi için kod seviyesinde gerekli ayrıntılı tasarım ve modelin oluşturulması da programcı sorumluluğundadır. Örneğin yapılacak bir arama ya da sıralama işleminde hangi algoritmanın kullanılacağını programcı seçer.

Arayüz Geliştirici: Arayüz geliştirici; son kullanıcıların/müşterilerin yazılıma erişimini sağlayan, diğer bir deyişle yazılım ile son kullanıcılar/müşteriler arasında iletişim sağlayan arayüzlerin tasarımından sorumludur. Özellikle internet ve mobil tabanlı yazılımlarda kod ve arayüz geliştirme iki farklı rolle yürütülmektedir. Arayüz geliştirici ekranın grafik tasarımı ve özellikle de görsel güzelliğinden ve kullanışlılığından sorumludur. Grafik tasarımcı ve kod geliştirici ortak standartlara dayalı çalışarak, kod ile ekrandaki görsel işlevlerin bütünleşik ve tutarlı olmasını sağlar.

Ürün Yöneticisi: Ürün yöneticisi, yazılımları kullanacak son kullanıcı/müşteri ihtiyaçlarından yola çıkarak yazılımın ticari bir ürün haline getirilmesi sürecini yönetir. Piyasadaki benzer ürünleri inceleyerek ürünün gelecekte alacağı şekli belirlemeye çalışır. Ortaya çıkacak olan ürünün sürüm stratejisini oluşturur. Bu işlemlerin yürütülebilmesi için gerekli belge ve bilgileri yazılım ekibine aktarır. Çalışması diğer ekip üyelerine doğrudan bağlıdır, ortaya çıkacak ürünün özellikleri belli olmadan ürün yöneticisinin iş yapması mümkün değildir.

Kalite/Test Mühendisi: Kalite/test mühendisi; projenin kullanıcı istek, teknik gereksinim ve standartları karşılayacak şekilde hatasız geliştirilmesi için gerekli kontrol ve testleri yapmaktan sorumludur. Kalite ve test, sürekli olarak beraber kullanılan iki kavram olsa da esasında farklı hedeflere yöneliktir. Kalite, istenilen alanda piyasadaki en iyi özelliklere sahip nitelikli bir ürün çıkarmayı, test ise hata bulmayı hedefler. Bu yüzden bazı şirketlerde kalite ve test farklı kişiler tarafından yerine getirilebilir.

Yardımcı Ürün Geliştirici: Yardımcı ürün geliştirici, projenin geliştirilmesi için kullanılan ürünlere yardımcı olacak; o ürünlerin geliştirilmesine hizmet edecek, işleri hızlandıracak ve kolaylaştıracak yan ürünler teminini organize eden veya bizzat geliştiren kişidir. Yazılım ürün dosyalarının derleme ve dağıtımını kolaylaştıran sistemler, sürüm kontrol sistem ve proje yönetim sistemleri gibi ürünler bu kişiler tarafından araştırılır ve kuruma uyarlanır.

Yazılım geliştirmeyle doğrudan görevli bir kişi, üzerinde çalıştığı işin daha kolay nasıl yapılabileceğini düşünemeyecek kadar yoğun olabilir. Bu durumda kendisine verilen görevi kendisine verilen araçlarla en kısa sürede ve en az maliyetle bitirmeye gayret eder.

Görevi yardımcı ürünlerle geliştirme olan bir uzman bulundurmak, işleri kolaylaştıracak ve otomatikleştirecek araçların tespitini sağlamaktır. Böylece yazılımcılar rutin işlerden kurtulur ve proje için çok önemli zaman kazancı sağlanır. Örneğin yazılım testleri manuel ya da otomasyonlarla beraber yapılabilir ancak piyasada pek çok yazılım test otomasyon yazılımı bulunduğundan hangi yazılım için hangi otomasyonun seçilmesi gerektiği önemli bir karardır ve uzun bir araştırma gerektirebilir. Bu işlem yardımcı ürün geliştiriciler tarafından gerçekleştirilmelidir.

Risk Yöneticisi: Risk yöneticisi; projede ortaya çıkabilecek olumsuz durumları tespit, takip ve düzeltici işlemleri belirlemekten sorumludur. Proje ekibinin hedefi projeyi bir an önce bitirmek olduğundan ekip içinde olumsuz durumlar bazen gözden kaçabilir ya da göz ardı edilebilir.

Bu yüzden imkanlar el veriyorsa risk yönetimi için harici bir ekip oluşturulmasında fayda vardır.

Son Kullanıcı Belge Geliştirici: Son kullanıcı belge geliştirici; son kullanıcıların/müşterilerin yazılım ürününü kullanabilmeleri için gerekli olan kullanıcı kılavuzu vb. belgeleri geliştirme, güncelleme ve dağıtım işlemlerini gerçekleştiren kişidir. Hazırlanan belgeler ilk anda kullanıcı eğitimlerinde kullanılabileceği gibi yazılımın çalışma sürecinde uzun vadeli yardım şeklinde de kullanılabilir. Belge içerikleri hedeflenen son kullanıcı/müşteri yapısına göre belirlenmelidir. Sistemi yöneten kullanıcı için teknik, son kullanıcı/müşteri için işe yönelik belgeler hazırlanabilir. Yazılım projesi, kendi kendisini açıklayacak bir yapıda olmalıdır.

İlişkili fonksiyonlar birbirine yakın ve son kullanıcının/müşterinin anlayabileceği isimler taşımalıdır. Menü, ekran sihirbazı ve kısa yol gibi kullanıcıya işi nasıl yapacağını göstererek yardımcı olan fonksiyonlar oluşturulmalıdır. Böylece son kullanıcı, programı fazla belge veya yardıma ihtiyaç duymadan kullanabilir ve belge geliştiricilerin işi kolaylaşır.

Destekleyici: Destekleyici veya sponsor, projeye idarî destek ve/veya mali kaynak sağlayan kişidir. Bu bir devlet kurumu olabileceği gibi özel bir kuruluş ya da bir kişi de olabilir. Kurum üst-ara yöneticileri ve mali kaynak sağlayan üçüncü kurum yöneticileri bu kategoride değerlendirilebilir.

Müşteri: Müşteri, yaptığı işlerde üründen fayda sağlayan ve genellikle ürünün sahip olması gereken fonksiyonların ilk tanımını yapan kişidir. Önce müşterilerle görüşülür ve genel kapsam tanımlanır. Bu tanım, son kullanıcılarla yapılacak ayrıntılı çalışmalarla son halini alır.

Son Kullanıcı: Son kullanıcı, proje sonunda ortaya çıkan ürünü doğrudan kullanacak kişidir. Müşteri ve son kullanıcının beklentileri ve bu beklentilerin yazılım özellikleri üzerine yansıması farklıdır. Genellikle müşteri ve destekçi idealist, son kullanıcı ise gerçekçidir. Müşteri ve destekçi yazılımla kuruma yeni bir düzen oturtmayı hedeflerken son kullanıcı mevcut duruma odaklanır. Yazılım ekibi tüm paydaşların memnuniyetini sağlayacak ortak noktalar bulmayı hedeflemelidir.

Yazılım geliştirme projelerinde takım lideri, sistem analisti, yazılım geliştirici, arayüz geliştirici ve son kullanıcı belge geliştiriciler çekirdek ekibi oluşturur. Proje yöneticisi bu kişiler arasındaki bağlantı noktasındadır. Genel olarak proje ekibi arasındaki ilişkiler aşağıda Görsel 6.1’de gösterilmiştir.

Görsel 6.1. Proje Ekibi Arasındaki İlişkiler

6. 2. Proje Yöneticisi

6. 2. 1. Proje Yöneticisinin Görevleri

Proje yöneticisi, proje başarısı ve başarısızlığı konusunda hesap verme konumundaki kişidir. Projeyi başarıya götürmek için kişisel özelliklerini, bilgi ve tecrübesini kullanır.

Proje yöneticisinin görevleri Şekil 19’da görülen maddeler olarak sayılabilir.

Şekil 19. Proje Yöneticisinin Görevleri

Bu görevlerin açıklamaları aşağıdaki gibidir:

Liderlik ve Yöneticilik Yapmak: “Liderlik mi yoksa Yöneticilik mi?” sorusu projelerde sürekli olarak karşımıza çıkan bir sorudur. Proje yönetimi üzerine yazılan sayısız kaynak kişiyi eğiterek yönetici olarak nasıl davranması gerektiğini göstermektedir ancak proje zaten yenilik yapmaktan ve farklılıktan doğan bir kavramdır ve tüm proje ve proje ekipleri birbirinden farklıdır dolayısıyla hiçbir yöntem proje yöneticisinin yeni bir projede karşı karşıya kalacağı durumu tam olarak tahmin ve tasvir edemez. Bu yüzden proje yöneticisi her ne kadar diğer proje ekibine danışabilse de esasında bir karar alırken yalnızdır.

Proje yöneticisi doğru kararlar alabilmek, liderlik ve yöneticilik yapabilmek için:

• Azim,

• Kararlılık,

• Sorumluluk alma,

• Zor zamanlarda soğukkanlılığı korumak,

• Ekibi üzerinde etkili olma,

• Hedefe doğru kişileri motive edebilme,

• İletişimci ve dışa dönük olma

• İnsanların saygınlığını ve güvenini kazanabilme,

gibi kişisel özelliklere sahip olmalıdır. Bahsi geçen bu özelliklerin bir kısmı doğuştan gelir, kişilerin karakterlerinde hali hazırda bulunur veya yaşamın ilk kısmında kazanılır. Bu yüzden kişi kendisinde var olan, güçlü ve zayıf yanlarının farkında olmalı ve yeteneğini geliştirmelidir. Proje yöneticisi ekip için örnek teşkil edeceğinden öncelikle kendini yönetmeli, planlı-programlı çalışmalı ve belirlenmiş ekip standartlarına uymalıdır. Sadece proje yöneticisi ekibi izlemez, ekip de kendi yöneticisini izler.

Karar Vermek: Karar vermek, bir durum karşısında nasıl bir hareket tarzı izleneceğini belirlemektir. Bir insan günlük hayatında ve iş hayatında her gün birçok karar vermek zorundadır. Bir insan eğer bir yönetici değilse verdiği kararlar büyük çoğunlukla sadece kendisini etkilerken yöneticilerin verdiği kararlar diğer birçok kişiyi de etkilemektedir.

Bu sebeple bir yöneticinin en önemli görevi doğru kararlar vermek ve bunları azimle uygulamaktır. Elbette ki verilen her karar, içerisinde değişken oranlarda risk taşır ancak proje yöneticisi bu riskleri üstlenmek zorundadır. Rutin işlerin devam ettirilmesi hemen herkes tarafından yapılabilir. Proje yöneticisi, projenin iş hedeflerine ulaşması için farklı durumlar karşısında nasıl hareket edileceğine karar vermelidir. Karar vermek, sorunu adım adım parçalara bölerek analiz etmeye dayalı mantıksal bir süreçtir. Karar vermek, problem çözmekten farklıdır. Doğruya yakın birçok ihtimal arasında maliyet analizinden sonra yapılan seçimi ifade eder. Yazılım geliştirmede genellikle bir problemin birden fazla çözümü olur.

Bu çözümler arasında en uygun olanı seçmek teknik yönetici veya proje yöneticisinin görevidir. Etkin karar analitik bir sürecin neticesinde ortaya çıkar. Bu sürecin aşamalarının bir örneği aşağıdaki tabloda (Tablo 6.1) verilmiştir.

Tablo 6.1. Karar Verme Süreci Örneği

Bir olayın genel problemin belirtisi olması İnsan Kaynakları yazılımda son birkaç ayda maaş hesabı yanlış yapılmış personeller görülmesi.

Bu durumda maaş hesaplama prosedüründeki genel bir hataya işarettir ve tüm işler tekrar kontrol edilmelidir.

Bir olayın genel bir problemin parçası olması Personel ekranının zaman zaman çökmesi.

Bu problem kullanılan alt yapının hafıza yönetimi konusundaki yetersizliğini gösteren bir örnektir. Tek başına değil hafıza yönetim altyapısıyla birlikte ele alınmalıdır.

Gerçekten istisnai olaylar Ana sunucu makinedeki bir işlemcinin bozulması sonucu yazılımda performans problemi yaşanması.

Sunucu makineler kesintisiz çalışacak şekilde yapıldıklarından bu tür olaylar çok nadir görülür.

Yeni bir problemin ilk kez dışa vurumu İnsan Kaynakları yazılımda maaş hesabı yanlış yapılmış bir personelin ilk ortaya çıkması.

Bu da hesaplama algoritmasında bir hatayı işaret eder. Başka personellerde de benzer hatalar olacaktır.

Çözümü Somutlaştırmak ve Çerçeve Koşullarını Belirlemek: Bir projede alınan her karar ile hedeflenen sonuç açık ve ayırt edilebilir şekilde belirlenmelidir. Kararın alındığı durum tanımı ve hedefler arasında tutarlılık olmalıdır. Çerçeve koşulları değişirse alınan karar da değişmelidir. Yazılım şirketleri ve yazılım projesi gerçekleştiren kişiler için her gün değişen teknolojik ortamda çerçeve koşullarının takibi çok önemlidir. Örneğin akıllı telefonlar, masaüstü alanında yazılım geliştiren bir şirketin ürün politikasını gözden geçirmesini gerektirir. Bilindiği üzere günümüzde müşteri beklentileri web ve mobil yazılıma kaymaktadır.

Yazılım şirketleri de ürün yelpazelerini bu çözümlerle zenginleştirmelidir. Verilen bir kararı uygulamak için gerekli iş ve eylem taahhütlerini karara dahil etmek gereklidir. Bunlar:

• işleri zamanını planlamak,

• yapılması gerekenleri belirlemek,

• sorumlu kişileri tespit etmek,

• yapılması gereken işi bunu üstlenecek kişinin kapasitesine uygun şekillendirmek,

gibi işlemlerdir.

Proje yöneticisinin karar ve eylem taahhütleri çelişmemelidir. Örneğin yeni bir teknolojiye yatırım yapılırken eski teknolojide uzman ve geçişe direnen ekip üyeleri görevlendirilirse bu geçişe kimse inanmaz. Kimse bildiği bir teknolojiden bilmediği bir teknolojiye kolaylıkla geçemez. B açıdan da o geçiş kolay bir şekilde gerçekleştirilemez. Ekibin proje ve plan inanması, başarı için en önemli şarttır. Alınan kararın ve planın doğruluğuna ekibi ikna etmek de proje yöneticisinin görevidir. Farklı alternatifler istenerek ekibin karar hakkındaki görüşleri alınabilir. Her görüş teknik gerekçelere dayanmalıdır.

Değişimlere Uyum Göstermek: Bir projeyi yönetirken yanlış bir karar vermek elbette ki bir hatadır ancak insanlar tabi ki de hata yapabilir, asıl yanlış olan ve projeye zarar veren, yanlışlıkta, hatada ısrar etmektir. Bir işin verildiği kişi bu işi bitiremiyorsa proje yöneticisi bu kişide ısrara etmemeli ve işi alıp başkasına verebilmelidir. Seçilen teknolojinin problem oluşturduğu kesin olarak anlaşıldıysa bu teknolojide ısrar etmek sadece zaman kaybettirir, bundan vazgeçip farklı bir teknoloji denenmelidir. Değişen şartlar, başta doğru olabilen bir kararın daha sonraları yanlış olmasına sebep olabilir. Proje yöneticisi, zamanla beklentilerin değişmesi, diğer kişilerden gelen makul öneriler, teknolojik gelişme ve yeni fırsatlar karşısında sürekli kendi kararlarını kontrol etmelidir.

Planlamak ve Projeyi Denetlemek: Proje ekibindeki kişilerden kendi aralarında anlaşıp koordineli şekilde projeyi yapmaları beklenemez çünkü projede yer alan bir kişi diğerlerinin ne iş yaptığını bilemez, işleri izleyemez, bu sebeple planlama yapamaz, ayrıca bunu yapabilse bile diğer kişiler tarafından işlerine karışmak olarak nitelendirilecektir. Bu sebeple bir projede yapılacakların planlanması ve performansın izlenmesi proje yöneticilerin sorumluluğundadır. Bu sorumluluk içerisinde yapılması gereken işlemler aşağıda sıralanmıştır.

• Projede gerçekleştirilecek işlerin içeriğinin, kapsamının belirlenmesi

• Plan için gerekli zaman, bütçe vb. tahminlerin yapılması

• Görev dağılımlarının oluşturulması ve doğru işlerin doğru kişilere atanması

• Projenin gidişatının izlenebilmesi için gerekli ölçüm, kriter, yöntem ve standartlarının belirlenmesi

• Kazanımların ve tahminlerin doğruluğunun izlenmesi

• Projedeki kilometre taşlarının belirlenmesi, bu kilometre taşları sırasında ve proje sonunda değerlendirme yapılması

• Proje süreciyle ilgili paydaşların gerekli oldukça bilgilendirilmesi

Bilgilendirmek ve İletişimi Artırmak: Proje yöneticisinin en önemli görevlerinden birisi, ekip içi iletişimi artırarak kişinin kendi işini yapmak için gerekli bilgiye sahip olmasını kolaylaştırmaktır. Günümüzde bilgi miktarının çok fazla olması doğru kişiye doğru bilgiyi vermenin önemini artırmaktadır. Proje yöneticisi bu amaçla:

• iletişimi artıracak toplantılar düzenlemek,

• iletişim altyapıları oluşturmak,

• projenin gidişatıyla ilgili üst yönetime ve müşterilere belli aralıklarla bilgi vermek,

• iletişim için gerekli standartları belirlemek ve bilgilendirme raporlarını yazmak

gibi işlerin koordinasyonunu yapmalıdır. Zaman zaman serbest ekip içerisinde sosyal ve kültürel faaliyetler düzenlemenin iletişimi artırdığı bilinen bir gerçektir. Bunun dışında proje yöneticisi çok iyi bir dinleyici olmalı ve ekipteki herkese kulak verebilmelidir. Sadece projeyle ilgili fikirleri değil; eleştiri, kişisel veya ekiple ilgili sorunlar, talepler gibi hususları da dinlemelidir. Proje yöneticisi, proje ekibini dinlerken sadece olumlu fikirlerin değil olumsuz fikirlerin söylenmesini de teşvik etmelidir. Hiçbir eleştirinin olmadığı ortamda hataları düzeltmek veya sorunları fark etmek çok zordur. Süreçte hiçbir olumsuzluk görünmüyorsa bu durum büyük ihtimalle gerçekten hiçbir hata olmadığından değil, proje ekibinin olumsuz durumları paylaşmamasından kaynaklanmaktadır.

Moral ve Motivasyon Vermek: Moral kişilerin kendilerine verilen görevleri yerine getirmek için duydukları istek, neşe, heyecan ve enerji duygusu olarak tanımlanabilir. Motivasyon ise kişileri bir işi bitirmek için teşvik eden şeylerdir. Moral çevre şartları ve kişinin kendi karakteriyle ve iç dünyası ile olgunlaşan bir ruhsal durumken motivasyon dışarıdan gelen bir teşviktir. Kişi ceza, korkutma, tehdit, azarlama gibi olumsuz veya ödüllendirme gibi olumlu yöntemlerle motive edilebilir. Proje yöneticisi kişilere moral ve motivasyon vermelidir. Proje geliştirme ortamlarında kişilerin fiziksel ihtiyaçları uygun bir mali kazanç, sağlıklı çalışma ortamı, iş sürekliliği ve güvenliği ile; sosyal ihtiyaçları ise grup üyesi olduğunu hissetmek, saygınlık duyulmak ve diğer insanların saygısını hissetmek ile sağlanır. Proje yöneticisi kişilerin birlikte çalışabilecekleri ekip ve ortamı sağlayarak sosyal ihtiyaçlarını gözetmelidir. Kişilerin yeni teknoloji projelerinde görev almasını sağlamak, yapılması zor ama imkânsız olmayan görevler vermek ve eğitim kendini kanıtlama ihtiyaçlarını karşılamak için önemlidir. Yüksek morale sahip bir ortam oluşturmak, kişilerin iş motivasyonuna katkı sağlar. Parasal ödüllendirmeler yerine “ayın elemanı” gibi bir unvan genellikle daha etkili olmaktadır. Başarının takdir edilmesi, kişinin yaptığı işte isminin anılması önemli bir ödüldür.

İnsan Yönetmek ve Örgütlemek: Kurumsal yazılım projelerini geliştirebilmek için diğer projelerde de olduğu gibi ekip olarak çalışmak gerekir. Ekip olarak çalışabilmek birlikte proje yaparak kazanılır. Proje yöneticisi bunu sağlayabilmek için insanların birlikte çalışabilecekleri yöntem ve standartlar geliştirir. Proje ekibinin yapısını belirler ve proje ekibine yön verir. Birlikte proje yapıldıkça ekip içi iletişim artar ve proje ekibi bir anlamda olgunlaşır. Proje yöneticisi mevcut ekibin kuvvetli ve zayıf yanlarını değerlendirerek takviye yapılması gereken noktalara karar vermelidir. Sadece işle ilgili sorunların değil işe yansıyan kişisel sorunların çözümüyle de ilgilenmelidir. Görsel 6.2’de proje yöneticisinin projedeki yeri verilmiştir.

Görsel 6.2. Proje Yöneticisinin Projedeki Yeri

Tahmin Etmek: Proje ile ilgili harcanacak zaman, maliyet, gerekli olacak insan kaynağı, teçhizat ve makine gibi noktaların tahmin edilmesi proje yöneticisinin sorumluluğundadır. Tahmin, önceki projelerden edinilen tecrübelerden yola çıkarak yapılmalı ve elbette sayısal bir temele dayanmalıdır ancak sadece sayısal işlemler ve formülasyonlarla tahmin yapmak genellikle mümkün olmadığından bu süreçte proje yöneticisinin kişisel bakış ve sezgileri de önem kazanır.

Kalite Standartlarını Belirlemek ve Uygulamak: Proje çalışanlarının önceliği, genellikle üzerlerindeki işleri tamamlamaktır. Bu yüzden projenin planlanması ve belgelerin hazırlanması proje çalışanları tarafından genellikle ihmal edilen, sona bırakılan ya da diğer işlemlerin yanında önemsiz görülen işlemlerdir. Proje kalitesi öncelikle yönetimin sorumluluğundadır. Kaliteyi arttırıcı faaliyetlerin etkileri kısa vadede gözükmeyebilir ve maalesef bu konuda harcanacak zaman ve para üst yönetim tarafından fazla bulunabilir çünkü üst yönetim en kısa sürede bir ürün görmek istemektedir. Proje yöneticisi kalite çalışmalarının gerekliliği konusunda üst yönetimi ikna etmeye çalışmalı, üst yönetim ile proje ekibi arasında bir köprü vazifesi oluşturmalıdır.

Eğitmek: Her projede mevcut olmakla beraber yazılım teknolojisindeki daha hızlı ve sürekli yaşanan değişim, bu alanda çalışanları sürekli kendilerini geliştirmeye zorlamaktadır.

Bu gelişmenin en önemli basamaklarından biri eğitimdir. Şirketler, özellikle bilişim projelerindeki personel için gerekli eğitim ihtiyaçlarını belirlemeli ve düzenli eğitim imkanları sağlamalıdır. Üniversite eğitimi; özel şirketlerin düzenlemiş olduğu kurs, seminer ve internetteki kaynaklar bilgilerin güncel tutulması için gereklidir. Proje yöneticisi görevlendirme yaparken ekibe yeni katılan kişilerin bilgi ve tecrübesini dikkate almalıdır. Kişinin ilk yaptığı projelerde ekibi, ortamı, kurumu ve bazen de kullanılan teknolojiyi tanıması gerekir.

Bu konulara zaman harcamasından dolayı ilk görevler daha uzun sürer. Proje yöneticisi bu süre uzamasına belli ölçüler içinde müsamaha göstermelidir. Kişilere zaman zaman bilgi ve tecrübelerinin biraz üzerinde işler verilmelidir.

Proje Durumunu Bilmek: Projenin gerçek durumunu ve zamanında ve belirlenen bütçeyle bitip bitmeyeceğini, sonuçta ortaya çıkacak ürünün kalitesinin ne olacağını, proje süresince ne gibi risklerle karşılaşma ihtimallerinin bulunduğunu en iyi proje yöneticisi bilmelidir ve kimseyi umutsuzluğa sürüklemeden herkese doğru bilgi vermelidir. Üst yönetim ve özellikle de yazılım ekibi, projede bir karar gerektiğinde proje yöneticisine danışır. Eğer proje yöneticisi bu kişilere doğru bilgi sağlamazsa güven kaybı yaşanır.

Kullanıcıya Bir Adım Yakın Durmak: Her projede olduğu gibi yazılım geliştiriciyi motive eden en önemli şeylerden birisi yazdığı projeyi diğer bir deyişle ortaya çıkardığı ürünü birilerinin kullanması ve kullanıcıların bundan memnun olmasıdır. Bu yüzden proje yöneticisi, adaletten ayrılmadan kullanıcıya bir adım yakın durmak zorundadır. Projenin son kullanıcı için geliştirildiği, müşteri taleplerinin önemli olduğu, müşteri talepleri olmasa yazılıma ve dolayısıyla yazılımcıya gerek duyulmayacağı ekibe zaman zaman hatırlatılmalıdır aksi halde yazılım geliştirme ekibinden bazı işlerin yapılmasını istemek kimi zaman zor olabilecektir. Proje içerisinde göz ardı edilemeyecek talepler aşağıdaki şekilde sıralanmıştır:

• Analiz aşamasındaki talepler: Proje içerisinde analiz aşamasındaki taleplerin çoğu genellikle gerçekleştirilmez ancak hangi taleplerin gerçekleştirileceği, hangilerinin üzerinden değişiklik istenerek gerçekleştirileceği ya da hiç gerçekleştirilmeyeceği projenin başında bilinemez. Bu açıdan analiz aşamasındaki bütün talepler saklanmalı ve gerçekleştirilmediyse bile neden gerçekleştirilmediği gerekçeleriyle beraber dokümantasyon haline getirilmeli ve arzu edildiğinde üst yönetime ve müşterilere sunulmalıdır.

• Kullanıcılardan gelen hatalar: Birçok hata yazılımın geliştirilme aşamasında değil yazılım kullanıcılara sunulduktan sonraki devreye alma aşamasında ortaya çıkar. Bu hatalar oldukça önemlidir ve kritiklik durumuna göre en kısa sürede düzeltilmelidir.

• Teknik olarak yapması basit olan ve kullanıcının işini çok kolaylaştıran istekler: Bazı konularda kullanıcıların istediği kullanışlılık özellikleri ile yazılımcıların istediği teknik özellikler birbiri ile çelişebilir. Örneğin bir muhasebe yazılımında fatura giriş ekranında müşteri ismi en başta olması gerekirken teknik bir sebeple üçüncü sıraya konulmasına, son kullanıcının her fatura için birkaç kez daha fazla klavyeye basmasına ve belki de faturaların karıştırılmasına sebep olur. Günde yüzlerce fatura giren biri için saatler süren bir emek kaybıdır dolayısıyla kullanıcılardan gelen ve teknik olmayan istekler de mutlaka incelenmeli, proje ekibi bu istekler teknik olmadığı için önemsizmiş gibi bir düşünceye kapılmamalıdır.

• Kullanıcının özellikle önemli gördüğü noktalar: Bunlar çok çeşitli olabilir. Örneğin kullanıcı yapısal hataların düzeltilmesine yönelik taleplerde bulunabilir. Bir personele bir unvan girilebilirken birden fazla unvan girilmesi istenebilir. Bu veri modelinden nesne ve ekran tasarımına kadar her şeyi etkileyecektir ancak sistem işleyişinin bu şekilde olduğu kesinse bu tür istekler de mümkün olan en kısa sürede yapılmalıdır.

Yetki ve Sorumluluk Dengesi Kurmak: Proje yöneticisi nasıl kullanıcıya bir adım yakın duruyorsa kurum üst yönetimi de benzer şekilde adaletten ayrılmamak şartıyla proje yöneticisine bir adım yakın durmalıdır. Proje yöneticisi ve proje ekibinin her üyesi görevlerini yürütebilmek için diğer kişilere zarar vermeyecek şekilde gerekli yetkilere sahip olmalıdır. Proje yöneticisi kendisine ait yetki ve işlerin bir kısmını kimi zaman ekibe devredebilir ancak unutulmamalıdır ki yetki devredilebilir ancak sorumluluk devredilemez.

6. 2. 2. Proje Yöneticisinin Özellikleri

Proje yöneticisinin bir önceki bölümde açıklanan işlemleri gerçekleştirebilmesi için konu ile ilgili iyi bir eğitime sahip olması, teknik ve idarî anlamda kendini yetiştirmemiş olması, çalışkan olması, projeyi sahiplenmesi gibi bazı özelliklere sahip olması beklenir ancak bir proje yöneticisini başarılı ya da başarısız yapan en önemli hususlardan biri de sahip olması gereken kişisel özellikleridir. Proje yöneticilerinin sahip olması beklenen bu kişisel özellikler, on temel yetkinlikle özetlenebilir:

Şekil 20. Proje Yöneticisinin Kişisel Özellikleri

Bu yetkinlikler genel hatları ile aşağıda açıklanmıştır.

Mesleki Yeterlilik: Bir proje yöneticisi; her şeyden önce süreçlere, iş ilişkilerine, sektörlere ve projede kullanılacak teknolojilere ilişkin kapsamlı bilgiye sahip olmalıdır. Özellikle yazılım projelerinde bu konu daha da önemli bir hale gelmektedir. Proje yöneticisi kullanılan işletim sisteminin, yazılım geliştirme ortamının, programlama dilinin, veri tabanı yönetim sisteminin vb. teknik özelliklerini ve neden o aracın seçildiğini bilmezse bu durumda projenin gidişatını, projede meydana gelebilecek sorunları vb. de bilme şansı bulunmaz. Proje yöneticisi, proje geliştirme esnasında ayrıntılı bir kod yazmasa da yazılan kodları ve kodlarda oluşan hataları anlayabilmeli, daha iyi ve daha verimli bir yazılım geliştirmek için neler yapılması gerektiğini ve sorunların nasıl çözüleceğini bilmelidir. Bir projenin başarısı, proje yöneticisinin meslekî uzmanlığı ve proje yönetimi araçlarını kullanmaktaki yeterliliği oranında artacaktır.

Analitik Yetenekler: İyi bir proje yöneticisi; analitik ve sistematik düşünebilmeli, mantıklı ve ileri görüşlü olabilmelidir. Yazılım proje sürecinde hem kurulum ve uyarlama hem de her yeni değişiklik talebinde çok sayıda teknik soru ve karmaşık bağlantılar ortaya çıkar.

Bunları kısa sürede anlamak, araştırmak ve çözüm bulmak, proje yönetiminde çok önemli bir beceridir.

Sosyal Beceri: Başarılı bir proje yönetimi için teknik yeterliliklerin yanı sıra sosyal beceriler de gereklidir çünkü proje tek başına değil ekip ile geliştirilen bir işlemler bütünüdür ve ekibin iyi bir şekilde anlaşması projenin başarısını etkileyecektir. Sosyal becerileri iyi olan bir proje lideri, proje paydaşlarıyla olumlu ilişkiler kurabilir ve herkese sözünü dinletebilir ayrıca tüm proje taraflarını ortak bir amaç etrafında toplayabilir. Ekip üyelerinin gündemindeki konularla ilgilenir, onları dinler ve onlarla empati kurabilir; güven dolu bir iş birliği için en iyi zemini oluşturabilir.

Güçlü İletişim ve Duyarlılık: Bir proje yöneticisi; proje ekibi, müşteriler, son kullanıcılar, projeye dışarıdan dahil olan kişiler gibi herkesle güçlü bir iletişim kurabilmelidir. Bu iletişim ancak doğru kelimeleri, doğru mimikleri ve vücut dilini kullanmak sayesinde olabilir.

Sözlü iletişim dışında projelerde yazılı iletişim de sıklıkla kullanıldığından proje yöneticisi dilbilgisi ve gramer kurallarına uyan, teknik kelimelere hâkim, isteklerini kibar bir dil ile sunan bir hitap şekline sahip olmalıdır.

Güçlü Motivasyon: Bir proje yöneticisi; proje ekibine sağlamış olduğu olumlu geri bildirimler, takdir ve övgüler ile ekip üyelerini motive eder. Bunun dışında işine olan saygısı, kendisinin motive bir şekilde davranması, çalışkanlığı, projeye olan bağlılığı gibi faktörler de proje ekibinin motivasyonunda büyük rol oynar.

Hedef ve Sonuç Yönelimi: Bir projenin başarısı, süreç ne kadar başarılı olursa olsun eninde sonunda hedeflerine ne kadar ulaştığı ile ölçülür. Bu nedenle proje faaliyetleri ile proje takvimini hedeflenen sonuçlarla uyumlu bir şekilde yürütebilmek, bir proje yöneticisi için en temel istekler arasındadır. Proje yöneticileri daima değişen koşullara hazırlıklı olmalı, gelişmelere ayak uydurmalı ve gerektiğinde projeyi rotasında tutmak için ihtiyaç duyulan önlemleri derhal almalıdır.

Müşteri Odaklılık: İyi bir proje yöneticisi projesini kullanacak olan müşterinin ihtiyaçlarına ve isteklerine odaklanması ve projeyi sürekli olarak bunlara uygun bir şekilde değiştirebilmelidir.

Güvenilirlik ve Güçlü Karakter: Müşteriler güvendikleri insanlarla çalışmak ister. Buna göre imzalanan sözleşmelere değer vermek, verilen sözleri tutmak ve işi zamanında sonuçlandırmak, vaat edilmiş kalitede sonuçlar sunmak, proje yöneticisinin görevleri arasında yer almaktadır. Böylece müşteriler, ekip üyeleri ve işverenleri, proje yöneticisinin sözlerine güvenebilir.

Resmin Bütününü Görebilmek ve Organizasyon Becerisi: Çok yönlü bir proje yöneticisi daima gelişmelerden günü gününe haberdar olmalıdır ayrıca proje ekibinin, müşterilerin, sistemin, projenin durumunun yanı sıra proje hedeflerine ulaşılması konusundaki başarının/başarısızlığın, yasa ve normlara ilişkin düzenlemelerin, yeniliklerin de farkında olmalıdır. Her bir ekip üyesinin nerede olduğunu, bir bütün olarak projenin durumunu ve hangi aksaklıklara karşı ne zaman önlem almak gerektiğini yalnızca resmin bütününe bakma yetisine sahip bir proje yöneticisi görüp aklında tutabilir.

Esnek Yönetim: Özellikle yazılım projelerinde proje yöneticisinin değişen koşullara en kısa sürede uyum sağlaması gerekir. Yazılım en hızlı değişebilen alanlardan biri olduğu için özellikle yazılım projelerinde esneklik çok önemlidir. İyi bir proje yöneticisi o anki durumun esnek yaklaşımlara mı yoksa klasik metotlara mı uygun olduğuna karar verebilmeli, mevcut çözüm yöntemlerine hâkim olmakla birlikte yeni yollarda yürümeye de hazır olmalıdır.

6. 3. Birlikte Çalışma

Proje ekiplerinin kimi zaman aylar boyunca birlikte çalışması gerekir, bu birlikte çalışmanın bir kısmı uzaktan olabileceği gibi büyük bir kısmının aynı fiziksel ortamda bulunarak gerçekleştirilme ihtimali de vardır. Bir personelin geç kaldığı bir modül diğerinin çalışmasını etkileyebilir, bir personelin yaptığı bir hata tüm ekibi etkileyebilir. Bu açıdan birlikte çalışmak oldukça önemli ve zor bir iştir ve bazı kuralları bulunmaktadır. İnsanların birlikte çalışması:

• Genel İnsanî Kaidelere Uyulması

• Ortak Hedefler Benimsenmesi

• Ekibin Proje Yöneticisini Benimsemesi

• Birlikte Yapılan İşe Öncelik Verilmesi

• Denge Kurulması

• Birlikte Başarıya ve Birlikte Başarısızlığa İnanılması

• Herkesin En İyi Bildiği İşi Yapması

• Yapılanlardan ve Sorunlardan Tüm Ekibin Haberi Olması

• Eleştirilerin Çözümü de İçermesi

• İşin Bir Bütün Olarak Kabul Edilmesi

• Ortak Çalışma Altyapılarının Seçilmesi

• Kişi Sayısının Düşük Tutulması

• Projeye Uygun Kişilerin İstihdam Edilmesi

• Ekibin Uzun Süre Birlikte Çalışması

• Birlikte İş Harici Faaliyetler Yapılması

gibi temel kaidelere bağlıdır. Birlikte yapılan çalışmalarda eğer bu esaslara uyulursa kişilerin ayrı ayrı yapacağı çalışmaların toplamından çok daha fazla iş üretilir.

Genel İnsani Kaidelere Uyulması: Karşılıklı saygı, güven, dürüstlük ve iletişim becerisi hangi iş yapılırsa yapılsın öncelikli ve önemli kaidelerdir. Bir kişi çok iyi kod da geliştirse, çok iyi tasarım da yapıyor olsa dürüst olmayan bir hareketi ekip ruhunu büyük oranda zedeleyecektir. Bir projede özellikle bir yazılım projesinde bir işin teknik olarak bitip bitmediğini anlayabilecek kişi sayısı sınırlıdır dolayısıyla ancak kodu yazan kişinin söylediklerine güvenilerek hareket edilebilir bu da özellikle yazılım projelerinde kişilerin dürüstlüğünün önemini arttırır.

Ortak Hedefler Benimsenmesi: Kişiler birçok hedefe sahiptir ancak öncelikli hedefleri kendi hayat standartlarını idame ettirmek ve geliştirmektir. Geliştirilen yazılımla ilgili düşünceler farklı da olsa yazılım ekibi, başarılı ve kaliteli bir yazılım ortaya çıkartma ortak hedefi etrafından birleşmelidir.

Ekibin Proje Yöneticisini Benimsemesi: Her projede bir yönetici olmalı ve bu kişinin yetkileri kesin bir şekilde belirlenmelidir. Ekip proje yöneticisini kabul etmeli ve temel konularda onun tavsiyelerine uymalıdır. Yöneticisi belli olmayan bir projede küçük bir fikir ayrılığı bile başarısızlığa zemin hazırlar.

Birlikte Yapılan İşe Öncelik Verilmesi: Yazılım ekibindeki kişiler, her ne kadar istemese de aynı anda birden fazla işle uğraşmak zorunda kalmaktadır. Örneğin bir yazılım geliştirici tam yeni bir kod üzerinde çalışırken önceden teste gönderdiği işlerden geri dönüşler olur ayrıca bu kişi yine önceki projelerden gelen destek işleriyle de uğraşmak zorunda kalabilir.

Bu karmaşa içinde proje yöneticisi tüm işlere vakıf olamaz. Bu yüzden kişiler, önceliği diğer kişilerle birlikte çalıştıkları işlere vermeyi yöntem olarak benimsemelidir.

Denge Kurulması: Çalışanların sosyal ve teknik becerileri arasında denge sağlanmalıdır. Maalesef bazı kişilerin teknik becerileri arttıkça sosyal ve iletişim becerileri azalmaktadır.

Bu durumda proje ekibi seçilirken yakın çalışacak kişiler birbirini dengeleyecek şekilde belirlenmelidir. Örneğin meseleleri hızlı çözmeye odaklı bir kişi ile ayrıntılara önem veren bir kişinin birlikte çalışması sağlanabilir. Böylece iş hızlı çözülürken ayrıntıların atlanmasının önüne geçilmiş olur.

Birlikte Başarıya ve Birlikte Başarısızlığa İnanılması: Başarının da başarısızlığın da tek bir kişiye mal edilmesi özellikle de yazılım gibi modüllerin birbirlerini doğrudan etkilediği projelerde mümkün değildir. Tüm proje ekibi başarıdan da başarısızlıktan da tüm ekibin pay sahibi olduğunun bilincinde olarak problemleri açıkça ortaya koymalı ve ortak çalışmalara destek vermelidir.

Herkesin En İyi Bildiği İşi Yapması: Yazılım geliştirme sürecindeki görevler birçok noktada birbiriyle kesişmektedir ancak özellikle büyük projelerde personellerin en uzman olduğu konu tespit edilmeli ve bu konuda görevlendirilmesi sağlanmalıdır çünkü yazılım geliştirme sürecinde arayüz tasarımı, veri tabanı yönetimi, sorguların tasarlanması, kod geliştirilmesi, test yapılması, algoritma tasarımı vb. pek çok birbirinden farklı işlem bulunmaktadır. Yapılan ihtiyaç analizinin çıktısı yazılım tasarımına dönüşür. Bu noktada analizde bir hata bulan tasarım ekibi analizi kendisi yapmaya kalkmadan hatayı analiz ekibine bildirmelidir. Tasarım ekibi en iyi bildiği işi bırakıp analist rolüne talip olmamalıdır.

Yapılanlardan ve Sorunlardan Tüm Ekibin Haberi Olması: Her projenin her aşamasında ortaya birçok sorun çıkması olasılığı bulunmaktadır. Sorunların saklanması yerine ekip üyelerinin hepsinin görebileceği bir ortamda paylaşılması faydalıdır. Örneğin bir testin veya gözden geçirmenin sonucu, sadece ilgili programcının değil tüm ekibin görebileceği bir ortamda paylaşılabilir. Bu durum izlenebilirliği ve ekip içi yardımlaşmayı arttıracaktır.

Ayrıca farklı rollere sahip kişilerden farklı çözüm önerileri gelebileceği de unutulmamalıdır.

Eleştirilerin Çözümü de İçermesi: Ekip içerisinde kendi işini sağlıklı ve gerektiği şekilde yapan her kişinin diğer çalışmaları belli bir noktaya kadar eleştirme hakkı vardır.

Proje yöneticisi bu eleştirileri görmezden gelmemeli hatta eleştiri yapılmasını teşvik etmelidir ancak eleştirilere sadece eleştiri şeklinde sunmak yerine eleştirirken bir çözüm önerisinde de bulunmak çok daha faydalıdır.

İşin Bir Bütün Olarak Kabul Edilmesi: Ekip ortamında yapılan bir iş, kişilerin yalnız başına yaptıkları kod geliştirme gibi teknik çalışmalardan ibaret değildir. Bilgilendirme, belgeleme, test gibi destekleyici işlemler için doğrudan bir parçası kabul edilmelidir. Bu işlemlerden biri bile yapılmasa iş bitmemiş kabul edilmelidir. Örneğin bir programcının yazacağı küçük bir raporla test ekibine zamanında bilgi vermeyi ihmal etmesi, test ekibinin konuyu tekrar tekrar sormasına yol açar. Raporu yazmamak ilk anda belki birkaç dakika kazandırır fakat sonradan çok daha büyük zaman kaybına yol açar. Bu sebeple özellikle yazılım projelerinde iş bir bütün olarak kabul edilmeli ve ona göre hareket edilmelidir.

Ortak Çalışma Altyapılarının Seçilmesi: Ortak çalışmaları sağlıklı yürütebilmek için bunu destekleyen altyapılar kullanılmalıdır. Ortak çalışma aracı kullanmak, en küçük iş parçasından başlayarak standartlaşmalı ve teşvik edilmelidir. Yapısal programlamada fonksiyon ve paket; nesneye yönelik tasarımda nesne ve bileşen kütüphanesi; veri tabanı paketi bu tür altyapılardır.

Kişi Sayısının Düşük Tutulması: Büyük projelerde yüzlerce kişi çalışabilir. Bunların tek bir ekip olarak çalışması halinde iletişim ihtiyacı artar ve bu ihtiyaç projeyi yönetilmesi zor bir noktaya sürükler. Bu durumda ekip, küçük alt ekiplere bölünmelidir. Ekibi daha küçük ekiplere bölmek iletişim ihtiyacını azaltmaz. Sadece iletişimi daha sistemli ve kolay yapmayı sağlar.

Projeye Uygun Kişilerin İstihdam Edilmesi: “Herkesin en iyi bildiği işi yapması” kuralı ile ortak noktalar içermektedir. Ekipte yeterli sayıda ve yapılacak işe uygun tecrübede çalışan istihdam edilmelidir. Projenin gerektirdiği adam gün sayısı ayrıntılı şekilde belirlendikten sonra istenen sürede tamamlanması için gerekli tecrübe ve sayıda personel ekibe dahil edilmelidir. Yeterli kaynak sağlanmayan projelerin başarısız olacağı açıktır. Küçük projelerde bir kişi birden fazla rol üstlenebilirken büyük projelerde daha özel roller bulunur. Yazılım ekibinde önemli bazı pozisyonlar muhakkak doldurulmalıdır. Diğer meslek dallarında bu konunun anlaşılması yazılım geliştirmeye göre kolaydır. Örneğin futbol takımı kaleci olmadan nasıl kurulamazsa yazılım ekibinde de test sorumlusu olmaması düşünülemez.

Ekibin Uzun Süre Birlikte Çalışması: Bilişim ve yazılım projelerinde birlikte çalışma ortamı, teorik bilgilerden ziyade uzun süreli beraber çalışma sayesinde kişilerin birbirini tanımasıyla oluşur çünkü herkes birbirine muhtaçtır herkes birbirinden kimi zaman faydalanmak zorundadır, bu da ancak uzun süre bir arada çalışıp birbirini iyi bir şekilde tanıma ile gerçekleştirilebilecek bir durumdur.

Birlikte İş Harici Faaliyetler Yapılması: Kurumsal sosyal ve kültürel faaliyetler proje ekibinin birbirini tanımasını sağlayarak aralarındaki iletişimi artırır. Kişiler arası resmî olmayan iletişimin resmî iletişimi de kolaylaştırdığı bilinmektedir.

Ekip ruhunu kuvvetlendiren davranışlar yanında bunu zedeleyen davranışlar da mevcuttur. Proje yönetici bu tür durumlara müsaade etmemeli, oluşmuşsa sebeplerini araştırarak tekrarının önüne geçmelidir. Bu davranışlar özetle aşağıdaki gibi sayılabilir:

• Yeterince Plan Yapmamak

• Hatayı Kendi Dışında Görmek

• Hatayı Kişilerde Görmek

• İşi Aşırı Sahiplenmek

• İşi Bütünüyle Sahiplenmek

• Görevleri Kaydırmak

• Kişiselleştirmek

Bu davranışlar kısaca aşağıdaki gibi açıklanabilir:

Yeterince Plan Yapmamak: Plansızlık, parçalar halinde eksik plan yapmak veya var olan planın izlenmemesi, proje ekibinin ne iş yapacağını, hedefin ne olduğunu bilememesine ve dolayısıyla kişilerin kendi başına çalışamamasına yol açar. Kimsenin diğer kişilerin ne yaptığını bilmediği bir ortamda da birlikte çalışmaktan bahsedilemez.

Hatayı Kendi Dışında Görmek: Her yazılımcı yaptığı işleri sahiplenmeli ve hata varsa çözmeye çalışmalıdır. Yazılım komple bir ürün olduğundan bir noktadaki hata ya da uyumsuzluk çok farklı noktaları etkileyebilir. Bu sebeple “Bu işletim sisteminin hatası benim kodum çalışıyor.”, “Internet bağlantısından kaynaklanan bir durum, benimle ilgili değil.”, “Yeterince veri gelmedi ben ne yapabilirim ki.” şeklinde cümleler kurmak doğru değildir. Özellikle yazılım projelerinde her işlem, her modül diğerleri ile iç içedir ve ayrılması mümkün değildir.

Hatayı Kişilerde Görmek: Yazılım, bir ekip ürünüdür ve bir anda tamamlanmazsa süreç içerisinde olgunlaşır. Kodlama aşamasında yapılan bir hata test aşamasında da fark edilmezse devreye alınan ürüne taşınır, bu da durumun ciddiyetini arttırır. Çıkan üründeki bir hata, sadece bir modülün değil tüm sürecin iyi işlememesi ve sürecin doğru yönetilememesinden kaynaklanır. Hatalı üründen tüm ekip sorumludur. Kişisel suçlamalar, hataların çözülmesini sağlamayacağı gibi ekip ruhunu da zedeler. Mümkün olduğunca kişileri değil, ürün ve süreçleri değerlendirmek gereklidir.

İşi Aşırı Sahiplenmek: Yazılımcılar, yapmış oldukları projeleri sahiplenirler. Bu temelde güzel bir özellik olsa da sahiplenmede aşırıya gidilmesi doğru değildir. İşin planlanan sürede bitmemesi ve hataların zamanında çözülmemesi gibi durumlar, görevin başka bir yazılımcıya aktarılmasını gerekli kılabilir.

İşi Bütünüyle Sahiplenmek: Yazılım geliştirme süreci, yeni teknolojilerin araştırılması gibi kariyer açısından faydalı işler olduğu gibi veri aktarmak gibi rutin, zaman alan ve yeni bir şey öğrenme imkânı kısıtlı işlere de sahiptir. Yazılımcı yaptığı işle ilgili her ayrıntıyı dikkate almalıdır. Proje yöneticisi tarafından ayrıntıların tek tek hatırlatılması gerekmemelidir.

Ekibe işi verip sonradan gönül rahatlığıyla neticesini bekleyebilmek, bir proje yöneticisi için en büyük sevinç kaynaklarından birisidir.

Görevleri Kaydırmak: Yazılım geliştirme sürecinin birbirine bağlı adımlardan oluşması, yazılım ekibindeki kişilerin çalışmalarını da birbiriyle bağımlı hale getirir. Ekipteki bir kişinin sorumlu olduğu aşamada oluşan sıkıntı, diğer kişilere ve aşamalara da doğrudan yansır.

Belli kişilerin görevlerini yapmadığı veya görev paylaşımının sağlıklı yapılmadığı ortamlarda bir görev kayması yaşanır. Bu genellikle kişinin diğer çalışanların işlerini üstlenmesine, bazen de kendi düzeyinin altındaki işlerde çalışmasına sebep olur.

Kişiselleştirmek: Yazılım geliştirme sürecindeki tartışmalar, teknik olarak en doğru çözüme ulaşma hedefiyle yapılmalıdır ancak yazılım teknik ve insani meselelerin iç içe geçtiği bir alandır. Maalesef birçok durumda mesele teknik olarak kabul edilmek yerine kişisel fikir ayrılığı ve çatışmaya dönmektedir. Örneğin bir kod standartlara uymamasına rağmen çalışıyorsa geliştiren kişiye bir sorun olduğunu anlatmak zordur. Konunun şahsi olmadığını anlatmak, standartları net ortaya koymak ve ekipteki herkesten standartlara uygun çalışma beklemek gerekir.

 

Bölüm Özeti

•  Projeler proje ekipleri tarafından gerçekleştirilir. Bir yazılım projesinde yazılımın her aşaması ile ilgili farklı rollere sahip proje personelleri bulunmaktadır. Bu rollerin özelliklerini ve sorumluluklarını bilmek projenin başarılı olması için oldukça önemlidir.

•  Proje ekibi ve sorumlulukları kısaca aşağıdaki gibi verilmiştir:

▶ Proje Yöneticisi: Projenin istenilen kalite ve sürede tamamlanması için gerekli planın hazırlanması, standartların, teknik altyapının, kullanılacak metodolojilerin belirlenmesi, plandaki faaliyetlerin koordinasyonu, görevlere uygun kişilerin atanması ve proje ekibinin plana uygun hareket etmesi gibi işlemleri gerçekleştirmekten sorumlu olan kişidir.

▶ Takım Lideri: Takım lideri, proje yöneticisine bağlı çalışan teknik yöneticilerdir.

▶ Yazılım Mimarı: Nasıl bir yazılım mimarisi kullanılacağını belirleyen kişidir.

▶ Sistem Analisti: Son kullanıcı/müşteri ihtiyaçlarını tespit ve belgelemekle sorumlu olan kişidir.

▶ Yazılım Geliştirici: Yazılımın gerçekleştirilmesinden ve ortaya çıkmasından doğrudan sorumlu olan ekip üyelerine verilen isimdir.

▶ Arayüz Geliştirici: Son kullanıcıların/müşterilerin yazılıma erişimini sağlayan arayüzlerin tasarımından sorumlu olan kişidir

▶ Ürün Yöneticisi: Yazılımın ticari bir ürün haline getirilmesi sürecini yöneten kişidir.

▶ Kalite/Test Mühendisi: Projenin kullanıcı istek, teknik gereksinim ve standartları karşılayacak şekilde hatasız geliştirilmesi için gerekli kontrol ve testleri yapmaktan sorumlu olan kişidir.

▶ Yardımcı Ürün Geliştirici: Projenin geliştirilmesi için kullanılan ürünlere yardımcı olacak, o ürünlerin geliştirilmesine hizmet edecek yan ürünleri organize eden kişidir.

▶ Risk Yöneticisi: Projede ortaya çıkabilecek olumsuz durumları tespit, takip ve düzeltici işlemleri belirlemekten sorumlu olan kişidir.

▶ Son Kullanıcı Belge Geliştirici: Son kullanıcıların/müşterilerin yazılım ürününü kullanabilmeleri için gerekli olan kullanıcı kılavuzu vb. belgeleri geliştirme, güncelleme ve dağıtım işlemlerini gerçekleştiren kişidir.

▶ Destekleyici: Projeye idarî destek ve/veya mali kaynak sağlayan kişidir.

▶ Müşteri: Müşteri, yaptığı işlerde üründen fayda sağlayan ve genellikle ürünün sahip olması gereken fonksiyonların ilk tanımını yapan kişidir.

 

Kaynakça

Barutçugil, İ. (2008). Proje Yönetimi. Kariyer Yayınları.

Çınar, G. Y. (2018). Proje Yönetiminde Ekip Çalışmasının Önemi. Maltepe Üniversitesi Sosyal Bilimler Enstitüsü, e-İşletme Yüksek Lisans Mezuniyet Projesi.

Ensari, H. (1999). 21. Yüzyıl Okulları İçin Toplam Kalite Yönetimi. Sistem Yayıncılık.

Eren, E. (2008). Örgütsel Davranış ve Yönetim Psikolojisi. Beta Yayıncılık.

Goldratt, E. M. ve Cox, J. (2006). Amaç. Optimist Yayın Dağıtım.

Hackman, J. R. (2002). Leading Teams: Setting the Stage for Great Performances. Boston, Harward Business School Press.

Project Management Institute (2017). A guide to the Project Management Body of Knowledge (PMBOK guide).

Sundstrom, E., De Meuse, K. P. ve Futrell, D. (1990). Work Teams: Applications and Effectiveness. American Psychologist, Cilt: 45, Sayı: 2.

Türkan, Y. S. (2015). Proje Yönetiminde Planlama ve Kontrol Teknikleri. Doğu Kütüphanesi Yayınevi.

 

Comments