 |
| 12 Agile Priciples
|
- Our highest priority is to satisfy the customer through early and continuous delivery
of valuable software.
Proje başlangıcından hemen bir kaç hafta sonra sadece bir kısmı çalışan proje yayınlanır
ve
her bir modül bittikçe proje yayına geçriilir.Bir kaç haftalık periyodlarla bu düzenleme
gerçekleştir,ta ki müşteri kendi en temel ihtiyaçlarını karşılayana kadar.Bundan
itibaren,müşteri projeyi kullanmaya başlar.Burada önemli olan nokta bizim belirlediğimiz
periyodlarla(bu 2 veya 3 hafta olabilir) projenin çalışan kısmını müşteriye sunmak,
yayına sokmaktır.Böylelikle müşteriden sürekli geri dönüşüm alınacağından dolayı,projede
hata olasılığı azaltılacak,müşteriyle yazılımcı arasında kuvvetli bir bağ kurulacaktır.
- Welcome changing requirements, even late in development. Agile processes harness
change for the customer's competitive advantage.
Bir yazılım ekibi yazılım gereksinimlerinin değişmesine açık olmalıdır.Öyle bir
sistem kurmalıdır ki, gerçekleştirilen bir gereksinim değiştiğinde projedeki düzeltilen
yerler çok az olmalıdır.Yani proje genişleyebilir ve değiştirilebilir olmalıdır.
- Deliver working software frequently, from a couple of weeks to a couple of months,
with a preference to the shorter time scale.
Çalışan proje belli aralıklarla müşteriye teslim edilmelidir.Bu süre bir kaç
hafta veya ay olabilir.Müşteriye çok büyük bir proje verilmemelidir.Bunun yerine
ufak ufak ama zamanla kapsamı genişlemiş parçalar teslim edilmelidir.
- Businesspeople and developers must work together daily throughout the project.
Projeyi talep eden,Projeye maddi yatırım yapan firma,sponsorlar,proje yöneticisi,takım
lideri ve yazılımcılar birbirleriyle çok sıkı ilişki içerisinde olmalı ve belli
ve kısa aralıklarla görüşmeler yapmalıdırlar.Bir yazılım projesi için şu yanlış
bir yöntemdir;Müşteri projeyi yazılımcılara devreder ve yazılımcılar proje bitiminde
müşteriye yapılanları gösterir.Bu kesinlikle yanlış bir yöntemdir,onun yerine Agile
takımlar,müşteri ve diğer kişilerle proje süresince sıkı sıkıya ilişki içerisinde
olmalıdırlar.
- Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.
Bir projede en önemli faktör insandır yani yazılım mühendisidir.Metodlar,tasarımlar,mekan
vs. gibi etkenler çok önemli olsa da yazılım mühendisi bunların içinde en fazla
öneme sahip olandır.O yüzden yazılımcıların motivasyonları kaybedilmemelidir. Ücretleri
düzenli verilmeli,kafalarını meşgul eden durumlar ortadan kaldırılmalı ve yazılımcıya
kesinlikle güvenilmelidir.Yazılımcıya rahat bir şekilde çalışacağı ortam sağlanmalıdır.Kısacası
yazılım mühendisinin,yazılımı düşünmesini etkileyecek etkenler ortadan kaldırılmalıdır.
- The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
Bir projede emeği geçen bütün kişiler(Yazılım mühendisleri,proje yönetcileri,müşteriler
vs.) sık sık yüzyüze görüşmelidirler.Böylelikle insanlar birbirlerini daha iyi anlamış
ve ortaya az hatalı ürünler koyulmuş olur.Dökümantasyon ve yazılı iletişim sadece
ihtiyaç duyulduğunda yapılmalıdır.Aksi durumda herşey yüzyüze görüşülmelidir.
- Working software is the primary measure of progress.
En önemli unsur yazılımın çalışan kısmıdır.Bir projede yazılım alt yapısı çok iyi
kurulmuş olabilir,dökümantasyon çok iyi yapılmış,en önemli kodlar türlü zorluklarla
yapılmış olabilir.Her ne kadar bunlar önemli olsada birinci öncelik müşterinin ihtiyaçlarını
karşılan,çalışan proje kısmıdır.Bir projede ihtiyaçların %30'u karşılandı ise projenin
%30'u bitmiş demektir.
- Agile processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely.
Bir yazılım ekibi kısa mesafe koşucusu gibi bir süre hızlı bir şekilde koşup daha
sonra tükenmez.Onun yerine uzun mesafe koşucuları gibi,sürekli sabit hızla gidebilecek
kadar hızlı giderler.Hızlı gidip de yorgun düşecekler ise,bu durumda hızlı gitmezler.Hızlı
gerçekleştirilen projelerin sonu hiç de iyi olmamaktadır,ilk anda her ne kadar çalışan
parçalar elde ediliyor olsada,zaman içerisinde yapılan şeyin aslında ne kadar yanlış
olduğu anlaşılmaktadır.Bir yazılım mühendisinin bir sonraki gün ki enerjisi bugünden
kesinlikle ama kesinlikle çalınmamalı,yazılım mühendisine bir anda çok yük bindirip,100
metre koşucusu gibi koşması beklenmemelidir.
- Continuous attention to technical excellence and good design enhances agility.
Bir yazılım takımı yaptığı yazılımlarda maksimum kaliteyi hedefler.Bunu gerçekleştirmek
için teknik anlamda en iyi ve en güzel mimariyi kullanır.Yalnız bunu yaparkende
yazılımın karmakarışık olmasına izin vermez.Yapılan yazılımda önemli olan onun açık(kolay
anlaşılır) ve sağlam olmasıdır.
- Simplicitythe art of maximizing the amount of work not doneis essential.
Yazılım takımı yazılımı gerçekleştiriken bugünün gereksinimlerine odaklanır ve bugünün
problemlerini en basit ve en tutarlı,en kaliteli ve en değiştirilebilir bir biçimde
gerçekleştirir.Bugünün işini yaparken yarını düşünerek yapmaz.Yaptığı yazılımlarda
kaliteyi en üst düzeyde tuttuğu için yarın karşılacak bir gereksinim sisteme sorunsuz
bir biçimde dahil edilebilinecektir(entegre edilebilecektir).
- The best architectures, requirements, and designs emerge from self-organizing teams.
Yazılım ekibi bütün sorumluluklarda ortaktırlar.Yani bir kişi test işinde görevlendirilip,biri
veri tabanı işinde görevlendirilip,biri de arayüz tasarlamada görevdirilmez.Bu yanlış
bir tutumdur.Takım içiçe olmalı ve herkes her adımda bulunmalıdır.Bazı takım üyelerinin
özellikleri bir iş konusunda daha yeterli ise bu durumda belki o kişiye ilgili konuda
daha fazla görev verilebilir ama muhakkak diğer takım elemanları da o işe dahil
edilirler.Böylelikle bütün problemler yazılım takımının bir elemanı tarafından değil,tamamı
tarafından çözülmüş olur.
- At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly.
Yazılım ekibi belli aralıklarla toplantılar yaparak, kaliteyi geliştirmek adına
yöntemlerinde,durumlarında bazı değişiklikler yapabilirler.Zira yazılım ekibinin
ortamı(yazılım ortamı,fiziksel ortamı,yazılımda gerçekleştirilecek bölümler) değişeceğinden,yazılım
ekibide bu değişime ayak uydurmalıdır.O yüzden takımın davranışları,rolleri, poziyonları,
görevleri belli aralıklarla yapılan görüşmelerde yeniden gözden geçirilmelidir.
|
|
|