Recommended books, articles, sites, talks and podcasts about software development.
Includes sections on software architecture and design and processes.
- Chris Zetter: Building a database to better understand maintainability
Chris shares a great deal of hard earned wisdom and clearly thought through advice about keeping software maintainable in his interview with Robby. - Legacy systems aren't clocks
Shamresh Kahn on why rewrites fail and alternative approaches - Escaping the rewrite trap
Camille Fournier shares her experiences of why rewrites almost always fail and what the alternative is - Quality through collaboration and visibility
'Building with quality isn’t a phase of the process, a task assigned to a specific person, or something you “add at the end.” It’s a way of working, a habit cultivated daily and embedded in everything we do: how we design, how we write code, how we collaborate, how we solve problems, and how we learn.' — Eduardo Ferro Aldama - On long term software development
"Write super boring code. Write naive but obvious code. “Premature optimization is the root of all evil”. If it was too simple, you can always make it more complex later. And that moment might never arrive. Don’t write clever code until you simply have to. You will not ever regret writing code that was simple." - Bert Hubert - Appetites instead of estimates
Jason Fried's advice on this is excellent. Think about how much you are willing to spend. - Reusability trap
"Well-designed components are easy to replace. Eventually, they will be replaced by ones that are not so easy to replace." — Martin Sustrik - The step-by-step guide to running a User Story Mapping workshop
Silvere Duval outlines this useful technique for building alignment on how to deliver iteratively. - How to get out of (technical) debt
"You don't need to measure cyclomatic complexity. You don't need to measure the SQALE method whatever it is. Your engineers know it, your product managers know it, your business leaders probably know it too. You just need your ears and eyes to listen and see what's going on around you because Tech debt is a business problem not a technical problem. You know that you've got a problem because the speed of your delivery slows down ... Your reputation is tarnished. There are increasing numbers of bugs. Your product is unreliable." — Sally Goble from https://www.youtube.com/watch?v=-wkzs5wDtkU - How to disappoint people: Part 3
"When you negotiate on estimates, you may be able to persuade people to change what they’re saying and agree to things they hadn’t intended to — indeed, many senior stakeholders have years of negotiation experience. But in this case, unlike the car, you’ve changed nothing about the underlying reality. You’ve all agreed to say things are possible, but all you’ve won is disappointment." — Neil Vass
Software architecture and design
- Avoiding the rewrite trap
"If you can't even articulate why the old system is bad, how do you know that the new system is going to fix it?" — Camille Fournier - Choose boring technology
Dan McKinley gives some excellent advice on the value of choosing boring technology
Processes