Quality vs Cadence

In Software Development

Common Questions

  • 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?​

NOT

  • Perfect code
  • Beautiful (subjective)

IS

  • Readable
  • Maintainable
  • 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."

TL;DR;

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

 

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

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)

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

Quality vs Cadence

By Benjamin Orozco (benoror)