A while ago there was an HN post asking for suggestions on [r]eading material on how to be a better software engineer.
Here’s my list based in part off a comment I made there.
- Secrets of Consulting by Gerald Weinberg because every problem is a people problem.
- Refactoring by Martin Fowler et. al. discusses how and why to refactor, as well as providing a nomenclature for the process.
- Code Complete by Steve McConnell is a bit dated (the last version I could find was from 2004) but a great overview of the entire software process, from requirements to maintenance.
- The Mythical Man-Month by Fred Brookes covers best practices about software development, written about a project from the 1960 and 1970s. Nothing new under the sun.
- The Joel On Software Strategy Letters cover different aspects of software strategy. The link is the first one, but all of them (I think there are five) are great.
- Letters to a New Developer is a collection of essays helpful to new developers. Note I wrote this book, but I think it does a good job of discussing the “soft skills” in an easily digestible format.
- The Pragmatic Programmer by Dave Thomas and Andy Hunt. I haven’t read the revised 20th anniversary edition, but the first one opened my eyes to the craft of software.
- High Output Management by Andy Grove illustrates how think about throughput.
- The Phoenix Project by Gene Kim et. al. is a fun novel(!) about applying lean management principles to software engineering.
- Good to Great by Jim Collins focuses on what great companies bring to the table. Helps me evaluate where to work.
- Managing Humans by Michael Lopp. The whole Rands site is worth reading, but I enjoyed this book about how to manage teams and build software. See above.
- Don’t Make Me Think by Steve Krug shows ways to think about usability, focusing on webapps. Short and easy.
- Badass: Making Users Awesome, by Kathy Sierra helps you put yourself in the shoes of your users and think about how to build software they will love. Short and easy.
Then, podcasts and videos:
- Mastery Autonomy and Purpose, a great video about what people really want in work.
- The Manager’s Toolbox podcast, focuses on nuts and bolts skills for managing people. You didn’t say you wanted to be a people manager, but knowing what managers think about will make you more effective in any org.
- Screaming in the Cloud is useful for keeping up with AWS and other cloud provider offerings.
- SE Radio is a bit dry, but has a great back catalog of software engineering focused episodes.
A few other resources:
- The Rands Leadership Slack has over 10,000 engineering leaders discussing all kinds of software related topics.
- CTO lunches is an email list of engineering leaders. The discussions aren’t consistent, but when they happen, they’re great. Plus, it comes to your email.
- HackerNews is a great way to burn time, but also a great way to keep on top of topics that are top of mind of some of the best developers in the world.
Reading up on software practices can help you level up as a software engineer because you’ll be able to avoid mistakes others have made before you. I can also offer a view of the big picture; knowing how your software helps your organization or company will only make you more valuable as a developer.