Post

Reading Recommendations for Software Developers

Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away. — Antoine de Saint-Exupéry

There’s an endless ocean of articles, blog posts, books, and videos offering advice about how to program and do software development well. I’ve collected a handful of my favorite resources here, which range from invaluable advice for program design to discussions about niche design decisions to post-mortems and technical overviews to random facts and statistics that I think are important to keep in mind. There are other huge repositories like Hacker Laws that are worth reading through carefully, but I wanted a smaller, more focused list rather than an exhaustive repository of everything that could possibly be useful to anybody.

Also, careful reading of some of the advice here will reveal that there are many caveats and a lot of conflict on the finer details. Unfortunately, there is no free lunch when it comes to software development. The purpose here, as with everything in life, is to get a broad sampling of all the arguments and information and learn to draw your own conclusions. The only universal rule is that there are no universal rules: think critically, don’t be dogmatic, and always keep learning. You can’t just play sheet; you need to be able to hear the music.

Anyways, in rough order of importance, here are my picks:

Programming Well

Design Patterns and Architecture

Avoiding Mistakes

Style and Best Practices

Error Handling

Opinionated

Ethics and Culture of Software Development

Facts and Statistics

A recent study found that 60-70% of vulnerabilities in iOS and macOS are memory safety vulnerabilities. Microsoft estimates that 70% of all vulnerabilities in their products over the last decade have been memory safety issues. Google estimated that 90% of Android vulnerabilities are memory safety issues. An analysis of 0-days that were discovered being exploited in the wild found that more than 80% of the exploited vulnerabilities were memory safety issues [1].

This post is licensed under CC BY 4.0 by the author.