Let’s Talk About Agile!

Agile nedir diye baลŸlarsak, Agile geleneksel proje yรถntemine alternatif olarak ortaya รงฤฑkmฤฑลŸ daha รงok yazฤฑlฤฑm geliลŸtirmesinde kullanฤฑlan bir metodolojidir. Temelinde artฤฑrฤฑmlฤฑ ve dรถngรผsel olarak geliลŸtirme dรผลŸรผncesine sahiptir. ร–zetle Agile metodolojisi ve Scrum hakkฤฑnda genel bilgi vermeye รงalฤฑลŸacaฤŸฤฑm.

agile_method-01

Agileโ€™da yapฤฑlmak istenen mรผลŸteriye minimum eforla ve maksimum รถฤŸrenimle; optimum รผrรผnรผ verebilmektir. ร–ฤŸrenim dendiฤŸinde ise risklerin azaltฤฑlmasฤฑ, ideal market riskinin alฤฑnmasฤฑ gibi konular sรถz konusu olmaktadฤฑr. Tรผm fazlarฤฑn hepsi birden markete alฤฑndฤฑ ve aslฤฑnda kullanฤฑcฤฑmฤฑzฤฑn buna ihtiyacฤฑ yoktu. Bu durumda olan hem zaman hem de insan gรผcรผ kaybฤฑdฤฑr. ร‡ok bรผyรผk bir maliyetle minimum kazanฤฑm elde edilmiลŸ olur. Bunun yerine รผrรผnรผn kรผรงรผk bir prototipiyle ilerleyip kullanฤฑmฤฑnฤฑ incelediฤŸimizde ve kullanฤฑcฤฑnฤฑn ilgisine gรถre ilerlediฤŸimizde kazancฤฑmฤฑz รงok daha fazla olacaktฤฑr. Az รถnceki durumda, baลŸarฤฑsฤฑz olacak bir projeyi en baลŸฤฑnda fark edeceฤŸimiz iรงin kaynaklarฤฑmฤฑzฤฑ baลŸka yรถne yรถnlendirebileceฤŸiz. Bu durum bรผyรผk firmalar รงok bรผyรผk kayฤฑp olmayabiliyorken; yaptฤฑฤŸฤฑ iลŸi satmak zorunda, aksi takdirde yaลŸamฤฑna devam edemeyecek olan firmalar iรงinse gerรงek bir zorunluluktur ki ortaya รงฤฑkma sebebi de zaten budur.

Prototipin kullanฤฑcฤฑlara aรงฤฑlฤฑลŸฤฑ farklฤฑ steplerde olabilir. Bu aลŸama aลŸaฤŸฤฑdaki 3 stepโ€™den oluลŸmaktadฤฑr.

  • Validation
  • Limited
  • Production

Production adฤฑndan da anlaลŸฤฑlacaฤŸฤฑ รผzere tรผm kullanฤฑcฤฑya aรงฤฑlmฤฑลŸ bu Release sรผrecinin son aลŸamasฤฑdฤฑr. Bu sebeple ona deฤŸinmeden diฤŸer iki steple devam ediyorum. Validation, aslฤฑnda Learning Release olarak da tanฤฑmlanabilir. 1 ya da 2 kere yapฤฑlabilir. 2 ya da 3 Sprintโ€™den sonra Validation Release รงฤฑkmak zaman olarak uygundur. Bu aลŸamada Release iรงeriye yapฤฑlฤฑr. Amaรง bir ลŸeyler รถฤŸrenmektir. ฤฐรงeriye aรงฤฑldฤฑฤŸฤฑ iรงin de risk dรผลŸรผktรผr. 2. AลŸama biraz daha ciddi bir aลŸamadฤฑr. Burada รผrรผn, hem iรงeriye hem dฤฑลŸarฤฑya aรงฤฑlmaya baลŸlanฤฑr. ร–rneฤŸin, bir Android uygulamasฤฑ iรงin Alpha, Beta testerlar belirlenerek belki sonrasฤฑnda Google Playโ€™in sunduฤŸu Stage Rollout seรงeneฤŸi kullanฤฑlarak Limited Release yapฤฑlabilir. Artฤฑk รผrรผn hem iรงeriye hem dฤฑลŸarฤฑya aรงฤฑldฤฑฤŸฤฑ iรงin hem kontrol edilebilir olan hem de kontrol edilebilir olmayan kullanฤฑcฤฑdan sรถz ediyor olmuลŸ oluruz. Bรถylece kullanฤฑcฤฑdan aldฤฑฤŸฤฑmฤฑz feedbacklere gรถre ilerlemiลŸ oluyoruz.

