Scrum etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Scrum etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

18 Ocak 2021 Pazartesi

Scrum - Senior Software Engineer

Giriş
Senior Software Engineer rolü Scrum' da tanımlı değil. 

Senior Software Engineer Nedir?
Senior Software Engineer belli bir konuda uzmanlık sahibi (area of expertise) olan yazılım geliştiricidir.
Aynı zamanda ekibe yardımcı olması beklenir. Açıklaması şöyle
I have never found the need for more than 3 levels of any job: Junior, Mid-level and Senior.

A junior needs help in their own job. A mid-level can do their own job quite well without help. A senior can do their own job well and help out the juniors.
Şeklen şöyle. Burada Kıdemli Yazılım Mühendisinin Kapsam ve Etki anlamında proje çapında iş yaptığı görülebilir.


Senior Software Engineer ve Software Architect (Yazılım Mimari) 
Açıklaması şöyle. Yazılım mimari şirketteki tüm projelere dahil olur.
Developers often feel they need to become an architect as the next step in their career (and their pay grade).However, becoming an architect and a superstar engineer are two different career paths, with neither being superior to the other. Architects tend to have a broader scope, including organizational and strategic aspects, whereas engineers tend to specialize and deliver running software. Mature IT organizations understand this and offer parallel career paths.
Senior Software Engineer ve Team Leader (Takım Lideri) 
Takım Lideri ve Senior Software Engineer farklı rollerdir. Yazılım Dünyasında Mentor (Akıl Hocası) Olmak yazısına bakabilirsiniz. Takım Lideri şirketine göre değişmekle birlikte bu kadar teknik olmak zorunda değildir diye de var. Açıklaması şöyle
A senior developer has an acknowledged area of expertise, mentors and coaches others on their team, understands the goals of the team, particularly in terms of outcomes or metrics, has an idea on how the team can deliver software more effectively, is a strong individual contributor and either talks publicly or is involved in the wider software community outside the organisation […]

We have non-senior software developers who are tech leads and the two things are not synonymous.
Veya bu iki rolü birbirine çok yakın tutan da var. Açıklaması şöyle
Our tech leads are 80% senior developers in their projects, and 20% responsible on advancing the technologies they work with. We will have tech leads per technology, for example: Android Lead.
Senior Software Engineer Takım Lideri Olursa
Açıklaması şöyle. Bazen Senior Software Engineer takım lideri veya başka bir idari role gelse de Takım Liderinin yaptığı işi yapamayabilir.
The biggest challenge you will face will be from senior devs who believe they want to move into management and leadership roles, but are in fact are unwilling to do the actual work of management. It is quite common, for folks to reach a certain level of experience and then to feel that they now must climb to the next rung on the ladder. Despite their experience, they may have a fairly weak understanding of the work of managers and leads. And when given opportunities, they might fail to put in the effort to grow in the ways that would be necessary for them to do those jobs effectively. In one sense, the situation is simple in that you know what to do: give them feedback, have expectations for performance, let them know that they can advance into these opportunities until they demonstrate the ability to perform to expectations.

20 Kasım 2020 Cuma

Scrum - Burndown Chart

Burndown Chart Ne İşe Yarar ?
Açıklaması şöyle. Yani kestirim ile gerçeğin farkını gösteriyor.
A burndown chart is useful not to forecast the completion date, but to show if your actual progress is happening as the progress you forecasted. You have an ideal line on the burndown, and an actual line that shows you if you are behind (above) or ahead (below) of what you ideally forecasted. Seeing that allows you to take action and correct your trajectory if you still want to deliver on the desired date.
İdeal Burndown Chart Eğrisi Nasıl Olmalı Deniliyor ?
Normalde beklentinin sprint sonunda aynı eğimdeki bir çizgiyi takip ederek y ekseninde 0 noktasına gelmek olduğu söyleniyor. 

Ancak günlük ilerlemenin böyle olmadığını düşünenler de var. Sebebi ise ekibin önce büyük işlere odaklanması ve bu işlerin vakit alması. Vakit harcanırken sanki Burndown Chart üzerinde ilerleme olmuyormuş gibi görünüyor. Açıklaması şöyle.
The ideal line is a fantasy. A typical Sprint contains stories of various sizes, some small, medium, and large tasks. The team will jump on the large tasks firsthand if anyone has the capacity, some of the medium tasks. The small tasks are saved for last.
Dolayısıyla bu tür çizelgeleri yanlış bulanlar şöyle diyor. Aslında ben de bu fikre katılıyorum :)
The ideal burndown chart is an indication that you're doing something of low added value.

It is not you, the theory is wrong.
Burndown Chart Çeşitleri
İki tip burndown chart kullanılabilir.  İlki sprint içindeki ilerlemeyi ikincisi ise proje içindeki ilerlemeyi gösterir.

Sprint İçindeki İlerleme Chart'ı
Sprint içindeki ilerlemeyi Excel ile tutmak ta mümkün. Aşağıdaki gibi bir tablo bile iş görür. Biten işler işaretlenir.
Resource | Code Review | Unit Test | Integration Test | Completion
Story 1
Story 2

12 Ekim 2020 Pazartesi

Scrum - Product Backlog (Ürün Biriktirme Listesi) - Bu Kod Seviyesinde Bir Backlog Değildir

Giriş
Scrum'da 3 tane önemli yapı/çıktı var. Bunlar şöyle.
- product backlog,
- sprint backlog,
- sprint goal.
Backlog kelimesi "Biriktirme Listesi" olarak tercüme ediliyor. Ben bu yazıda backlog kelimesini kullanmayı tercih ettim.

