Quality vs Cadence
In Software Development
Common Questions
- Is quality in Software worth the Cost?
- Do we have to choose between priorities and quality?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/333800/images/8789468/5he7wn.jpeg)
Don't work more, work smarter!
What Quality means anyways?
NOT
- Perfect code
- Beautiful (subjective)
IS
- Readable
- Maintainable
- Tmp: Easy to change
- Full-fill requirements
- a.k.a Customers don't give a 💩
![](https://s3.amazonaws.com/media-p.slid.es/uploads/333800/images/8895135/Screen_Shot_2021-09-03_at_10.16.42.png)
Is quality in Software worth the Cost?
"Good, fast, cheap. Choose two."
![](https://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Project-triangle-en.svg/440px-Project-triangle-en.svg.png)
TL;DR;
You don't have to choose in LT
Better can make you Faster & Cheaper
Faster can make you Better & Cheaper
![](https://i.pinimg.com/originals/9a/f8/c4/9af8c4ea09972daa82473823532bf305.png)
![](https://preview.redd.it/fgy1krfza5111.jpg?width=640&crop=smart&auto=webp&s=4bf2513d7b9e1a08efb311fe0a66c6295637c2a5)
Let's have THE "Tech Debt" conversation
Q: I Tech Debt a good or a bad thing?
A: Neither! It's just Debt, use it responsibly
(here comes a boring analogy with Finance)
So: Is High Quality Software Worth the Cost?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/333800/images/8889539/Screen_Shot_2021-09-01_at_17.47.52.png)
- High quality software is actually cheaper to produce.
- Better internal quality makes enhancing and adding new features easier, therefore quicker and cheaper
- (we) Software engineers (usually) suck at explaining this to stakeholders
Do we have to choose between priorities and quality?
No, and it's rarely a binary decision
Think strategically!
Tips & Tricks
- Planning & Write down
- Thinking by Analogy vs from 1st Principles
- Design Patterns / Testing
- Code Review / Peer Programming
- Test Specs / Documentation
- Agile & Lean / Kanban Kaizen
🏛
Write things down
- Don't jump into the code right away
- Brain dump: Plan accordingly & take notes
- Constantly ask: What's out-of-scope
- Best work is done AFK-first
- RFDs are good tools both for individuals and team discussion
1st Principles Thinking
By Analogy: We do it bc it's something else that was done, or it is like what other people are doing
1st principle: Assumption that cannot be deduced from any other assumption
Boil things down to the most fundamental truths … and then reason up from there
![](https://s3.amazonaws.com/media-p.slid.es/uploads/333800/images/8893073/Screen_Shot_2021-09-02_at_22.46.54.png)
Coding time!
- Execute on your plan
- Atomic & semantic commits
- Iterate
- Refactoring: First make it work, then make it better
- TDD/BDD
- Helps you sleep at night
- Confidence to refactor
- Design patterns
- Readability & Maintainability for everyone
- 6 months rule: Own code will look un-recognisable
Teamwork & Peer Review
- Async Code Reviews & Peer Programming
- Dev QA
- Test your own shit
- Avoid bias with an extra 👀
- Look for non-obvious edge cases
- Proof of tests (GIF, Video, Postman, Specs)
- Testing team is not a replacement for Dev testing
- Docs
- APIs
- Test Specs readability (RSpec, Page-Object)
- Github PR comments (for later)
- Extra: Confluence (or alike)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/333800/images/8892938/608D92BD-celebrities-who-enjoy-driving-a-toyota-image.jpeg)
Kaizen
Continuously improvement: Kaizen (改善) means to improve or change for better. In Lean project management, Kaizen philosophy seeks to improve a process through small, continuous, positive changes applied by team members across every level of an organization, over a long period.
Lean & Kanban
- Manage low WIP (work in progress) ⚠️
- Identify bottlenecks & blockers 🚧
- Help focus toward goals
- Better sizing
- Reduce idleness / context-switching
- Catch bugs earlier
![](https://wac-cdn.atlassian.com/dam/jcr:bed936e1-0649-4278-a4dd-222b98e96fa5/agile_kanban_board.png?cdnVersion=1789)
Quality vs Cadence
By Benjamin Orozco (benoror)
Quality vs Cadence
- 839