Recommended books, articles, sites, talks and podcasts about software development.
Includes sections on software architecture and design and processes.
- 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 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