February 15, 2019 - by David
last edited April 24, 2020
This is not a definitive list, just a collection of observations of effective and efficient software engineering teams.
Another excellent list of lessons learned writing software can be found in Things I Learnt The Hard Way (in 30 Years of Software Development).
Software development can be particularly prone to the waterfall method. Avoid it as much as possible. There is something religious about this method, on the 7th day the engineer created the code.
In nature, the equivalent would be tadpoles laying eggs, millions of years ago, and the next day a fully formed human being walking out of the water. Evolution is an incremental process, almost all engineering is as well. No ‘Divine Coding’.
This can be difficult, for people not accustomed to it, as it can temporarily bruise the ego. Get over yourself.
Having your code reviewed will catch bugs you’ve become blind to, having looked at the problem for too long. It will also validate or test your assumptions.
Most importantly, even if your code is always perfect, it helps other engineers on your team learn; a technique they might not know, how team practices are done (especially for new team members), and stay up to date with how the system is implemented.
Every changelist should be concise and manageable. If you’re following the advice above, every changelist will be reviewed by at least one person. Large changelists are exponentially more difficult to review the larger they get. Asking for a review is asking a teammate for their time, be respectful of that.
If you can break the product without breaking the build, add more tests, ideally as pre-commits.
If a teammate suggests replacing your brilliant, never before seen, solution to a problem, with a simple, existing, language native feature/package, they’re right, 99% of the time.
Decide on a code formatting style and always enforce it. Reading a codebase without consistent style is like reading Beowulf, as rewritten by Chaucer, and proofread by Shakespeare.
Working 120 hour weeks to deliver is not heroic. You either failed to plan your time appropriately or wildly misestimated the time to complete the work. In both cases, you’re doing a disservice to your team and risking quality. There’s a reason why truck drivers and pilots aren’t allowed to work more than a consecutive number of hours per day.
Hire smart people you can find, and guide them.
January 12, 2026 - by David
Exploring the future of specialized artificial intelligence and its path towards artificial general intelligence.
January 5, 2026 - by David
Practical advice on how to protect your personal information and maintain your online security.
December 31, 2025 - by David
A comprehensive checklist for packing an emergency travel go-bag.
April 26, 2022 - by David
A collection of bookmarks to interesting dev projects or resources.
December 19, 2021 - by David
Prolific podcasters/vloggers/bloggers or even social media users, in the future, will be able to recreate a "bot" of themselves that easily crosses the uncanney valley.
September 17, 2020 - by David
The entire physical universe acts as a system, from the galaxies all the way down to the sub-atomic level.
June 11, 2020 - by David
All interviews in the future will link to unaltered original video sources.
May 5, 2020 - by David
A list of UI/UX implementations to avoid at all costs.
April 30, 2020 - by David
Proper written communication is more important than ever.
February 15, 2019 - by David
Thoughts on the best practices of the most efficient engineering teams.
February 1, 2019 - by David
Don't bother with a comments section on a personal or company blog.
January 7, 2019 - by David
The importance of quality user experience to crypto cannot be overstated.