Yazılım Proje Planı Nedir? Nasıl Oluşturulur?

Batuhan Akpunar
9 min readJan 30, 2022

--

İÇİNDEKİLER:
- Proje Planı Nedir?
- Neden Bir Planlamaya İhtiyaç Var?
- Bir Proje Yönetim Planına Neler Dahil Edilir?
- Bir Yazılım Geliştirme Planı Nasıl Oluşturulur?
- Proje Planlamasında Karşılaşılan Zorluklar Nelerdir?
- Agile Proje Yönetim Planı Nasıl Oluşturulur? Geleneksel Yaklaşımdan Farkı Nedir?

Sayısız toplantı, birçok revizyon ve tonlarca bitmeyen görev 😓 Proje yönetimi bazen dengenizi sarsabilir. 🤯

Neyse ki planlama diye bir şey var. Antik çağlardaki bir piramidin inşasında, sefere çıkan bir orduda ve hatta günümüzdeki bir roket yapımında bile bir plana sadık kalarak ilerliyoruz.

Çünkü bir planınız olduğunda önümüzü çok daha iyi görürüz. 👀

Bir planla, hedeflerinize ulaşma ve başarılı projeleri tamamlama olasılığınız daha yüksektir. Kötü bir planlama veya daha da kötüsü, hiçbir planınızın olmaması hem size hem de ekibinize ve müşterilerinize gereksiz yük ve strese neden olur, güvenilirliğinize zarar verebilir, ilişkileri bozabilir veya gelecekteki iş fırsatlarınıza mal olabilir.

Bu yazımda, bir proje yöneticisinin proje planını nasıl oluşturacağını, faydalarını özetlemeye ve basit bir proje planı oluşturmak için dikkat edilmesi gerekenleri anlatacağım. ✨

Proje Planı Nedir?

Proje planı, belirli bir projeyi baştan sona özetleyen resmi bir belgedir. 📒

Yazılım geliştirme planının arkasındaki ana fikir, projeyi başarıyla tamamlamak için gereken görevleri, kaynakları, öncelikleri ve riskleri belirleyerek fiili çalışma başlamadan önce mümkün olduğunca fazla bilgi toplamaktır. 📥

Bir proje planı, devam eden operasyonel çalışmalarla karıştırmamak gerekir. 🚫

Bir projenin belirli bir tarihe kadar bir şey teslim etme niyetiyle net bir başlangıç ​​ve bitiş tarihi vardır. Ve bir projenin planlama kısımları; neden, ne, ne zaman, kim ve nasıl konularını kapsar.

Neden Bir Planlamaya İhtiyaç Var?

Planlama, projeleri yönetmenin en keyifli bileşeni olmayabilir, ancak risk ve başarısızlık oranlarını azaltmak için en hayati kısımdır. 😉

Proje planlaması, diğer proje aşamaları boyunca paydaşlara, sponsorlara, ekiplere ve proje yöneticisine rehberlik etmede önemli bir rol oynar. İstenen hedefleri belirlemek, riskleri azaltmak, release tarihlerini kaçırmamak ve sonuç olarak üzerinde anlaşmaya varılan ürünü, hizmeti veya projeyi teslim etmek için planlama gereklidir. Dikkatli bir planlama olmadan, proje performansının zarar görmesi neredeyse kesindir.

Proje planlaması, bir projeyi görevlere ayırmayı, proje ekibini bir araya getirmeyi ve işin tamamlanacağı bir çizelgeyi belirlemeyi gerektirir. Bu aşamada projeniz ne kadar büyük olursa olsun, projede daha küçük hedefler oluşturarak her birinin zaman çerçevesini belirler ve uygulanabilir olduğundan kesin bir şekilde emin olursunuz.

Bir Proje Yönetim Planına Neler Dahil Edilir?

