Thursday, July 20, 2017

Agile - Çevik Süreçler Hakkında



Bu yazıda yazılım süreçlerinde kullanılan Agile(Çevik) süreçler hakkında çok genel bilgiler vermeye çalışacağım.


Yazılım ekipleri büyüyünce süreç yönetimi, ekip yönetimi daha kritik bir hal alıyor. Yazılım süreçlerini yönetmek için Agile, Scrum, Waterfall gibi bir takım yöntemler kullanılıyor.

Agile; felsefe olarak haftalık geliştirmelerle(sprintlerle), çalışan, test edilebilir ve kullanıcıların tüketebileceği çıktılar üretmeyi hedeflemektedir. Waterfall süreçlerinde proje baştan sona planlanır ve bu uzun süreçte o planlanan projenin tamamı tek seferde yapılır, ardından proje teslim edilir. Büyük çapta olan bu tür projeler hiçbir zaman hedeflenen sürede bitmemektedir. Agile süreçlerde ise, büyük iş parçaları önceliklere göre ufak parçalara ayrılır. Sonrasında bu ufak parçalardan çalışan bir çıktı üretilmeye çalışılır. Burada sabit olan zaman kavramıdır. Belirlenen zaman içerisinde ürün çıkarma felsefesini benimsemektedir. Waterfall süreçlerde ise, ürün ve proje sabittir. Zaman kavramı değişkenlik gösterebilmektedir. Çok uzun soluklu olan büyük pro Teknoloji dünyası ve ihtiyaçlar sürekli değişebileceği için Agile süreçlerin artıları firmalara ciddi katkı sağlamaktadır. Yapılan işin kalitesinde ve çıktıda ise eksiklikler olabilmektedir. İlerleyen süreçlerde bunların iyileştirmesi ise yapılabilmektedir.


Mesela yeni bir mobil uygulama yapacaksınız. Bu mobil uygulama içerisinde bir çok işi yapan farklı ekranlar ve işlevler olduğunu varsayalım. İlk aşamada Ürün yöneticisi olan kişi dökümantasyonu yaptıktan sonra ve bu işin analiz süreci tamamlandıktan sonra, konu yazılım ekibinin önüne gelmektedir.  Agile süreçlerde uygulamada yapılacak işler storyler olarak büyük parçalara ayrılır.

Örneğin; Youtube gibi bir mobil uygulama yapılacak olsa, login ekranları, video izleme ekranları, yorum bırakma ekranları, abonelik işlemleri, playlist oluşturma, trend videolar ekranı gibi büyük işler story olarak listelenebilir. Sonrasında yazılım ekibi ve yöneticisi bu işlevlerden hangisinin öncelikli olduğunu ürün yöneticisinin de olduğu bir çalışma ile belirlemelidirler. Bu aşamada storyleri oluşturma işlemi, product backlog oluşturma olarak da nitelendirilmektedir.

Öncelikli yapılacak uygulama adımları belirlendikten sonra, bu adımları daha ufak alt görevlere bölme işlemi yapılmalıdır. Örneğin video izleme ekranı için, video player yerleştirilmesi, video izleme sayıcı için gereken yapının kurulması, videonun paylaşım yapılma yapısının oluşturulması, yorum yazma yapısının kurulması vs gibi. Burada dikkat edilecek konu, yazılan  görevlerin yapılmasının 2-3 iş gününden daha uzun sürmemesidir. Eğer daha uzun süreceği düşünülüyorsa, bu görevler daha ufak alt görevlere bölünmelidir.




Görevler daha sonra bir tahtaya ya da Trello gibi bir araca eklendikten sonra, işi yapacak arkadaşların buradaki görevleri üzerlerine almaları beklenmektedir. Bu kurgu üzerinde Kanban tahtası veya trello kullanarak, yapılacaklar, yapılmakta olanlar, bitenler, test edilenler, yayınlananlar gibi sekmelerde görevler
dağıtılmalıdır. İlk aşamada yapılacaklar listesine işlenen görevler; yapılmakta olanlar, bitenler, test edilenler sekmelerine taşınarak  tamamlanmalıdır.

Bunun yanı sıra Burn down chart hakkında biraz bilgi vermek istiyorum. Bu grafik, projenin toplam planlanan süresi ve 2 haftalık sprintler ile hangi sürecin arkada kaldığı görülebilmemizi sağlamaktadır. Aşağıdaki grafik kafamızda konuyu daha da netleştirecektir.




Startup olarak nitelendirilen firmalarda, Agile süreçleri kullanmak daha tercih edilebilir bir durumdur. Hızlı bir şekilde, çalışan bir ürün çıkarmak, müşteriden geri bildirim almak, ona göre ürüne yön vermek, başarı için oldukça önemlidir. Kaynakların kısıtlı olması da bu tercihte öneml rol oynamaktadır. Ayrıca gerektiğinde pivot edebilmek(farklı bir ürüne yönelmek) Agile süreçlerin faydalarından biri olarak görülebilir.

Kaynak: Daug Rose - Agile at Work: Reporting with Agile Charts and Board



No comments: