Here’s a reading list for exploring the “agile landscape”, and contains some UN-learning as well. The goal here is to go back to basics and then start to explore the landscape as a set of interchangeable tools, not plug-and-play frameworks.
The key here is this – to decouple large agile frameworks (Like SAFe) into their components, so that you the agile coach / team member / it-doesn’t-really-matter can apply those components where and when (and only when) they make sense for your team.
Let’s talk about what agility is, and is not:
First, let’s un-learn some things about what it means to be “agile”. The following videos are about 40 minutes each. They are both expert agile coaches – Dave Thomas being an original agile manifesto signer.
- GOTO 2020 – War is Peace, Freedom is Slavery, Ignorance is Strength, Scrum is Agile – https://www.youtube.com/watch?v=WFbvJ0dVlHk
- Questions:
- Why is Jira not a great tool for agility?
- Why is scrum and agility not the same thing?
- Can we take an agile framework and apply it as-is to a business? Why or why not?
- If scrum and agile aren’t the same thing – what is agility? What is scrum?
- Why is the story splitting pattern of Design, Build, Test incompatible with being agile?
- Questions:
- GOTO 2015 – Agile is Dead – Dave Thomas (One of the original signers of the agile manifesto) – https://www.youtube.com/watch?v=a-BOSpxYJ9M
Different Toolsets to explore:
Note that these aren’t in priority order – these practices are all peers. The only way to know which ones are the right ones for your team are to learn them, and then experiment.
In addition – this list is just a starting point. The Agile / Devops / Design-Thinking space is constantly changing.
- Value Stream Mapping – From Idea to Delivered
- https://www.purdue.edu/leansixsigmaonline/blog/value-stream-mapping/#:~:text=Value%20stream%20mapping%20is%20a,and%20optimizing%20the%20entire%20process.
- Did you know – value stream mapping is over 100 years old: https://michelbaudin.com/2013/10/25/where-do-value-stream-maps-come-from/
- Extreme Programming – XP:
- Wikipedia entry – https://en.wikipedia.org/wiki/Extreme_programming
- Extreme Programming Explained: Embrace Change, 2nd Edition by Kent Beck: https://www.amazon.com/Extreme-Programming-Explained-Embrace-Change-dp-0321278658/dp/0321278658/ref=mt_other?_encoding=UTF8&me=&qid=1615222153
- Quick youtube overview: Extreme Programming (XP) – Georgia Tech – Software Development Process: https://www.youtube.com/watch?v=hbFOwqYIOcU
- Questions:
- What’s the difference between scrum and XP
- Questions:
- Lean:
- Getting started with Lean – Lean Enterprise Institute: https://www.youtube.com/watch?v=8EXS9wR0VRc&t=43s
- Question: What is the key activity that is central to getting started with lean?
- Getting started with Lean – Lean Enterprise Institute: https://www.youtube.com/watch?v=8EXS9wR0VRc&t=43s
- Lean UX:
- Lean UX: Designing Great Products with Agile Teams: https://www.amazon.com/Lean-UX-Designing-Great-Products/dp/1491953608
- Learn Lean UX with Jeff Gothelf: https://www.youtube.com/watch?v=rxRlLNnA1Ow
- Kanban:
- Kata (Continuous Improvement)
- Basic introduction: https://en.wikipedia.org/wiki/Toyota_Kata
- Jimmy Janlen – Practical Toyota Kata – Contains visuals that are great places to start: https://blog.crisp.se/2013/05/14/jimmyjanlen/improvement-theme-simple-and-practical-toyota-kata
- Devops:
- The phoenix project – https://www.amazon.com/The-Phoenix-Project-audiobook/dp/B00VATFAMI/ref=sr_1_1?dchild=1&keywords=phoenix+project&qid=1615224828&sr=8-1
- The Unicorn project – https://www.amazon.com/The-Unicorn-Project-Gene-Kim-audiobook/dp/B0812C82T9/ref=sr_1_2?dchild=1&keywords=phoenix+project&qid=1615224828&sr=8-2
- The Devops Handbook – https://www.amazon.com/s?k=the+devops+handbook&i=audible&ref=nb_sb_noss_1
- Devops for the modern Enterprise – https://www.amazon.com/DevOps-for-Modern-Enterprise-audiobook/dp/B07BYM4CLB/ref=sr_1_1?dchild=1&keywords=devops+for+the+modern+enterprise&qid=1615225160&s=audible&sr=1-1
- State of Devops 2019 DORA report – Statical analysis of Devops. Check page 18 – where does your team score? https://services.google.com/fh/files/misc/state-of-devops-2019.pdf
- Some performance indicators (metrics) for teams
- You can use these lagging indicators to see if agile practices are working or not:
- Cycle Time – time from progress started to release (tangibly in the customers hands). Lower is better.
- Lead Time – time from user request or idea to release (tangibly in the customers hands). Lower is better.
- Deployment Frequency – How often do you release code to be tangibly in customers hands. (1/year, 1/month? 10+ deploys a day? -> https://www.youtube.com/watch?v=LdOe18KhtT4) Higher frequency is better.
- Mean Time To Recovery (MTTR) – Average time it takes to resolve a defect, degradation, or outage that occurred in production. Lower is better.
- Team NPS – Would team members recommend working on this team to others? Percentage. Higher is better.
- What’s not in this list: Velocity. Velocity is a leading indicator. It should lead to more stories in production, but it does not always.
- Should you use Leading indicators? Yes. But verify that they actually lead to an outcome which can be measured by a lagging indicator.
- How do we know if we are doing better? Look for these indicators trending towards better. The rate of climb is more valuable than a single number.
- Story Splitting:
- How to split a user story (the poster from the microworkshop) – https://agileforall.com/how-to-split-a-user-story/
- If you are splitting so that each story is small and roughly the same size – you no longer need to estimate story points – simply forecast the # of stories complete per sprint. Check out Allen Holub’s #NoEstimate’s presentation: https://www.youtube.com/watch?v=QVBlnCTu9Ms. 2 minutes in, there is a reminder – this is a discussion, not dogma.
- Design Thinking / Human Centered Design:
- Double Diamond: https://en.wikipedia.org/wiki/Double_Diamond_(design_process_model)
- Design Kit (A great collection of HCD methods) – https://www.designkit.org/human-centered-design
Getting Technical
Scrum masters, coaches, anyone really, gain a great advantage in their coaching if they are able to understand some technical fundamentals (if they are working on a software team). One of the most useful ways this works for coaches and scrum masters is by understanding how the code and architecture also must be split to work with vertical sizes. Often times teams are splitting stories, but the code is not split. Have you ever had a lot of stories that are “done” but then when it comes time to release there’s a bunch of work that shows up? This is a common reason why. If you can catch this as it happens you can coach to it and get ahead of it.
- Python is the easiest to learn (and the basics apply no matter what language you learn!): https://www.codecademy.com/learn/learn-python-3
- But Java or C# (backend) and Javascript (frontend) are the most common enterprise languages
- Java Tutorial: https://www.codecademy.com/learn/learn-java
- C# .Net tutorial: https://www.codecademy.com/learn/learn-c-sharp
- Javascript (NOT the same as Java) is what nearly all code for front-ends runs on: https://www.codecademy.com/learn/introduction-to-javascript
- How to create a REST API in Python (Most of the backends you will encounter will be REST APIs of some shape and size): https://programminghistorian.org/en/lessons/creating-apis-with-python-and-flask
- Basic Front-End UI Development using AngularJS – Angular is the most common enterprise UI framework:
- Basic Setup: https://angular.io/guide/setup-local
- Front End Tutorial: https://angular.io/tutorial
- Which programming languages are up and coming, and which are fading out? See the quarterly report here: https://www.tiobe.com/tiobe-index/
How do I continuously improve myself? What’s the best way to grow my skills?
- Continue to explore all aspects of agility: Agile is not a single framework. It’s a mindset, a set of values, and an ever changing set of tools. Use the below to expose yourself to new tools developing.
- Communities of Practice: Find a group of people you trust. If they have a weekly or monthly meetup, attend it. Look for agile or devops meetups in your area, and attend them.
- Social Media Groups: Twitter and linkedin I’ve found to be the best. You can probably find local meetups on Facebook as well.
- Conferences: Attend conferences. Most are virtual and many have gone free since COVID-19 forced work at home. Always check the sponsor list and be aware of who is hosting the conference. Take heed if it’s a staffing agency – are they interested in Agile or selling consulting services?
- GOTO – Several of them per year – https://gotopia.tech/
- DevOps Days – https://devopsdays.org/
- Expose yourself to several different ways of agility: working at a single client can lead to you starting to lose your objectivity. In addition to different Volunteering is one way to work part time at another client and practice your skills. You can also:
- Work in engagements that have a set length of time
- This also lets you work two engagements at the same time – 2 days on site for two clients a week, with 1 day left for self improvement, for example.
- Work in engagements that have a set length of time
- Experiment and Practice with tactics or tools outside of the workplace:
- Try this out: Use Kanban to organize a major landscaping project, or cleaning out your closet, or planning a vacation.
- Use a personal Kata – even for things that aren’t strictly for work. Like improving physical fitness – or improving a musical instrument.
- If you are a programmer, try Test-Driven-Development – even in a small project.
- Important: Remember to keep practicing skills, even if you are not currently using them. It is MORE important to practice what you are not currently using, to make sure you keep your skills sharp.
- Your Personal Chaos Monkey:Find something hard, or disruptive, that would be good to learn, and force yourself into it. See what happens. This helps you practice several skills above – and how to experiment safely (Betting all your saving on $GME is not a good chaos monkey!)
- Some good personal chaos monkey exercises:
- What if I had to move to another state in a month? Could I do it?
- If you needed to change careers, what would you do?
- Your computer completely breaks down and can’t be recovered. It’s a brick. How long would it take for you to get up and running again? What would you lose?
- Some good personal chaos monkey exercises:
If you learn nothing else but one thing from this email this is the thing I want you to walk away with:
- Find the best way you learn – books, audiobooks, podcasts, short videos, long videos, meetups, whatever – and then build a habit around it. This email has a half-life of about…. Now. It’s already out of date. The only way for you to continue on is to build a habit of continuous learning. It’s on you.
- My habits, as an example:
- I listen to audiobooks or listen to podcasts while doing something that is not mentally taxing. Folding laundry, working out, commuting, etc. I’ve found this to be a great way to learn new major concepts (What is HCD, for example).
- I have weekly or monthly video calls with peers that I’ve met over the years. I maintain those relationships as they go on to work at other companies, and we share notes, experiences, experiments, and insights. This is essentially a community of practice – though it’s a matrix of a loose social networks that meet each other rather than a formal meetup. This is often a major source of new ideas and things to try.
- Write code every week – even if I’m not on an engagement that requires coding. Practice TDD and Red-Green-Refactor