İyi bir proje yönetim planı, projeyi başarılı bir şekilde hayata geçirmek için gerekli olan tüm bilgileri (kapsamı, ne yapılması gerektiği, ne zaman ve nasıl yapılacağı ve ilgili her görevden kimin sorumlu olduğu vb.) kapsamalıdır. Yazılım geliştirme, birçok adım gerektiren karmaşık teknik bilgiler içerdiğinden, ekibin daha rahat çalışabilmesi için planı hazırlarken mümkün olan her bir adımı görselleştirmek son derece yararlı olacaktır. 📊

Düzgün bir planlama olmadan geliştirmeye başlamak ve planlama stresinden kurtulmak her ne kadar cazip gelse de, bu yaklaşım yanlış iletişime, gecikmelere, tatmin edici olmayan sonuçlara ve beklenmedik maliyetlere yol açabileceğini unutmamak gerekir. 👎

İster büyük ölçekli kurumsal yazılımlar isterse basit bir mobil uygulama için olsun, sıfırdan bir proje üzerinde çalışmaya başladığınızda her zaman gerçekten neyi başarmaya çalıştığınızı tanımlayarak başlayın.

Bir Yazılım Geliştirme Planı Nasıl Oluşturulur?

Bir yazılım geliştirme planı yazmak için projenin tüm katılımcılarını aynı sayfada toplamanız gerekir. Tüm ekip, planın yapısını ve ana noktaları tartışmak için bir araya gelir ve planın tamamlanmasından sorumlu olacak sorumlu bir yönetici atar. Genellikle, bu aşamada, iş analistleri ve proje yöneticileri belge için en fazla sorumluluğu taşırlar.

1. Proje kapsamının belirlenmesi

Başlamadan önce, projenizin bitiş noktaları net olmalıdır bu nedenle bir yazılım proje planı oluşturmanın ilk adımı projenin kapsamını tanımlamaktır. Projenin kapsamı, projenizi başarıyla tamamlamak için karşılamanız gereken hedefleri tanımlar ve tüm üyelerin proje fikrini kabul ettiği anlamına gelir. Kapsamı tanımlarken sonuçlar, görevler, bütçe, zaman çerçevesi ve bitiş tarihleri gibi proje unsurları göz önünde bulundurulmalıdır. Fakat şunu da gözardı etmeyin ki ne kadar dikkatli plan yaparsanız yapın, projeniz mutlaka uğraşmanız gereken en az bir değişiklik yaşayacaktır. 😓

Bu aşamada proje paydaşlarıyla yapacağınız görüşmeler ve onların fikirlerini almanız çok önemlidir. Özellikle aşağıdaki konular üzerinde netlik kazandırılmalıdır:

  • Proje hedefleri ve potansiyel riskler
  • Projeyi etkileyebilecek diğer geliştirmeler
  • Benzer projelerin temel yönleri, eksiklikleri ve dökümanları
  • Tercih edilen iletişim yöntemleri ve sıklığı

2. Gereksinimlerin belirlenmesi ve dökümantasyon

Bir ressamın tuvali nasıl ki ilk hali ile bittiği andaki aynı olmadığı gibi, kapsam dökümanız da gereksinmleri topladıkça son şeklini alacaktır. Gereksinimleri toplamaya basit şekilde başlayabilir ve zamanla önemli adımları görselleştirebilir ve son rütuşları verebilirsiniz. Hatta bu aşamada hangi metodolojiyi kullanmanız gerektiğine karar da veriyor olacaksınız.

Bir yazılım proje planı oluştururken, projeyi oluşturacak kısımları birbirinden bağımsız küçük görevlere ayırmak çok önemlidir. Bu, proje büyüklüğünü belirlerken ve projenin çeşitli yönlerini yönetmek için bir ekip oluştururken size çok yardımcı olacaktır.

Gereksinimleri toplayan kişiler genelde proje yöneticileri ve iş analistleridir. Proje yöneticileri genellikle projeleri yönetir ve gereksinimleri toplar. Sistem ve iş analistleri, projeyi yürütmek ve sistemleri daha iyi hale getirmek için gereken yazılım gereksinimlerinin belirlenmesine yardımcı olur.

Ekibinizle oturup proje çalışmasını üst düzey olarak tanımlamanız ve ardından ayrıntılı iş paketlerine ayırmanız gerekiyor. Bu arada ekip, tanımlanan iş paketlerini tamamlamak için yerine getirmeleri gereken görevleri tanımlamaya da çalışmalıdır. Bu görevler, proje ekibinin gerçekleştireceği her aktiviteyi mümkün olan en ayrıntılı şekilde detaylandırmalıdır. Bu sayede ekip, projenin herhangi bir yönünü kaçırma şansı bırakmaz, aynı zamanda ekibin plan yapmasına ve projeye uygun kaynakları atamasına yardımcı olur.

Sonuç olarak, decomposition (ayırma) tekniği proje planlamasındaki en önemli adımlardan biri olarak kabul edilir. Ayrıca, proje ekibinin neleri proje kapsamının bir parçası olarak kabul etmesi gerektiği ve neleri kapsam dışı olarak kabul etmesi gerektiğine de yardımcı olur.

Gereksinimlerin belirlenmesi ve analizi ile ilgili detaylı yazıma şuradan ulaşabilirsiniz. 😊

3. Bitiş tarihli hedefler oluşturmak

Listemiz yavaş yavaş şekillenmeye başladığı andan itibaren gelişitrme ekibi ile yeni bulguları paylaşma ve detayları belirleme zamanı geldi. 😊

Bitiş tarihli hedefler veya kilometre taşlarına karar vermek, yazılım proje planlamasında önemli bir adımdır. Bunu yapmak için projedeki her bir görevin ne kadar süreceğini belirlenmelidir. Kilometre taşları (milestones) hedeflere ulaşmada ekibe ve proje yöneticisine çok yardımcı olur.

4. Görevlerin ekiplere veya kişilere devredilmesi

Artık görevleri planladığınıza göre, işi tamamlamak için ihtiyaç duyduğunuz kaynakları belirleme zamanı. 😐

Projede karmaşık veya özel uzmanlık gerektirebilecek bir görev varsa, birlikte çalışmak üzere yetenekli kişilerden oluşan bir ekip oluşturulabilir.

Unutmayın proje yöneticisinin amacı sadece iş takibini yapmak, bitiş zamanlarına uymak değildir. Aynı zamanda; ekip üyelerini daha iyi tanımak, hangi alanlara ilgili olduklarını, motivasyon kriterlerini, uzmanlık alanlarını da gözlemlemek ve bunları dikkate alarak gerekli atamaları yapmaktır. ⚠️

5. Zaman çizelgesini oluşturmak

Projedeki her bir görevin ne zaman tamamlanması gerektiğini öğrendikten sonra, yazılım üzerinde çalışan herkes için zaman çizelgeleri oluşturulur. Tam olarak ne kadar iş gücüne ihtiyaç duyulacağını detaylandırmak ve ekiple proje ihtiyaçları hakkında iletişim kurmak, kilometre taşlarının zamanında ulaşılmasına ve çıktıların zamanında teslim edilmesine yardımcı olur. Proje zaman çizelgesi ile ekip üyelerini engelleybilecek veya çakışan diğer projeler tespit edilir.

Proje çizelgesi, her bir görevi tamamlamak için gereken çaba ve kaynak miktarını göstermenin yanı sıra, görev veya projenin süresi ile kaynak miktarını dengelemenize yardımcı olacaktır. Bir görev tahmin ettiğinizden daha uzun sürerse veya daha fazla kaynak gerektiriyorsa, hedeflerinize hala ulaştığınızdan emin olabilmeniz için zaman çizelgesinin güncellenmesi gerekebilir.

6. Proje takibi

Proje bitene kadar proje planlaması bitmez. İlerlemeyi ve proje kapsamını izlemeniz, bunu temel değerlerle karşılaştırmanız ve değişiklikleri yönetmeniz gerekecektir. Hiçbir plan mükemmel değildir, bu nedenle planı düzeltmeye ve sorunlar ortaya çıktıkça kritik kararlar almaya hazır olmalısınız.

