Quality vs Cadence
In Software Development
- Is quality in Software worth the Cost?
- Do we have to choose between priorities and quality?
Don't work more, work smarter!
What Quality means anyways?
- Perfect code
- Beautiful (subjective)
- Tmp: Easy to change
- Full-fill requirements
- a.k.a Customers don't give a 💩
Is quality in Software worth the Cost?
"Good, fast, cheap. Choose two."
You don't have to choose in LT
Better can make you Faster & Cheaper
Faster can make you Better & Cheaper
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?
- 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
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
- Execute on your plan
- Atomic & semantic commits
- Refactoring: First make it work, then make it better
- 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
- Test Specs readability (RSpec, Page-Object)
- Github PR comments (for later)
- Extra: Confluence (or alike)
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
Quality vs Cadence
By Benjamin Orozco (benoror)