Would you like to start with Scrum in your team?
These are few hints from my experience how to make this process smooth, iterative & incremental:
These are few hints from my experience how to make this process smooth, iterative & incremental:
- get commitment from the management & team
- define reason: why would you like to do Scrum? what problems it should solve for you?
- start with simple Kanban in one team: it is easier, you just need to manage 3 lists: backlog (todo), work in progress and done
- focus on right priorities of backlog - person who defines the priorities will be 'product owner'
- setup quick way how to track work in progress and indicate 'impediments' -> daily stand-up; max 15 minutes meeting every day - moderator of the meeting will be 'scrum master', he will be also responsible for solving the 'impediments'
- focus on dependencies between the tasks to avoid 'impediments'
- start to put 'discoveries' into the backlog to pre-analyze tasks; discoveries should be done by architect or analyst
- what is the business value of tasks in your backlog? start think about them as 'user stories'
- group big set of 'user stories' into 'epics' to track progress of the 'epics'
- try to have 'user story' doable in 1-5 days by 1 or more developers;
- think about: definition of ready? when I can put 'user story' into the backlog? do I need more input or analyze?
- think about: definition of done? when is 'user story' really done (done-done: code committed, junits green, CI green, code reviewed, QA smoke test OK...)
- start to do release candidate every 2-3 weeks, use period which is feasible for you
- try to estimate complexity of 'user stories' in advance every week; just assign a value (1,2,3,5,8,13, ... Fibonacci)
- count total complexity of 'user stories' for chosen period of time
- after few periods compute average and this will be your 'velocity'
- try to time-box your backlog - this will be your 'sprint'
- at each end of the 'sprint' you should be able to deliver a release with all QA work done
- estimate and prepare one 'sprint' in advance - do 'backlog grooming' regularly every week - challenge your 'velocity'
- start on-boarding of the other teams and focus on coordination
- apply 'Sprint' shield strongly
- do 'review meeting' at the end of each 'sprint'
- do 'retrospective meeting'; ask questions like: what went well?, what was a puzzle?, what we learned? what we need to improve/learn? - maintain list of improvements and plan them into the next 'sprints'
- do 'planning meeting': set priorities of pre-estimated backlog and prepare the 'sprint' according the 'velocity'; take into account vacations and day-offs - calculate 'team availability' in hours
- do 'tasking': break 'stories' into smaller tasks and estimate them
- maintain 'burn-down chart' for current 'sprint' according to the 'team availability' and sum of hours for all tasks - team should maintain 'remaining work' - escalate and take appropriate action if problem
- do 'backlog grooming' meeting every week: estimate, think about dependencies & readiness, plan, prepare options and 'what if' scenarios
- do 'scrum of scrums" - coordination meeting between the teams ('scrum masters and product owners')
- establish regular inter-team architecture group to work on common architecture & design stuff
- do weekly 'bug triage' meeting between testers & product management to define 'fix in sprint' for each particular bug and discuss necessity of hot-fix
- quarterly do 2-3 days workshop between product/project management & representatives of the teams to define high level 'epic' road-map for next 3 month; the road-map then will be an input for 'grooming & discovery' sessions where it will be break-down into stories and sub-tasks
- almost Scrum or not? ;-) - to reach this point you probably worked 12 month
- check if your problems from #2 were solved
- work on continues improvement
NOTES:
- all this will need to have / to build solid Software Factory
- if 'retrospective' is quick, just formal, people do not contribute -> lack of commitment
- if 'grooming' is very quick -> you probably doing 'scrum-fall'
- prefer 'fail fast' strategy
- problems are exposed very quickly in good Scrum implementation -> do not hide them - solve them
- do not forget that Agile development is good for Agile projects, if customer can deploy the release 1 or 2 times a year and they give you feedback in similar manner it will not be very Agile
- if team have to do more than 20% of maintenance you would probably end up with Scrum-Ban
- Scrum is not always 'agile' in sense that anytime customer can change anything
- 'Velocity' is parameter of the team not performance KPI
- Scrum is necessary combine with Extreme Programming to achieve best results
Comments
Post a Comment