Planlama tamamlanmış olabilir, ancak bu, içerikte düzenlemeler yapmayı bırakabileceğiniz anlamına gelmez. Bazı maddeler ve yapılacaklar listesi sürekli değişebilir. Proje planı, zamanla gelişen, yaşayan, nefes alan bir belgedir. 📝

Elbette kötü şeyler de başımıza gelecek. Hiç beklemediğimiz bir anda sorunlarla karşılaşacağız. 🤷‍♂️Teslim tarihleri bazen kaçırılır, yanlış anlaşılmalar olabilir, insanlar hastalanır, süreç değişiklikleri meydana gelir ve ekibe yeni paydaşlar katılabilir. Bunların hepsi işleri yoldan çıkarma potansiyeline sahip. Yapabileceğiniz en iyi şey, değişim için plan yapmak ve esnek kalmaktır, böylece değişime kolayca uyum sağlayabilir ve gerekli ayarlamaları yapabilirsiniz.

Ben genelde aşağıdaki gibi bir akışa bağlı kalarak planlarımı uyguluyorum. Umarım sizin için de faydalı olur.

Proje Planlamasında Karşılaşılan Zorluklar Nelerdir?

Proje sırasında ortaya çıkan her faktörü, riski veya değişkeni tahmin edemezsiniz. Sponsorların incelemesi, onayları ve paydaşların geri bildirim döngüsü tahmin ettiğinizden daha yavaş ilerleyebilir. Proje planlaması doğası gereği belirsizdir çünkü ihtiyacınız olan tüm bilgilere asla sahip olamayacaksınız. Kaynaklar hakkında varsayımlarda bulunmanız ve belirli risk türleri için plan yapmanız gerekecektir. Varsayımlarınızı etkileyen değişkenler hakkında kesin olamasanız da, pazar rekabeti, regülasyonlar veya teknolojideki gelişmeler dahil olmak üzere çeşitli geniş değişken ve risk kategorileri için plan yapmanız gerekebilir.

Bir diğer zorluk da yetersiz iletişimdir. Yanlış anlamalara, kalite standartlarının karşılanmamasına, yeniden yapılması gereken işlere ve hatta iptal edilen projelere yol açabilir. Soru sormaktan asla korkmayın 😊 Çünkü iletişim; planınızın başarısı için kritik öneme sahiptir. Ek olarak, paydaş iletişimini yönetmek, projenin devam eden başarısı için de çok önemlidir. Çünkü projenin her aşaması ve bileşeni hakkında uzman olmanız beklenmiyor, yönetmeniz bekleniyor.

Agile Proje Yönetim Planı Nasıl Oluşturulur? Geleneksel Yaklaşımdan Farkı Nedir?

Geleneksel yaklaşımda planlama, bir projenin başarısı için en önemli konudur. Ardından gelen her adım planda yazılanlara göre yapılır. Öte yandan, Agile ortamda planlama, projenin ilerlemesi için daha çok bir kılavuz görevi görür.

Olayları daha da netleştirmek için önce bir planın veya planların hem geleneksel hem de Agile bakış açılarından nasıl göründüğüne bir göz atalım. 🔥

Geleneksel yaklaşımda planlama, herhangi bir projenin hayati bir bileşenidir. Bir plan, bilgi toplama ve dokümantasyon oluşturma, geliştirme, test etme, programlama ve çıkış tarihi belirlemeye kadar uzanan tüm projeyi kapsayabilir. Böyle bir planın amacı, proje yöneticisinin projede hangi kaynaklara ihtiyacı olacağını, ne kadarda tamamlanacağını, ne kadara mal olacağını ve yazılımın önceden belirlenmiş bir zaman diliminde geliştirilip piyasaya sürülmesinin ne kadar süreceğini doğru bir şekilde tahmin edebilmesi içindir. Öte yandan, Agile metodolojide planlara biraz farklı yaklaşılır.

