Practical Agile
GOAL: Extending the team capabilities and enabling its growth.
To achieve this, we will cover:
- Waterfall approach - traditional software development
- Agile approach - conceptual highlights
- Practical Agile - implementation @Dofinity
- Supporting Tools - tools review, spotlight on Jira
- Open discussion - Q&A , actual state vs. desired state
Our aim is to trigger process evolution through adoption of progressive concepts, methods and tools.
Why are we here?
A Metaphore
Software development process has tendency to become a nasty business...
Waterfall Development is
another name for the more
traditional approach
to software development
Waterfall Development
You complete one phase (e.g. design) before moving
on to the next phase (e.g. development).
You rarely aim to re-visit a ‘phase’ once it’s
completed.
That means, you better get whatever you’re
doing right the first time!
Waterfall Development (cont)
This approach assumes:
requirements known upfront,
almost no changes requested along the way,
system integration goes smoothly,
there is negligible unexpected,
and no risks are met...
Wouldn't we all, love to do this project?
Waterfall Assumptions
So usually:
You don’t realize any value until the end of the project
Which triggers major gaps and unpleasent surprises.
Resulting with stakeholders unwilling to use the software
But in real life...
Changes Inflow
Too Long
Skipped
"Analysis Paralysis"
Major Gaps
Waterfall ≈ risk+ , cost+ , efficiency-
Does it work?
IBM 2008:
Only 40% of projects met schedule, budget and quality goals.
Former researches go as high as 70% failure rate!
"Insanity Is Doing the Same Thing Over and Over Again and Expecting Different Results"
Not a process, it's a philosophy or set of values
Agile Manifesto
Paradigm Shift
Agile requires a paradigm shift.
A deep change in the organization culture to allow new behaviors to emerge.
This means first and foremost management commitment.
Then it can translate to:
- People empowerment
- Team cohesion (aka scrum...)
- Catering some uncertainty
- Embracing change
Agile vs Waterfall
Process at the micro level
Process at the macro level
Agile vs. Waterfall
Short Feedback Cycles
Agile Methodologies
SCRUM
SCRUM is the most widespread agile practice
Scrum in a nutshell
So instead of a large group spending a long time building a big thing,
we have a small team spending a short time
building a small thing.
...But integrating regularly to see the whole.
Accomplishments
- Team members empowerment
- Attentive process
- Knowledge / perception gaps reduction
- Less friction resulting with effective cooperation
- Risk diminished
- ...
-
Roles (per project):
- Product Owner (outward) -
product and project management - Dev Lead (inward) -
team lead and developer no 1 - Process Manager (~Scrum master)
- Product Owner (outward) -
-
Heartbeat:
- Release - per project
- Sprints - 3 weeks: planning, demos, retros
- Standups - daily: align and react
-
Gates:
- Dev. Commitment Gate (AKA Design Review)
- Product Acceptance Gate (AKA Demo)
- Tools
Agile @Dofinity
-
Prior to the release
- Features decomposition - user stories and tasks
- Project management - plan in place (milestones)
-
Prior to the sprint:
- Dev lead sets the sprint goals
- Sprint scope is handpicked based on the goals
- Sprint kickoff - goals communication
-
Following the sprint:
- Internal demo -> Customer demo
- Retrospective
-
Following the release:
- Measure, Learn, Adjust
Release & Sprint Mechanics
- Multi-Project environment
- Substantial unexpected work
- Complex planning
- Pre-Sprint Allocation
- Sprint management
- Metrics and Retrospectives
- Importance
- How to
Additional Issues
Essential:
- Jira - Main development management platform
- Dev Team Dashboard - The big picture
- BitBucket - GIT version control , pipelines
- Slack - Real-time communication and events (e.g. build)
- Jenkins - Continuous integration
- (dev tools: Docker, PHPStorm, etc)
Beneficial:
- EazyBI - BI tool to learn the data and gain insights
- SonarQube - Static analysis checks
- Confluence - Dev Knowledge Management (procedures)
- Tempo - Time tracking
Tools @Dofinity
Jira is used as the backbone for development project and tasks management tool
- One of the most widespread platforms globally
- Not a developed as "ground-up agile dev" tool
- Technology agnostic (differently then TFS)
- Very rich ecosystem - countless integration modules and many other extra functionality modules
- Decent UX, not as good as niche systems (asana, trello)
- Cloud / Local offerings
- Reasonable pricing
Jira Overview
- Project - well... a software project...
- Board - a screen allowing management of the sprint work. Usually per project but not necessarily.
- Issue - Work item. Possibly requirement, analysis work, graphics work, management, QA task, bug, etc.
- User Story - The base building block in Agile. Requirement transformation to user terms
- Epic - Collection of related user stories
- Workflow - can be configured and managed globally or per project, allows defining new states and transitions, allows rules, mostly an overkill - usually over-complication
- User - a person who works or interacts with the team
- Group - Used to define permissions more easily
Terminology
Jira - Workflows
Jira - Board
Jira - Issue
Text
Text
- General Jira Meta Data
- Technical design
- BitBucket - version control information
- Tempo - planning and effort information
Jira - Examples
Team must have the ability to track the sprint status and react accordingly.
This includes
- Overview of the overall progress
- Tasks completion - Planned vs actual
- Burndown chart
- Velocity gaps - Current vs Required
- Workload per developer - offloading
- Risks - dependencies, unexpected work, absence, etc
- Cross sprints stats
- Benchmarking
- Trends
Dashboard - Overview
Dashboard - Overview
Sprint Dashboard is used by:
- Development - work distribution, progress tracking
- Dev Lead - Resources planning
-
Process Manager (Scrum Master) -
- On Sprint - Risks and mitigation, load balancing, prioritization
- Post Sprint - Stats, Team issues, Retros, Improvements
Dashboard - Users
How can we improve our software development process?
Questions worth consideration:
- What is working well?
- What should we improve?
- How?
Possible adoptions:
- Strategic level - concepts and perception
- Tactic level - gap analysis: methods, tools, practice
Open Discussion
Resources
Practical Agile
By dofinity
Practical Agile
- 373