Sรผreci anlatmaya biraz sondan baลŸlamฤฑลŸ oldum ama yazฤฑlฤฑm tarafฤฑnda olanlar iรงin geliลŸtirme belki de en bilindik kฤฑsฤฑm sรผreci daha geniลŸ bir รงerรงeveden aldฤฑฤŸฤฑmฤฑzda bu ลŸekilde รถzetleyebiliriz. Tabi geliลŸtirme en alฤฑลŸkฤฑn olduฤŸumuz bรถlรผm derken ilerlenen sรผreรง alฤฑลŸฤฑk olduฤŸumuza oranla biraz daha farklฤฑ.

Detaylara inmeden Scrum ekipleri, proje ekipleri deฤŸil product ekipleridir. Bu ne demektir dediฤŸimizde ise ลŸรถyle ayrฤฑmฤฑ saฤŸlayabiliriz. Proje ekipleri, proje yeterli para kazandฤฑrdฤฑฤŸฤฑnda sonlandฤฑrฤฑlฤฑrken Product ekipleri รผrรผn istenen deฤŸere ulaลŸtฤฑฤŸฤฑnda daฤŸฤฑlฤฑr. Agile’da sรผrecin kendini deฤŸil, รผrรผn รถnemlidir. Scrum ise en basit agile sรผreci olarak tasarlanmฤฑลŸtฤฑr. Product team kavramฤฑ ise Agile’ฤฑn 3. jenerasyonuyla beraber ortaya รงฤฑkmฤฑลŸtฤฑr. ฤฐlk jenerasyon kรผรงรผk developer takฤฑmlarฤฑndan oluลŸuyordu. Tรผm gรผรง developerlara ait dรผลŸรผncesi hakimdi. 2. jenerasyonda bunun yerini product development akฤฑลŸฤฑ kavram olarak yerini aldฤฑ. 3. jenerasyonda ise product ekipleri oluลŸmuลŸ oldu.

Peki Scrum tam olarak nedir dersek, Scrum Agile methodlarฤฑndan biridir. Kendi kendine organize olan ekiplerden oluลŸur. Her 2 ya da 4 haftada bir ise bir รผrรผn ortaya รงฤฑkarฤฑlฤฑr. Scrum’da 3 rol vardฤฑr. Bunlardan ilki Product Owner’dฤฑr. Product Owner vizyonu taลŸฤฑyan kiลŸidir. Product Backlog’dan temel olarak PO sorumludur. Bir diฤŸeri sรผrekli bahsettiฤŸimiz Scrum Team‘dir. Son olarak da Scrum Master vardฤฑr. Scrum Master ekibin bir elemanฤฑ olabileceฤŸi gibi, ekip dฤฑลŸฤฑndan da olabilir. SM yรถnetici ya da proje yรถneticisi deฤŸildir. Agile prensipleri ve deฤŸerlerinin uygulanmasฤฑnฤฑ saฤŸlar, sรผreci takip eder. Scrum Framework’unu, rollerin en iyi nasฤฑl uygulanacaฤŸฤฑnฤฑ herkese รถฤŸretir. Hizmet elemanฤฑdฤฑr ama bunu รงay, kahve taลŸฤฑyan, gelip omzumuza masaj yapan kiลŸi olarak dรผลŸรผnmemeliyiz. Ekibin dedike bir ลŸekilde, dฤฑลŸ etkenlerden etkilenmeden รงalฤฑลŸmaya devam etmesini saฤŸlar. Aynฤฑ zamanda hem ekip elemanlarฤฑ hem de PO iรงin Change Agent olarak gรถrev alฤฑr. Riski yรถnetir. Sรผreรงte bir sorun gรถrdรผฤŸรผnde mรผdahale eder. Scrum ekipleri ortalama 5-9 arasฤฑ sayฤฑda kiลŸiden oluลŸur.