Agile’daki planlar tamamen özellik (feature-based) tabanlıdır. Başka bir deyişle, Agile planlar, uygulama özelliklerinin nasıl geliştirileceğinden daha çok ne zaman geliştirileceğine odaklanır. Basitçe söylemek gerekirse, ekiplerin belirli bir zaman diliminde (Sprint) ne kadar iş çıkarabileceğine bağlı olarak (velocity) neyin teslim edileceği ve ne zaman teslim edileceği hakkında net bir tahminde bulunabilirsiniz.

1. Bilgi Toplama

Her proje yönetimi planı bilgi ile başlar. Müşterilerden, geliştiricilerden, paydaşlardan ve dahil olan herkesten toplanan bilgiler, projenin nasıl görünmesi gerektiğine dair bir vizyon oluşturmaya yardımcı olur. Ayrıca, vizyonun kendisi “ne” sunulması gerektiğini, “kimin” dahil edilmesi gerektiğini ve projeyi başarılı kılmak için insanların “nasıl” birlikte çalışacaklarını içerir.

Bu bilgi ve bakış açısı, hem iş hem de teknik gereksinimlerden oluşan bir proje Backlog’u oluşturmaya ve ayrıca ürünün zamanla nasıl gelişeceğine dair bir genel bakış olan bir Project Roadmap’i oluşturmaya yardımcı olur. Bilgiler elde edildikten sonra bir sonraki aşamayı planlamaya başlanır.

2. Backlog (İş Listesi) Oluşturma

Aslında Epics olarak da bilinen büyük kullanıcı hikayeleri (user stories), bir nihai ürünün nasıl görünmesi gerektiğine dair bir görüş yansıtır. Projeye başlamak için, Epicler daha küçük kullanıcı hikayelerine veya bireysel özelliklere ve gereksinimlere bölmeniz ve Sprintleri planlamak için onlara öncelik vermeniz gerekir. Bu aynı zamanda Backlog listesini düzenleme olarak da bilinir. Fakat burada dikkat edilmesi gereken şey, Agile ekiplerin Backlog’u oluşturan her bir item’i (iş kalemini) planlamaya çalışmaması, zamanı gelene kadar onları listede bekletmesidir.

3. Release’lerin Tahmin Edilmesi

Yukarıda da belirtildiği gibi, ekiplerin tamamlayacağı özelliklere bağlı olarak neyin ne zaman teslim edileceği tahmin edilir. Tek bir Sprintte veya nihai ürün için realease’lerin tahmin edilmesi, Agile projelerde yaygın bir uygulamadır. Bu aynı zamanda product roadmapn (ürün yol haritası) için de gereklidir. Sprintlerin ne zaman tamamlanacağına ve projenin ne zaman sona ereceğine dair en azından kaba bir tahmine sahip olmanız gerekir. Bu tahminleri önceki çalışmalara ve ekibin deneyimlerine dayanarak yapabilirsiniz. Ekibin benzer bir projelerde tek bir Sprintte belirli sayıda özelliği geliştirmesi ne kadar sürdü, muhtemelen aynı şeyi mevcut projede yapmaları için gereken süre aynı olacaktır. Bu, Relaase tarihlerini daha doğru tahmin etmenize yardımcı olur.

Özetle, Agile yaklaşımlar, ekibin ürün için plan yapmasını engellemez fakat proje planı daha çok büyük resimle ilgili olduğundan, daha küçük ve daha doğrudan planların zamanı geldiğinde tüm ekip tarafından yapılmasını amaçlamaktadır.

Yazılım geliştirme planlaması, geliştirmenin kendisi kadar etkilidir. Ürününüzün başarısı için bir temel oluşturur ve ekibe, paydaşlara yöntemlerini, metodolojilerini ve standartlarını tanıtma fırsatı sunar. Bir yazılım geliştirme planı sizin ve şirketiniz için ana belgelerinizden biri olacak ve hatta bu planı başka projelerde ve diğer ürünlerde şablon olarak veya yardımcı kılavuz kullanacaksınız.

--

--

No responses yet