AgileDC 2024 Agile Software Development Antipatterns and how to avoid them.

tstiehm 11 views 21 slides Oct 01, 2024
Slide 1
Slide 1 of 21
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21

About This Presentation

Software development is hard and poorly implemented or broken tools, techniques, and patterns just make it worse. Learn to spot software development anti-patterns and how to work your way back to a sane way of working.

Antipatterns can be hard to recognize and mitigate because they are solutions to...


Slide Content

Agile Software Development
Antipatterns and How to Avoid
Them

2@COVEROS, INC. ALL RIGHTS RESERVED
Who We Are
Coveros helps
organizations build
better software faster.
We provide consulting,
coaching, and learning
opportunities to
enterprises, teams, and
individuals.
Coveros is a GitHub
Premier Partner.

3@COVEROS, INC. ALL RIGHTS RESERVED
Tom Stiehm
CTO
•CTO of Coveros, Inc.
•Agile Practitioner since 2002
•Worked in Application Security since 2004
•DevOps Practitioner since 2012
•Works at the intersection of Agile, DevOps,
and Application Security

4
An antipattern is a way to solve a problem that works
in the moment but creates long-term problems.
What is an Antipattern?
@COVEROS, INC. ALL RIGHTS RESERVED

5
What is so bad about Antipatterns?
The insidious thing about antipatterns isn’t that they fail
outright but that they work in the short-term while causing
long-term failure and pain.
@COVEROS, INC. ALL RIGHTS RESERVED

6
So why do people use Antipatterns?
An antipattern can solve your current problem
Like technical debt, you promise to fix the long-term
problem, just as soon as you can
Or not because you will not be affected by them
@COVEROS, INC. ALL RIGHTS RESERVED

7
Antipattern Format
Name of the antipattern
Symptoms & Consequences
What to do instead
@COVEROS, INC. ALL RIGHTS RESERVED

8
Expecting change without changing incentives
Not changing what gets you promoted
Not changing what gets you a raise or bonus
Not changing what gets you fired
Incentives inform culture, culture is how people behave
Change your incentive system to reflect what you want
@COVEROS, INC. ALL RIGHTS RESERVED

9
Inefficient Meetings
Too many meetings with too many people
Hour long daily stand ups
No agenda to meetings
Stick to process defined meetings only
Stick to the meeting agenda, offline anything else
All other communications default to email
@COVEROS, INC. ALL RIGHTS RESERVED

10
High Work in Progress
The work queue has too many active items
The high work in progress is just accepted
The team can’t make acceptable progress on work
Limit the work in progress to the point where people can
make progress.
Most developers can handle 1 or 2 items
@COVEROS, INC. ALL RIGHTS RESERVED

11
Unrefined Backlog
The Product Backlog Items only contain high level
feature descriptions
No refinement or no work breakdown happen
The team must guess at the detailed requirements
Create a definition of ready that must be met before work
can begin
@COVEROS, INC. ALL RIGHTS RESERVED

12
Constantly changing team composition
Team composition is changed on a regular basis
People are viewed as interchangeable parts
Sometimes changing the team during the sprint
Keep teams together and bring the work to them
@COVEROS, INC. ALL RIGHTS RESERVED

13
Ignoring Technical Excellence and Practices
The team is viewed as a feature factory
All efforts to refactor or improve are denied
Over time new feature creation slows down
Include refactoring in estimates for work
Make new feature creation contingent on the technical
improvement of the software
@COVEROS, INC. ALL RIGHTS RESERVED

14
Not having retrospectives
@COVEROS, INC. ALL RIGHTS RESERVED
No Value, No Retro
Nothing Changes
Retro is only a complaint session
Try different formats
Action Items decided by team
Mix it up with team building
No value
Lot of fun
Great
Value
Great
time
No value
Boring
Great
value
Boring

15@COVEROS, INC. ALL RIGHTS RESERVED
Continuous Build (CB)
Using a Continuous Integration (CI)
server without tests or static analysis
No CI feedback on build health
No feedback in integration health
Put the confidence back in CI with
tests and analysis, start test
automation from the beginning

16
No production-like test environment
Not testing in an environment configured like production
You are putting unproven software in production, it will
fail at some point
Create prod-like test environments
Use canary releases to test in production
Don’t test something first in production
@COVEROS, INC. ALL RIGHTS RESERVED

17
Management Metrics Driven Development
Management dictates all the metrics used to evaluate
progress
Example: velocity is used to evaluate teams
The metrics drive unintended consequences
Focus management on business outcomes rather than
team metrics
@COVEROS, INC. ALL RIGHTS RESERVED

18
Chasing the latest software trends
The team is focused on how to use the latest
languages || techniques || frameworks || technology
The codebase is littered with half developed remnants of
former latest things
Focus on using the simplest tools and processes to
deliver value
@COVEROS, INC. ALL RIGHTS RESERVED

19
Performance & security testing only at the end
Performance and security testing are only done at
release
Defects are negotiated into production
Shift Left – add perf and sec indicators in the pipeline
Triage & fix perf and sec issues as they come up
@COVEROS, INC. ALL RIGHTS RESERVED

20
Always sprinting, no time to regroup
The only activity the team engages in is creating new
functionality as fast as they can
No refactoring, No fixing Sec or Perf issues
No training, No team building
Slow down to speed up, take the time to get better and fix
issues, take time off from sprinting to let them team
recover
@COVEROS, INC. ALL RIGHTS RESERVED

21
Questions?
@COVEROS, INC. ALL RIGHTS RESERVED