Some context, my journey
- Almost all codebases become a royal pain to work with overtime
- We don't come close to agreeing on the solution
-
Is the first concern really a problem?
-
Do you feel confident in your efforts?
-
Do you feel like it's ok for our code to rot, because "We'll rewrite it anyway"?
-
Assuming the first is a problem, is there a solution we can agree on?
- finding material was hard
- every community is different (the 4 minute mile)
-
Have you worked on a codebase that was mature and was a joy to work with?
- simple
- how much mental juggling?
- discoverable
- can I move around in the code and find what I expect?
- clear & discernible abstractions
- absent abstraction (or cohesion) you get coupling
- the car abstraction and the leaking abstraction
- coupling is dependency, dependency is volatile
- leveraging others abstractions, can we do the same? ok or not?
- bug-free
- tested
- easy to test
What are the qualities you see that make a codebase livable?
- not just moving code around
- having specific reasons to change (defensible)
- the process
- shameless green
- smells
- "refactorings"
- patterns
- tests
- small increments
- what is SRP?
- what is encapsulation?
- abstracting out imperative code
- too scandalous to print!!
- showing the business a plan
- show you can do it
- how long?
- what result?
- I've never been told know, which means it's on us
- A plan for tech debt
- ok to create debt in the beginning?
- when is the right time to clean up?
- can we spread the cost of new technologies?
- proof is in the pudding
- why the business is hesitant
- what we can do about it
- POC's
- Presentations
- Pair Programming
- By example
- respect and humility
- consensus
- commitment
- style guides
- CD/CI
- code coverage
- code review
- retrospectives