Backlog'dan Ne Zaman Bir Şey Silinir
Artık o iş yapılmamaya karar verince silinir. Açıklaması şöyle. İşin çok sonraya ötelenmesi backlog'dan silinmesine gerekçe değildir.
For me, the only reason to delete (close) an item in the backlog is because you decide it will never be implemented, not because it won't be implemented for a while
Product Backlog'un Sahibi Kimdir ve Kim Önceliklendirme Yapar
Backlog'a girecek,çıkacak şeylere ve önceliklendirmeye normalde Product Owner karar verir. Açıklaması şöyle. Yani Product Backlog, Product Owner tarafından yapılması istenen herşeyi içerir.
the Product Owner is the person who has full authority of determining what goes in and comes out of the product backlog. 
Açıklaması şöyle
The Product Owner is the sole person responsible for managing the Product Backlog. Product Backlog management includes:

- Clearly expressing Product Backlog items;
- Ordering the items in the Product Backlog to best achieve goals and missions;
- Optimizing the value of the work the Development Team performs;
- Ensuring that the Product Backlog is visible, transparent, and clear to all, and shows what the Scrum Team will work on next; and,
- Ensuring the Development Team understands items in the Product Backlog to the level needed.
PO'nun önceliklendirmesi bazı yerlerde uygulanmıyor. Açıklaması şöyle
Where I have worked previously, the PO owned the backlog, and the Product Manager would prioritize the backlog. 

Backlog User Story Şeklinde Olmalı
Açıklaması şöyle.
The product backlog includes features to be built, enhancements, fixes, quality attributes, etc. in the form of user stories.
Backlog Hazırlığı
Backlog geliştirme ekibinden önce gitmeli. Açıklaması şöyle.
Preparing the backlog well ahead of the next sprint(s) is a must.  You never want the team to run out of work to do, and that work must be of highest value at that point in time as prioritized by the Product Owner.  Being a Product Owner can be time-consuming.
Backlog'u Sırayla İşlemek - Pipeline
Backlog bir pipeline haline dönüştürülebilir. Buradaki soruda önce ekranların bitirilip sonra arkalarının doldurulması anlatılmış. 

Sıralama
Backlog sıralı bir şekilde tutulur. Açıklaması şöyle. Sıralama (ordering) ve önceliklendirme (prioritizing ) farklı şeyler
The Scrum Guide does not talk about prioritizing the Product Backlog. Instead, it talks about ordering the Product Backlog. Priority is only one factor that can be used to determine the ordering of the Product Backlog. Dependencies between work items is another factor, but the Product Owner can choose any factors that are appropriate to help maximize the delivery of value.
Sıralamada dikkat edilmesi gereken noktalar şöyle. Yani en fazla fayda getirecek maddeleri önce alıp en fazla verimi almaya çalışmak.
- Ordering the items in the Product Backlog to best achieve goals and missions;
- Optimizing the value of the work the Development Team performs;
Sıralama Ölçütünde Dikkate Alınabilecek Şeyler 

1. Yazılım Hataları
Eğer yazılımda bir hata varsa sıralamanın belirlenmesinde gravity ve frequency katsayıları kullanılabilir. Açıklaması şöyle.
Generally you have two axes for bugs: gravity and frequency.

So obviously something grave and frequent is of the highest priority. However, something that's serious but happens rarely should be weighed roughly at the same as something that's not serious but happens often. So supposing you rate gravity from 1 to 3 and frequency from 1 to 3, the types of bugs you should probably be fixing are those which cross the diagonal defined by gravity 1, frequency 3, and gravity 3, frequency 1.
2. Müşteri Tarafından Raporlanan Hatalar
Soru şöyle
When a user reports a bug should it go directly to the programmer or should it go to qa first and must be reproduced by qa before going to the programmer?
Cevap şirketine göre değişir. Eğer Product Owner üzerinden gidilecekse, açıklaması şöyle.
It depends on your policy if you have one. It could go either way.

It could also be that it goes to the PO and they should approve it before continuing with the fix or putting it in the backlog.
3. Uzmanlık Alanı
Burada ekipteki uzmanlık alanı gerektiren şeyleri yapabilecek insan sayısına dikkat etmek gerekir. Eğer sırası gelen işi yapabilecek insan müsait değilse çözüm olarak şu iki şeyden birisi yapılabilir. Açıklaması şöyle. Ya herkesi uzman yapmak gerekir. Ya da backlog'daki bir sonraki işi sprint'e almak gerekir.
This is where the Development Team and Product Owner need to come to some level of understanding and agreement on how to proceed.
- One option is to do what the Development Team is doing now - everyone focuses on their particular strength if they have the capacity, even if the work they take is not the next most important.

- The other option is to work on developing the skills of the Development Team members so that everyone is more capable of taking on any piece of work.

27 Temmuz 2020 Pazartesi

Scrum

Scrum'ı Terk Etmek
2021 yılına doğru Scrum'u kötüleyen yazılar çoğalmaya başladı. Zamanı gelince de Scrum şöyle kötü böyle işe yaramaz diye daha fazla yazı göreceğiz. Abandoning Scrum okunabilir.

Scrum Sabit Fiyat ve Takvim Projeler için Kullanılır mı ?
Kullanılabilir. Kapsam (Scope), Takvim (Schedule) ve Bütçe (Budget) ayarlandıktan sonra kullanılmaması için bir sebep yok.

ABD'de ve Türkiye'de savunma projeleri sabit fiyat/takvim ve şelale modeline göre kurgulanırlar. Tüm projenin olmasa bile geliştirme aşamasının scrum tabanlı iterative user story'leri olarak gerçekleştirilmesi mümkün.

Burada dikkat edilmesi gereken nokta Scrum'ın, Half Arsed Agile şekline dönüşmesi.

Scrum ve XP Arasındaki Farklar
Scrum ve XP çevik süreçler. XP daha çok kodlamaya yönelik faaliyetleri ön plana çıkarıyor. Örneğin XP'de önce test (test first) çok önemli, ama Scrum kodla ile ilgili bir şey söylemiyor. Dolasıyla bazı projelerde XP ve Scrum birlikte kulanılabiliyor. Aslında XP refactoring'i öne çıkardığı için belki iyi bir şey yapıyor. Refactoring bize kodu tekrar yazabilme imkanı sunuyor. Aslında bir yazılımın 5 kere baştan yazıldıktan sonra hazır olduğuna dair bir yazı var. Yazı şöyle
However, software development doesn't obey by the normal laws of nature. For instance, every time you re-engineer your software from scratch, you're destined to implement it 10x better, 10x faster, and 10x more stable - At least up to some "n number of rewrites". Hence, my proposition, is to create the same software 5 times, before you're happy with your end result, and willing to label it as "production ready". In fact, if you haven't created the same software at least 5 times, I'd argue it's probably garbage anyways.
Destekleyici bir deney şöyle
One study once asked random strangers on the street to create ceramics pottery. 50% of the people were told to spend 8 hours creating one single cup and try to create it "perfect", while the rest of the group were told to create as many cups as they could. Afterwards they had professional ceramics teachers evaluate the results, and paradoxically, the best quality was consistently found amongst those who had been told to create many cups.
Scrum ve İletişim
Scrum iletişimi defalarca vurguluyor. Çoğu başarısızlığın altında iletişim problemi de bulunuyor. Bir açıklama şöyle. Burada bireyler ve iletişim vurgulanıyor.
From the four values:
...
Individuals and interactions over processes and tools
 Bir açıklama şöyle. Burada yine iletişim ama yüz yüze iletişim vurgulanıyor. Uzaktan çalışma ortamında bunu direkt yüz yüze değil de video konferans şekilde anlamak lazım.
From the 12 principles:
...
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Scrum Başarısızlıkları
Scrum Başarısızlıkları yazısına taşıdım.

Scrum ve Critical Path
Şelale projelerde "critical path" - yani mutlaka bitmesi gereken birbirine bağımlı en uzun işlevler zinciri - önceden belirlenir. Bu öncelikli işlerin bitmesi için tedbirler alınır. Scrum'da critical path kavramı yok.

Scrumdaki Roller
Roller yazısına taşıdım.

Sprint ve Mimari
İlk sprint'lerde mimariyi oturtmaya çalışmak gerekir. Sadece eldeki story'e odaklanılırsa genel işleyiş, kural ve kararlar gözden kaçabilir. Yukarıda da yazdığım gibi bir yazılım mimarının bulunmaması Scrum'ın zayıflıklarından birisi, ancak ilk sprint'lerde bir mimarı çalışması yapmak ta zaten hemen her yazılım projesinde olan bir şey.

Sprint Planlama Toplantısı
Sprint Planlama Toplantısı yazısına taşıdım.

Günlük Toplantılar
Günlük Toplantılar yazısına taşıdım.

Retrospektif Toplantısı
Retrospektif Toplantısı yazısına taşıdım.

Backlog
Product Owner yazısına taşıdım.

Burndown Chart
Burndown Chart yazısına taşıdım.

Velocity
Hızın sabit tutulması için gerekli şeylerden birisi de kodun sürekli refactoring'e yani yeniden düzenlemeye tabi tutulmasıdır. Scrum refactoring'den açıkça bahsetmez. Bu konuyla daha çok Extreme Programming ilgileniyor. Ancak refactoring technical debt'in yani teknik borcun temizlenmesi için gereklidir. Temizlik ise proje ilerledikçe hızın düşmemesini sağlar.

Velocity Bir Müddet Sora Kendi Kendine Ayarlanır
Açıklaması şöyle.
A team brings 30 story points in to a sprint but only completes 25 story points
The rolling average of velocity for the team is reduced from 30 to 27
The team brings 27 story points in to the next sprint and manages to complete 24 story points
The velocity again falls, down to 25

Sprint Süresi
2,4,6 haftalık sprintler olabilir. Sprint süresi değiştirilebilir ve ekip tarafından belirlenir. Açıklaması şöyle
The Scrum team decides the length of the Sprint (dev team + PO + SM). They do the actual work, so they choose the duration of the time-box they feel more comfortable with in order to produce a product increment.

With that being said, there are of course all sorts of other things happening in the company that may influence what decision the Scrum team makes. You mention some of them in your question. If that happens, the team can always change the sprint duration. You don't need to keep the same length all throughout the project. You start with whatever works for you, then inspect and adapt.
Sprint tarihleri mutlaka görünür bir yerde olmalıdır. Tatilleri de dikkate almalıdır.
Sprint 14: November 18th—December 2nd (10 days)
Sprint 15: December 2nd—December 18th (11 days; december 4th: attending the conference in NYC)
Sprint süresi uzadıkça geribesleme döngüsü de uzar. Sprint içindeki geliştirme saati aşağıdaki gibi hesaplanabilir.
DevHoursAvailable = ((HoursInDay * DaysInSprint) - CeremonyOverhead) * AvailabilityFactor * NumberOfDevs
1,2,3 haftalık sprintlerde geliştirme için ne kadar saat ayrılabildiği görülüyor. CeremonyOverhead haftada 4 saat alıyor diye düşünülmüş. Örneğin sadece günlük toplantılar haftada 1-2 saat alır.
1 week: ((8 * 5) - 4) *.8 = 28.8 hours or 5.76 hours per day.
2 weeks: ((8 * 10) - 4) *.8 = 60.8 hours or 6.08 hours per day.
3 weeks: ((8 * 15) - 4) *.8 = 92.8 hours or 6.18 hours per day.
Bazı uygulamalarda 4 sprint'ten sonra 1 hafta dinlenme ve hazırlanma amacıyla boşluk bırakılıyor.

Story
Story yazısına taşıdım.

Story Point
Story Point yazısına taşıdım.

Sprint İçinde Herkesi Meşgul Tutma
İdeal bir ortamda herkesin iş yükünün eşit olması beklenir. Böylece işini erken bitiren, ne boşta kalır ne de ben ne yapacağım diye soru sorar. Ancak gerçek hayat böyle değil. Bu yüzden işini erken bitirenlerin ne yapması gerektiğine dair sorular var. Fikirler birbiri ile çelişebiliyor. Ben de hepsini listemenin daha iyi olacağını düşündüm.

  • Mesai saati dışında backlog'dan önem sırasına bakmaksızın iş çekip bitiren birisi hakkında fikirler belirtilmiş. Genel eğilim bırak yapsın yönünde.
  • İşini erken bitiren birisinin backlog'dan bir iş yapmasına itiraz edenler de var
  • Boşta kalanlar bir sonraki sprint için araştırma yapabilirler diyenler de var. 
Bakım ve Hata Temizleme
Projeleri hayata geçtikten sonra bakım ve hata temizleme süreci başlar. Scrum sadece geliştirme aşamasında değil, bu aşamada da kullanılabilir. Kullanılan yöntem geliştirme süreciyle aynı. Bu sefer bug backlog oluşturuluyor Product Owner hataları önemine  göre sıralar. Kimin hangi hatayı çözmesi gerektiğine yine ekip kendi içinde karar veriyor.

Eğer geliştirme aşamasında hatalar gelmeye başlarsa, hatalar da story formatına dönüştükten sonra bir sonraki sprint'e dahil edilirler.
"If at a later date QA (or worse yet a customer) finds a bug, the report goes into a bug tracking database and also becomes a story which should be prioritized just like all other work."





16 Temmuz 2020 Perşembe

Scrum - Retrospektif Toplantısı (Sprint Sonunda Yapılır)

Giriş
Her sprint sonunda geriye yönelik işlerin gözden geçirildiği bir toplantı yapılabilir. Buna eskiden "Lessons Learnt" denilirdi. Açıklaması şöyle.
The sprint retrospective is at the heart of Scrum. This is where the entire team comes together and looks at what worked and didn’t work in sprints, projects, people, tools, and even these very events and ceremonies that makeup Scrum. This is the time for the team to focus on what needs to be improved, changed, thrown out, and kept.
Bu toplantı bir sonraki Sprint Planlama Toplantısından önce gerçekleştirilir.

Bu toplantıda İyi yapılan, İyileştirilmesi Gereken konular görüşülür deniliyor. İyileştirilmesi gereken şeylerde amaç yıkıcı eleştiri değil. Açıklaması şöyle.
Instead of writing down "what didn't go well", they were reminded that no process is perfect and to write down "what they would do differently the next time". This simple re-wording of the phrases is powerful.
Blameless Retrospective
Yapılan hatalarda kişilerin isimleri verilmeyebilir. Buna blameless restrospective deniliyor. Bir örnek şöyle
Why don't you just acknowledge that you found the problem and fixed it? Why do you need to name names?
..
Naming Bob is not going to make the mistake any less concerning ...
Bir başka açıklama şöyle.
One of the most important elements of a retrospective, and of SRE as a whole, is the notion of blamelessness. To learn from retrospectives, there needs to be total transparency. Opening up about mistakes can often be frightening, and requires a psychologically safe space to do so. Positive intent should always be assumed in order to foster the trust that allows for true openness. Blaming team members or defining people as the root cause for failure will only lead to more insecurity, covering up the important truths that retrospectives are meant to uncover.
Eğer parmak gösterme durumu ortaya çıkarsa, insanlar hatalarını gizlemek için gayret sarfetmeye başlarlar. Açıklaması şöyle.
The moment people realize that there is blame being handed out they will obfuscate and hide their mistakes as best they can, scapegoating others and generally making it impossible to learn anything useful.

A much better idea is to do a no-blame post-mortem of the project. The goal is to go over the entire project from start to finish, examining at each stage what worked well and what went wrong. At no point should any blame be assigned to any member of the team. Instead the focus should be on identifying failures and putting procedures in place to make sure they don't happen again.

To err is human which is why we have checks and procedures in place. Therefore if a mistake goes uncorrected or unnoticed it is a problem with the procedures, not the individual (except in extreme circumstances such as gross negligence or misconduct).

In fact having a no-blame culture is a great way to prevent these things happening in the first place because people will feel able to come forward with issues when they happen, not long after they have caused a huge problem.
Hazırlık
Scrum için olmayan ancak ilgili olduğu için alıntıladığım bir başka açıklama şöyle.
To craft great retrospectives, there are four other best practices that will ensure your incidents are being used to their full advantage:

1. Use visuals in your retrospectives: As Steve McGhee says, “A ‘what happened’ narrative with graphs is the best textbook-let for teaching other engineers how to get better at progressing through future incidents.” Graphs provide an engineer with a quickly readable yet in-depth explanation for what was happening during the incident days, weeks, or even years later.

2. Be a historian: Timelines can be invaluable for parsing through a particularly dense incident. Chat logs can be cluttered, and it’s difficult to quickly find what you’re looking for. Thus, it’s important to have a centralized timeline that gives a clean, clear summary of the events. This also provides the context that helps relevant team members analyze what happened.

3. Tell a story: An incident is a story. To tell a story well, many components must work together.

  - Without sufficient background knowledge, this story loses depth and context.

  - Without a timeline dictating what happened during an incident, the story loses its plot.

  - Without a plan to rectify outstanding action items, the story loses a resolution.

4. Publish promptly: Promptness has two main benefits: first, it allows the authors of the retrospective to report on the incident with a clear mind, and second, it soothes affected customers. Best-in-class companies like Google, Uber, and others have internal SLOs around publishing their retrospectives within 48 hours.
Günlük Toplantılar İle Farkı
Bu toplantıdaki biraz daha resmidir. Açıklaması şöyle.
Retrospective is more formal because not everyone is comfortable raising issues during the sprint, some people need a dedicated time for this. Also some problems are deep and complicated and require a long discussion.

Spring Review is about demonstrating the progress, more like a demo. Its purpose is to inspect the Increment and adapt the Product Backlog if needed. So Retro is about the team and process, Review is about Backlog and product.
İyileştirilmesi Gereken Genel Konular
Örneğin yazılımdaki hatalar kimseyi suçlamadan konuşulabilir.
Spend some time examining and classifying the types of bugs they fix to understand patterns behind how they happen.
İyileştirilmesi Gereken Süreçle İlgili Konular
Bazen iyileştirilmesi gereken şey yazılım değil de süreç olabiliyor. Bazı süreç maddeleri şöyle olabilir.
- Updates to the Definition of Done.
- Changes to the way Sprint Backlog Items are handled.
- Modifications of the team's information radiators (e.g. Kanban board or story cards).
- Other adaptations to the Scrum Team's processes, artifacts, and events.
Bu tür kararları hemen uygulamakta fayda var. Açıklaması şöyle
As a practical matter, items from a Sprint Retrospective tend to fall into a few broad categories. Process changes should be implemented as soon as possible through the appropriate team process or artifact. 
Definition of Done Tanımını Değiştirme
Açıklaması şöyle. Mevcut standartlarla çelişmemesine dikkat etmek gerekir.
During each Sprint Retrospective, the Scrum Team plans ways to increase product quality by improving work processes or adapting the definition of "Done", if appropriate and not in conflict with product or organizational standards.
Değişik Toplantı Tecrübelerim
- Toplantıya isteksiz katılan tuhaf bir ekiple çalışmıştım. İsteksizlik bence Scrum'ı öldürdü.

- Her şeyi olumlu gören bir başka ekiple de çalışmıştım. Bu insanlar çok yapmacık geliyor. İşler yetişmemiş ancak çok başarılıydık diyor. Bu durumda da bence Scrum girişimini öldürdü.

Bu Toplantı Mutlaka Yapılmalı
Açıklaması şöyle.
One of the twelve principles behind the Agile Manifesto is “At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly”.  Unfortunately the Sprint Retrospective is often treated like an add-on or a luxury, and performed only “if there’s time”.  The fact is, Agile is all about adjustments here and there, fine tuning and responding to change.  It’s really hard to adjust and fine tune if we don’t pause to find out where adjustments are needed.  The status quo is not Agile; continual improvement is.


13 Temmuz 2020 Pazartesi

Scrum - Board

Giriş
Board'un okuması kolay olmalı. Açıklaması şöyle. Kanban yazısına bakabilirsiniz
Transparency is one of three essential pillars of the empirical process. Without it, you will be blind. So regardless of whether you apply Scrum or Kanban, the Scrum Board or Kanban Board needs to be easy to see and update, as well as provides the same understanding for all stakeholders.
Genellikle şu sütunlar yeterli
Todo, Development, Review, Acceptance, Done
Örnek
Bazen sütunlar şöyle oluyor
New | Consultation | Working | Waiting | Test & Review | Done
Açıklaması şöyle
Consultation = We need Feedback from someone outside
Waiting = Waiting for someone or something
Örnek
Bazıları biraz daha detaylandırıyor. Şöyle yapıyorlar
Open
Development
Ready for QA
QA
Ready for UAT
UAT
Done
Kanban'daki sütunlar da benzer. Open, In Progress, Development Done Scrum sütunları ile aynı gibi. Açıklaması şöyle.
We have a board with tasks in columns. A developer picks a task in "OPEN" and starts working on it. As he does that he moves the task to "IN PROGRESS". When he is finished the task goes to "DEVELOPMENT DONE" (later into testing). But if something goes wrong the task should be moved into "FEEDBACK" where something needs to be resolved. Maybe design is missing or some description is unclear...

İçe Dönük Kişilik - Introvert
Board'un içe dönük kişiliklerde faydalı olduğu söyleniyor. Açıklaması şöyle.
Because Agile makes it possible for teams to rely on visual communication and tracking more than on in-person data presentation and direct engagement in face-to-face communication, all team members can easily stay informed and engaged in the work, no matter each individual's comfort level with in-person interaction.

11 Haziran 2020 Perşembe

Scrum - Sprint Planlama Toplantısı

Giriş
Iteration Planning Meeting olarak ta bilinir. Bu toplantı bir önceki Scrum - Retrospektif Toplantısından sonra gerçekleştirilir.

Kanban vs Scrum
Açıklaması şöyle. Kanban'da iki haftalık sprint mantığı yok. Kanban yazısına bakabilirsiniz
... in Kanban, there are no definite iterations or sprints, just a continuous flow where work items are pulled from one stage to the later. Kanban board is never reset. Many of the Scrum events were not employed. Kanban teams usually have daily stand-up meetings but they are not prescribed. There are no routinely planned sprint planning meetings, sprint demos, or sprint retrospectives, so the process is more lightweight. Some of the exercises in those rituals may or may not be performed at an informal level.

Scrum is a more discipline, prescribed approach to deal with complexity and uncertainty.
Bu Toplantılarda Slogan Kullanmak
Bazen bu toplantılarda slogan/mantra benzeri cümleler kullanılabiliyor. Örneğin şunlar sıkça kullanılır.
Just do it!
Think different!"
Bu tür cümlelerin sıkça tekrarlanmasının bir faydası yok. Ne yapılacağının plan şeklinde ortaya konulması lazım. Açıklaması şöyle.
These types of slogans and mantras typically represent an ideal or an attitude, not a plan. Many have been so overused they're essentially meaningless. "Just do it?" You're all presumably in a meeting to "do it". Figuring out what to do and how to do it is presumably the reason you're even in (virtual) meeting to begin with. "Think different?" If you were going to do what you've always done you wouldn't be discussing anything.

The point is not to challenge the slogan or statement, but to ask them how it applies to the topic you're discussing.
Toplantıda Anlaşmazlık Olması
Normalde beklenen "self organizing" ekiplerin kendi kendilerine çözüm bulması. Ancak durum böyle değilse bir uzlaştırıcı/uzman bulmak gerekebilir. Açıklaması şöyle
If the team is truly self-organizing, then the members would recognize that they have an issue that needs outside assistance and would, among themselves, find a way to resolve it. One option would be seeking someone else, either inside or outside the organization, who is a subject matter expert who can provide an expert decision. Another option would be to find someone who can moderate a discussion and facilitate a decision-making process. The team would be able to find these and other options and then select a method of resolution.
Toplantı Girdisi
Açıklaması şöyle.
The input to this meeting is the Product Backlog, the latest product Increment, projected capacity of the Development Team during the Sprint, and past performance of the Development Team.
Sprint'in Hedefi Olmalıdır
Açıklaması şöyle. Artık commitment kelimesi yerine forecast kelimesi kullanılıyor.
In 2011, the language used in the Scrum Guide to describe a Sprint Backlog was significantly revised. Up until that point, the work selected by a team for actioning in a Sprint was referred to as a commitment. From then onwards, it would be acknowledged instead as being a forecast. That is still the language used in the Guide today, even though subsequent versions have codified "commitment" to be a Scrum value, and teams are expected to engage in commitment-based planning.
Commit kelimesi kullanılınca yönetim fazla mesaiye zorlama imkanı buluyor deniliyor. Açıklaması şöyle.
The situation that you describe, where management requires that the team works overtime to complete all planned stories, is one of the reasons why the Scrum literature has stopped using the term "commitment." A true commitment can only be given when all uncertainty is taken out, including uncertainty about 3rd-party dependencies, how much work each item is, how much time everyone will be available taking sickness into account, etc.
Her Spring'in bir hedefi olmalı. Eğer tüm story'ler bitmese bile hedefe ulaşılıyorsa yine de kabul edilebilir. Açıklaması şöyle.
"Always remember that the goal of a Sprint isn't to complete lots of backlog items. The goal of a Sprint is to deliver the Sprint Goal."
Sprint Planlama Toplantısı Süresi
Sprint öncesinde yapılan planlama toplantıları günlük toplantılara göre daha uzun olurlar. Tasarımın detayları bu toplantılarda konuşulur ve ortaya çıkar.

Story Sırası
Planlama toplantısında gelecek sprint'e dahil edilecek story'ler arasında bağımlılık olmamasına dikkat etmek gerekir. Eğer B, A'ya bağımlı ise B işine A'dan önce başlamak, işin yapılamamasına sebep olur.

Definition of Ready
Ayrıca Story'nin Definition of Ready kriterine uygun olması da gerekir. Eğer story içinde çok fazla belirsizlik varsa zaten efor tahmininde hata yapılır. Şu yöntem doğru değildir.
During sprint planning I had to take a wild guess as to how long this undefined user story would take.
Sprint'i Doldurmak
Teoride tüm Sprint süresini doldurmaya çalışmak gerekir. Açıklaması şöyle. Ancak bence bir miktar öngörülemeyen işler için ihtiyat boşluğu bırakmakta fayda var.
Every Scrum team would have an Iteration Planning Meeting wherein they would zero down the scope for the Sprint
1. Test İşine Yeterli Zaman Bırakmak
Özellikle test işlerine yeterli zaman bırakmaya dikkat etmek gerek. Bazı projelerde ayrı bir QA yani test ekibi var. Tüm sprint 'in bitmesine çok az bir zaman kala QA ekibine test edilecek ürünü vermek probleme sebep olur. Sorunun açıklaması şöyle
We have an issue in our Scrum Agile process, where all the developers get backlog item work done in the last few days of the sprint.

And then QA is forced to test everything at end of sprint. 
2. Bug Fix
Bu Fix için kullanılabilecek yöntemler şöyle. Herkese bir miktar boşluk verilebilir, bu işe bir kişi atanabilir vs.
If part of that work consists of fixing urgent bugs from production or handling requests from other teams, then the team needs to find a way to organize around that, how exactly depends on the context:

- they might introduce some slack into the process to handle these things (some time percentage of the sprint, or taking in less stories into the sprint);
- they might have a dedicated person (or team) handling these things (by rotation each sprint, for example) so that the rest of the Scrum team can focus on the Sprint goals;
- they might decrease the sprint length and then focus only on the sprint knowing that next sprint they can work on just those types of tasks (might apply to other requests, not when the production environment is in trouble);
- if things seem more like "operational" in nature and not "development", the team can even decide to give up on sprints and just do something like Kanban with some selected cadence for other practices you want to keep, like review and retrospective.
Belki en kolayı planlamaya bir önceki sürümde çıkan hataları düzeltmek için gerekli eforu da ilave etmek.

3. Sürekli Tekrar Eden İşler
Her sprint'te sürekli tekrar eden işleri sprint'e almak veya almamak arasında tercih yapılabilir.

9 Haziran 2020 Salı

Scrum - Roller

1. Geleneksel Roller
Roller diğer süreçlerdeki roller ile karıştırılıyor. Geleneksel rollerden bir çoğu Scrum da mevcut değil. Ancak bu roller eğer ihtiyaç duyulursa projeye dahil edilebilir. 

Açıklaması şöyle
Within a Scrum Team, there are no sub-teams or hierarchies. It is a cohesive unit of professionals focused on one objective at a time, the Product Goal.

1. Project Manager (Proje Müdürü)
Scrum'da mali kontrol ile ilgilenen bir Project Manager tanımı yapılmamış.

2. Software Architect (Yazılım Mimarı)
Yazılım Mimarı yazısına taşıdım.

Team Lead - Takım Lideri
Bir çok şirkette geliştirme takımını yöneten bir kişi bulunur. Scrum'da ise ne yapılacağına takımın kendisi karar verir. Takım lideri rolü bulunmazTakım Lideri yazısına bakabilirsiniz.

QA - Kalite Kontrol
Scrum'da QA tanımı yapılmamış. QA süreç ve ürünü denetleyerek hatalara engel olan kişi anlamında kullanılıyor. Scrum Master ekiple beraber süreci yöneten ve iyileştiren kişi. Dolayısıyla QA rolünü başta Scrum Master olmak üzere herkesin oynaması gerekiyor.

3. Tester - Testçi
Scrum'da QA veya testçi tanımı da yok. Ancak bence olması lazım. Zaten bir çok şirkette bu bölüm başka süreçlerin zorlamasıyla var oluyor. Açıklaması şöyle
Frequently this happens when 'QA' is a mandated department as part of regulatory compliance.
Geliştirme ekibi aynı sprint içinde geliştirme ve testi yapsa bile sadece test amaçlı başka gözün bakması iyi oluyor. Test ekibi aynı bir pipeline gibi geliştirme ekibini bir sprint geriden takip edebilir.

2. Tanımlı Roller
Sadece 3 rol tanımlı
1. Scrum Master
2. Product Owner
3. Developer

Scrum'daki tanımlı rollere günümüzde gereğinden fazla önem veriliyor. Açıklaması şöyle.
Just look at the number of people showcasing their Scrum Master, Product Owner, or coaching certificate on LinkedIn. Most companies are eager to send people to classes for Scrum Masters and Product Owners, but they're not willing to pay for professional development for developers. Or they fail to see how important the quality, tools, and skills of developers are.
İyi bir yazılım ekibi aslında bu rollere gerek duymadan da işleyebilir. Açıklaması şöyle.
I'd wager that a good Development Team  --  one that cares about their users and delivers high-quality software frequently  --  can compensate for a mediocre Scrum Master and Product Owner. But I doubt the reverse is true.
2.1 Product Owner
Product Owner yazısına taşıdım.

2.2 Scrum Master
Scrum Master yazısına taşıdım.

2.3 Development Team Member
Her birey veya ekipten bir kişi Software Architect rolünü oynayabilir. Çoğunlukla tasarımı da işi yapan kişinin gerçekleştirmesi gerekiyor. Açıklaması şöyle.
If you are assigned a task that has no design done for you then doing the design is part of your task.

This is not unusual. Design may have been done at some level but now the task needs it's own design.
Geliştirme ekindeki herkesin full stack developer olmasını beklemek bence makul değil. Ancak yazılımcılar arasında iyi bir etkileşim olmalı. Açıklaması şöyle.
Ideally, every member of the development team in Scrum could be a full stack developer but if in reality you have developers and testers then that's no problem at all. I've worked with such teams where developers wrote code and testers were testing it, and in some teams it worked and in others it didn't. What was the difference?

In the teams that worked well together, people collaborated. They worked together to move each story through the sprint to "Done". Developers finished their work and did a handover to testers. They explained what was going on, how the thing worked, where to look for things in the database, how to create test data, etc. Developers and testers had a good understanding of what needed built after interactions with the Product Owner. Testers worked closely with developers to prepare their test scenarios before they received a handover of the development. If someone needed help from someone else they got it. They owned all of the work, even though they were taking care of different stages of the work (design, development, testing, etc).



29 Mayıs 2020 Cuma

Scrum - Günlük Toplantılar (Daily Standup)

Giriş
Şeklen şöyle

Aslında bu toplantının yapısı ekip tarafından belirlenir. Açıklaması şöyle
The structure of the meeting is set by the Development Team and can be conducted in different ways if it focuses on progress toward the Sprint Goal. Some Development Teams will use questions, some will be more discussion based.
Ancak genellikle şu hale geliyor. Günlük toplantıların amacı şu 3 maddedir.
1. Dün ne yaptım
2. Bugün ne yapacağım
3. Beni engelleyen bir şey var mı
İngilizcesi şöyle
1. What have I done yesterday?
2. What will I do today?
3. What are my impediments?
Bu konular scrum board'daki her madde üzerinden giderek konuşulabilir veya genel olabilir.

Neden 15 Dakika?
Jeff Sutherland'in kendi cümleleri şöyle
[...] the meeting couldn’t last more than fifteen minutes. We wanted it to be crisp, direct, and to the point. If something required further discussion, we noted it and met further after the daily meeting. The idea was to get the most actionable and valuable information in the least amount of time.
Bugün Ne Yapacağım
Bugün ne yapacağımın amacı yeni şeyleri paylaşmak  olabilir. Yeni şey bir problem, bir fikir olabilir.

Günlük toplantıda aynı zamanda Scrum Board'da açılır.

Mikro Yönetim (Micromanagement)
Günlük toplantılar mikro yönetime dönerse sonuç berbat olabilir. Açıklaması şöyle.
Which micro-managers wouldn’t want everyone to give a status report at 9:00 am every day? Who wouldn’t want to see all work broken down to pieces for which NAMED individuals could be held accountable? And why wouldn’t they want to make a shocked face and send a very clear “that is not acceptable” message every time an estimate was high?

Visibility becomes a tool of blame.
Ayrıca zor problemlerde uğraşılmaması da sanki hiç ilerleme olmuyormuş gibi görünmesi de olabilir. Açıklaması şöyle
Scrum is a way to take a below average or poor developer and turn them into an average developer. It's also great at taking great developers and turning them into average developers.

Everyone just wants to take something easy off the board that you can get done in a day so you have something to report in tomorrow's daily scrum. It's just everyone trying to pick the low hanging fruit. There's no incentive to be smart and to take time to think about solutions, if nothing is moving across what are you even doing? You're letting the team down! The velocity is falling!

I think if you have hard problems to solve you solve them by giving them to smart people then leaving them alone. You don't constantly harass them every day demanding to know what they did yesterday and what they plan to do today. With daily updates where is the incentive for the smart people to work on the hard problems? They now have the same incentive as the junior developer; find the easiest tickets to move across the board.

Sometimes I will want to just be alone and think about a solution for a few days. If I do that though I'd have nothing to say at the scrum. So instead I'll pick the user story where the colour on a front end was the wrong shade of green or a spelling mistake! See, I knocked out 2 stories in one day, before lunch! Go me!

Product Owner
Product Owner'ın günlük toplantılara katılması şart değildir. Geliştirme ekibini bölmeyecek şekilde daha sonra girdi sağlamak üzere gözlemci olarak katılabilir.

Toplantı Süresi
Toplantıların kesinlikle uzamaması gerekir. Scrum Master uzayan toplantılara müdahil olup kısa kesilmesini sağlamalıdır. İnsanların aklına takılan sorular toplantıdan sonraya bırakılmalı. Açıklaması şöyle
If more detailed discussions needs to happen, individual (or a group) team members should meet immediately after the Daily Scrum to discuss those issues in more depth. This will allow you to adapt or change the rest of the work in the Sprint.
Özellikle geleneksel rollerin devam ettiği ekiplerde, proje müdürü günlük toplantıyı, "rapor alma", "sorgulama" toplantılarına çevirebiliyor.

Bireysel yapılan projelerde günlük toplantılar pek faydalı değildir.

Scrum'u Faydasız Yapan Şeyler
Bazı maddeler şöyle. Sanırım beni de en çok sıkan şey anlatılan şey ile benim yaptığım işin hiç bir bağlantısının olmaması
- The information being shared never pertains or affects me in any way.
- Absence of team ownership and everyone always working on their own projects.
- Absence of team communication outside the standup.
- Lack of visible or communicated progress.
- Absence of information to share.
Scrum'ın İşe Yaradığının Göstergesi
Günlük toplantılardan sonra insanlar çıkışta akıllarına takılan konuları görüşmek için bir araya geliyorlarsa Scrum işe yaramış demektir.

Ortak Kararlar
Ortak karar alabilmek için insanları ikna etmek gerekir. İkna edebilmek için ise saygılarını kazanmak gerekir. Açıklaması şöyle.
...but the heart and soul of the problem is your subjective opinions about what is best have to be seen as relevant. For that you have to earn and maintain their respect. Do that and this is much easier. Fail to do that and no tool or practice will save you.
İnsanlara bu işi böyle yapıyoruz çünkü dokümantasyonda böyle böyle yazıyor tutumu pek faydalı değil. Açıklaması şöyle.
The best way to do that is communicate early. Don't tell me "we don't use strings for our DB types in this shop" 6 months after I settled on the idea. Telling me it's been buried in the documentation for 2 years is no justification for letting me do that.
Onun yerine kötü örnekleri vermek daha iyi olabilir. Açıklaması şöyle.
Reduce the things you care about to their underlying principles. Rather then hit me with a list of 101 rules to follow give me the 10 principles that they all violate so I can figure out what rule 102 should be on my own.

Empower me to impose my own vision by helping me see yours and we'll get along great.