Thursday, December 6, 2018

Agile - Understanding Scrum part -1(Introduction)


Introduction

Scrum is a framework for developing complex products and systems. It is grounded in empirical processs control theory. Scrum employs an iterative, incremental approach to optimize predictability and control risk. - Ken Schwaber

What is framework? - A framework is an incomplete structure which accommodates other practices, techniques and tools while providing an overarching process.
What is methodology - A complete set of prescribed and interrelated principles, tools and practices working together to achieve a particular goal.

Scrum is a framework. This is the reason that scrum can co-exist cleanly and even support other development methodologies and techniques. Extreme programming, KANBAN work really well using conjunction with Scrum.

Scrum is Empirical. Which means it doesn't have predefined steps, instead it works on feedback loop, continuously improvising the process. It is absolutely needed when we don't know the exact expected outcome at the time we being. This kind of feedback loop help us taking shorter steps, and improvise with feedback. It tell you fail, and fail fast, so that you can take corrective measures and move ahead.

Scrum is iterative - These are the steps followed in any product delivery - Plan -> Analysis -> Develop -> Test -> Integrate -> Validate -> Deploy. Scrum says, instead of doing these steps once , do it many times with smaller deployment and releases and reiterate it over and over again.

Scrum is for Complex work - Scrum is not meant for simple or even complicated work, it is meant for complex work. Here is the complexity illustrated by professor Ralph Stacy -























Scrum talks about Product, instead of Project - Software development should align with product, which is more usable software. instead of delivering a big project, focus should be to deliver smaller patches of product, which can be used by the consumers.

Scrum is Iterative and incremental agile software development framework for managing product development. It defines “flexible, holistic product development strategy where dev team works together as single unit to achieve common objective”.

In scrum instead of providing complete detailed description, it is left up to dev team to figure out. Scrum relies on self-organizing(no leader), cross functional team.

Overview – 

Scrum is agile process used for product development. It is project management framework to achieve aggressive deadlines and complex requirements. In scrum projects move forward by series of iterations called sprints. Sprint is generally 2-4 weeks length.

The scrum is not just about changing development approach, it is also about behavior changes. It talks about certain key values that everyone in the team should respect. These values are -
Respect - Always respect everyone in the team. Respect their decision and their point of view.
Trust - The trust is something earned over time, trust your team and build trust with them.
Commitment - Always be committed to you tasks, because if you fail, the entire team fails.
Focus - Be focus on your items.
Openness - Always share your progress, thoughts and decision with all, nothing to hide from anyone.

These value can be understood with following practices in scrum -
Because we value respect we will keep chit-chat outside of daily Scrum meeting.
Because we value trust we will only show done Features at Sprint Review.
Because we value commitment we will turn up on time.
Because we value focus we will not interrupt someone with headphones on unless absolutely necessary.
Because we value openness we will post these decisions on the wall for all to read.

One of the very important concept in Scrum is Time Boxing. Scrum clearly says that every event and activity has to be time boxed. Hence we have a concept of Sprint, which gives us a container to keep all the artifacts of Scrum together and in time boxed manner. 

Time Boxing -
Any event should have maximum duration (not minimum) in scrum. This means if a meeting is supposed to be an hour, than we have to wrap it up in an hour, no extension.  It actually provides us a container to self-organize our self and collaborate more in the meeting, which helps individual to focus more on priority items and eliminate distraction.

Sprint -
Sprint is a time boxed event of scrum. It is limited to 30 days or less. Limiting duration help us reduce the risk because we get to know the feasibility of any given task within that amount of time. Also it help helps developers to be more focused.
It is container of all other events of scrum. Product owner can cancel the sprint if he/she wants. Sprint is inviolable, which means non planned work will never be included in current sprint. If there are more high priority items come up, product owner can list it for next sprint.

Let's try to understand different items kept in sprint-
1) Roles – Product owner, scrum master, team
2) Ceremonies – sprint planning meeting, sprint review, sprint retrospective meeting, Daily Scrum meeting
3) Artifacts – product backlog, sprint backlog, burndown chart

Roles
Product owner – project key stackholder and represents users for whom we are building this product. Product owner has to have a deep knowledge of business requirement. 
Scrum Master – SM is responsible for making sure the team is as productive as possible. SM is responsible to building the scrum process in the team by removing impediments to progress, protecting team from outside distractions. 
Scrum team – Typical scrum team is of size 5-9. There is no team lead, designer, tester etc. instead the entire team work towards the common goal as a whole.

Ceremonies -
Sprint planning meeting – At start of each sprint a sprint planning meeting is held, during which the product owner presents top items on the product backlog to the team, the Scrum team selects what they can complete during the coming sprint. Then that selected work is moved from product backlog to sprint backlog. 
Sprint review meeting – At the end of each sprint, the team demonstrates what they accomplished during sprint in the review meeting. This is more of demo to the business owner to showcase the product at end of sprint. This should not be very long for dev team.
Sprint Retrospective -  This is the meeting where scrum master, product owner and team meets and find what’s working and what’s not. They discuss and come up with the new approaches if the process requires any improvement. 
Daily Scrum Meeting- Each day during sprint, the entire team meets (at start of day) and cover 3 areas – what I did achieve yesterday, what do I plan to achieve today and if there is anything blocking me. It is more of stand up so that the updates and discussion are not lengthy.

Artifacts
Product backlog – product backlog is prioritized list of features, or changes in features. 
Sprint backlog – sprint backlog is list of features/task that team wants to complete within that sprint. 
Burndown chart – The team tracks its progress against release on burn down chart. The chart is updated at end of each sprint by scrum master. 

Scrum Flow - 



No comments:

Post a Comment