Scrum’da 5 tip toplantฤฑ vardฤฑr.

  • Sprint Planning (Her Sprint’e baลŸlarken)
  • Daily Stand-ups (Her gรผn max 15 dk, ayakta)
  • Backlog Grooming(1 sprint’de 2 ya da 4 defa)
  • Sprint Demo (Sprint sonunda)
  • Sprint Retrospective(Sprint sonunda , sรผreci deฤŸerlendirmek iรงin)

Sรผreรง Product Backlog‘un oluลŸturulmasฤฑyla baลŸlamaktadฤฑr. Product backlog kabaca development ekibi iรงin iลŸlerin รถnceliklendirildiฤŸi bir todo listesidir. Product Backlog’un oluลŸturulmasฤฑnda temel gรถrev Product Owner’a dรผลŸmektedir ama bu sรผreรงte Development Team’in de fikrini alabilir. Her bir Product Backlog รงok sayฤฑda PBI (Product Backlog Item) iรงermektedir.Her bir PBI birden รงok Epic, Feature, Story ve Task’dan oluลŸuyor olabilir. Bir รผrรผn 1-7 epic’e sahip olabilir. Her bir epic, feature’lara sahiptir. Her bir feature iรงin de รงoklu sayฤฑda story’ler ve bu storylere de kabul kriterleri hazฤฑrlarฤฑz. Kabul kritlerini aynฤฑ zamanda test case’leri gibi de dรผลŸรผnebiliriz. PBI’yฤฑ scope olarak dรผลŸรผnebiliriz. Her bir PBI ise รงok sayฤฑda Sprint Backlog iรงermektedir. Sprint Backlog’lar Sprint Planning sonrasฤฑnda oluลŸur. Sprint Planning sฤฑrasฤฑnda PO neyi neden istediฤŸini sรถyler. Team bu istekleri analiz eder ve sonrasฤฑnda PO ve Team arasฤฑnda bir anlaลŸma kararฤฑ alฤฑnฤฑr. Bรถylece Sprint’e baลŸlanabilir.

Sprint planning’de yazฤฑlan her bir story’nin ne kadar sรผrede tamamlanacaฤŸฤฑnฤฑ ya da zorluk derecesini รถlรงรผmlemek iรงin estimation yapฤฑlฤฑr. Her bir story’ye story pointler verilir. Burada puanlama poker kartlarฤฑ ya da fibonacci numaralarฤฑyla yapฤฑlabilir. Story’lerden biri ortalama zorlukta olarak seรงilir ve mesela 5 puan verilir. DiฤŸer story’lere ise buna oranla bir puan verilir. Estimation yapฤฑlฤฑrken ise, mesela poker kartlarฤฑnฤฑz kullandฤฑฤŸฤฑmฤฑzฤฑ varsayalฤฑm. Story’ye tรผm ekip รผyeleri bakar sonrasฤฑnda herkes dรผลŸรผndรผฤŸรผ zorluk iรงin bir poker kartฤฑ seรงer. 3 dk sonunda herkes poker kartlarฤฑnฤฑ gรถsterir. EฤŸer deฤŸerler birbirine yakฤฑnsa ortalama bir sayฤฑda konsensusa varฤฑlabilir. Ya da en dรผลŸรผk ve en yรผksek kartฤฑ gรถsterenler sebeplerini aรงฤฑklarlarlar ve tekrar oylama yapฤฑlฤฑr. Burada toplu bir karar alฤฑnmasฤฑ yerine herkesin dรผลŸรผndรผฤŸรผ rakamฤฑ gรถstermesinin sebebi, farklฤฑ bakฤฑลŸ aรงฤฑlarฤฑnฤฑn farklฤฑ riskleri dรผลŸรผnebilme ihtimalidir.

cone-of-uncertainty[1]

 Yukarda yer alan chart, cone of uncertainity’dir. Estimationlarฤฑ yaparken eฤŸer daha รถncesinden hiรง bilgi ve deneyimimiz yoksa, hiรง bir analiz yapma ลŸansฤฑmฤฑz olmadฤฑysa, verdiฤŸimiz estimationlarฤฑn da gerรงekรงiliฤŸi sรถz konudur deฤŸildir. 5 story pointlik bir iลŸe 400 verme ihtimalimiz vardฤฑr. EฤŸer biraz analiz yapma ลŸansฤฑmฤฑz olduysa ya da kฤฑsmen bir bilgi sahipbiysek, yukarฤฑdaki eฤŸride orta kฤฑsฤฑmlara denk gelen bir tahminleme yaparฤฑz. Hem bilgi sahibiysek hem de analizimi yaptฤฑysak eฤŸer yaptฤฑฤŸฤฑmฤฑz estimation son kฤฑsฤฑmlara denk gelmektedir.

