This page is for people asking what books I can recommend in the field of software engineering. I'll try to keep it updated as I go.
As the web is the main focus of my work it makes sense to start with it. Knowing where it comes from and what made it what it is today (a bit of a mess to be honest) is critical. Understanding the lower layers, frequently occuring performance problems and APIs will only make you a better developer.
Very technical and from the ground up, this makes it a great first resource. From latency and bandwidth, over TCP/UDP and TLS, mobile networks to browser APIs. Very in-depth and more of a reference than a page-turner. Still to-the-point and less than 400 pages.
Web Performance in Action
Very hands-on overview over the current best-practices (2017-2018). Critical CSS, responsive and lazy-loaded images, fonts, Service Workers, HTTP/2 and more. Highly recommended to see what is possible with not too much work.
The Tangled Web
A good overview of the security side of the web. Building whole applications, online banking and credit card transations on top of a document viewer has been quite the ride in the last 20 years. Read this to understand the platform hacks that were made to make the modern web possible.
Understanding ECMAScript 6
You Don't Know JS series
This is next step to get a deep understanding of the language. A series of books available to read online for free, it takes specific features and deep-dives into them. You could probably skip the one on Types and Grammar but the other ones are great. Especially scope, closures and this should make much more sense after reading these books.
Written by the creator of the highly-influential JQuery library, this is the third essential book in my view.
Alternatives to books
If you would rather watch than read, I can recommend the courses on Frontend Masters.
Regarding JS I liked the following courses:
- Testing Practices and Principles by Kent C. Dodds
There aren't many good TypeScript out there unfortunately and the language evolves quite quickly. Besides the official docs, one essential resource is the typescript book by Basarat Ali Syed. It's free to read online as well.
After that it's a good idea to read as much TS code as possible. You can find types for almost any library in the Definitely Typed repository.
On Software Engineering
Not much of an introduction needed: writing legible and well-designed code is a must, your future self will be thankful. These are the high-level books I liked:
The Pragmatic Programmer
A classic, written shortly before the new millenium, consisting of small chunks of knowledge that make you think about your work. Some may sound obvious but it's still fun to think about a time you violated one of the rules. Jeff Atwood has a nice quick reference to get an overview.
A collection of essays from the father of the IBM System/360. Mostly about project management in IT, with the eponymous essay explaining how you can’t just throw more people on the project to decrease delivery time (mostly due to communication and training issues).
I haven’t really connected to most of the essays; for example I found the idea of The Surgical Team more funny than useful. Still it's a quick read and should still be part of an education in the field.
Clean Code 2
While this one comes highly recommended I haven't finished it yet, so to be updated..
On Project Management
While seemingly every company nowadays preaches how agile they are, many still struggle putting it into practice. A pattern I notice a lot is projects starting with the Scrum methodology because nobody was ever fired for using Scrum. Then everything is being pressed into two-week sprints, whole days are being lost every week to unproductive meetings and developers are getting frustrated. What helps against too many meetings? Let's try Kanban. Kanban is implemented poorly, now everyone complains about too little structure and chaos. Back to Scrum. Rinse and repeat.
Two books I really liked that nail productive project management are Lean from the Trenches and Real-World Kanban. With actual case studies they show how projects can be run successfully, including scaling up the number of developers, changing requirements and involving the customer; everything we love about developing programs.
On Miscellaneous Topics
Some books that didn't fit any other category:
The Little Schemer & The Seasoned Schemer
For something completely different coding-wise I really enjoyed The Little Schemer and its follow-up The Seasoned Schemer. These will make you appreciate the basics of the lisp programming language in a Socratic-style of learning.
The Linux Programming Interface: A Linux and UNIX System Programming Handbook
Understand your underlying operating system. This goes deep but it's worth it and makes you appreciate the well-known Unix paradigms like Everything is a File and Do One Thing and Do It Well.
Designing Data-Intensive Applications
I read this for fun to understand more about the data layer. Really well-written but I haven't been able to finish it yet.
The Healthy Programmer
No matter how much you love coding: getting hit with carpal tunnel syndrome or frequent back pain sucks and takes the fun out of it really quickly. You don't have to run marathons but take care of your body at least a little bit so you can enjoy a long career doing what you love.
Newsletters are a great way to stay up to date in this industry. I’m subscribed to, and can recommend, the following: