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)
  • 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:

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

 

Example jira issue:

  • 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

Made with Slides.com