Sprint’de her gรผn max 15 dk’lฤฑk stand-up meetingler yapฤฑlฤฑr. Bu stand-up meetinglerin max 15 dk ayakta olmasฤฑnฤฑn aslฤฑnda sebepleri vardฤฑr. Ayakta olduฤŸu iรงin kiลŸi kendisini รงok rahat hissetmez ve bรถylece de kฤฑsa sรผre iรงerisinde anlatmak istediklerini bitirmek ister. Max 15 dk denmesinin sebebi ise, belli bir ลŸeye belli bir noktadan fazla zaman ayฤฑrdฤฑฤŸฤฑmฤฑzda verimde artma deฤŸil baลŸlangฤฑรงta dรผzleลŸme ardฤฑndan da dรผลŸme baลŸlar. EฤŸer yarฤฑm sa konuลŸulacak denseydi de en az yarฤฑn sa konuลŸulurdu.  Her gรผn yapฤฑlan bu standup meetinglerde son 24 sa iรงerinde bu Sprint’den amacฤฑna ulaลŸmak iรงin ne yaptฤฑm. Bundan sonraki 24 sa iรงerisinde Sprint’in amacฤฑna ulaลŸmak iรงin ne yapabilirim. Beni engelleyen herhangi bir ลŸey var mฤฑ gibi konulardan oluลŸur.

Her bir Sprint’de 1 ya da 2 kere Backlog Refinement(Grooming) yapmak faydalฤฑdฤฑr. Backlog Refinement’lar PO, SM, DT ve gerekliyse uzmanlarฤฑn katฤฑlฤฑmฤฑyla saฤŸlanฤฑr. Herkes iรงin uygun bir zamanda yapฤฑlabilir. ร–zel bir zamanda yapฤฑlmasฤฑna gerek yoktur. 2 haftalฤฑk bir Sprint iรงin, 60, 90 dk’lฤฑk bir toplantฤฑ yeterlidir. Temel olarak PO’yu aydฤฑnlatmak iรงin yapฤฑlฤฑr. Bu toplantฤฑda bazฤฑ story’lerde deฤŸiลŸiklik bรถlรผnmeler gerรงekleลŸebilir. Yenileri eklenebilir.

Sprint Planning’le aรงฤฑlฤฑลŸฤฑ yaptฤฑk. Artฤฑkdan Daily Standup’lar ve Backlog Refinement’lar yaptฤฑk. Her bir Sprint’in sonunda ise Sprint Review (Actual Performance), Sprint Demo(Actual Software Features) ve Sprint Retrospective (Process Improvement)yapฤฑlmalฤฑdฤฑr.

Peki bir Sprint’de iลŸimizi tamamladฤฑฤŸฤฑmฤฑzฤฑ, amacฤฑmฤฑza ulaลŸtฤฑฤŸฤฑmฤฑzฤฑ nasฤฑl รถlรงeriz. Sprint’e ilk baลŸlarken yapฤฑlmasฤฑ gereken bir Definition of Done tanฤฑmฤฑ vardฤฑr. DoD’da yer alan metrikler ise,

  • Forecast vs. Accepted
  • Sprint iรงerisinde bulunan bug’lar
  • Outstanding buglar
  • Build’in baลŸarฤฑsฤฑz olma sayฤฑsฤฑ
  • Ekibin ivmesi
  • Burndown-Burnup chart’lar

Dev. tamamlandฤฑ, test tamamlandฤฑ, PO tarafฤฑndan kabul edildi. Release Planning’i ise yazฤฑmฤฑn baลŸฤฑnda anlanmฤฑลŸtฤฑm.

Umarฤฑm genel bir fikir sahibi olabilmenizi saฤŸlamฤฑลŸฤฑmdฤฑr. ฤฐyi hafta sonlarฤฑ ๐Ÿ™‚

 

2 responses to “Let’s Talk About Agile!”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.