Mark Pollmann's blog

Books

This page is for people asking what books I can recommend in software engineering. I’ll try to keep it updated as I go.

You won’t find anything on here about the newest JavaScript framework or esoteric languages. Frameworks change too fast for books about them being useful and I haven’t played with other languages since uni. Anyhow, let’s get started.

The Web

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 occurring performance problems and APIs will only make you a better developer.

High-Performance Networking

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 transactions 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.

On JavaScript

JavaScript is everywhere nowadays, if you like it or not. And modern JS is, contrary to popular opinion, quite pleasant to work with. While I do most of my coding nowadays in TypeScript, JS is still essential to know and debug.

Understanding ECMAScript 6

ECMAScript (it’s basically another name of JavaScript) 6 was the first major update to the language in a long time. Understanding the (now not-quite so) new features is essential and this book is an excellent introduction to it.

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.

Secrets of the JavaScript Ninja

Written by the creator of the highly-influential JQuery library, this is the third essential book.

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:

  • JavaScript: The Hard Parts and JavaScript the New Hard Parts by Will Sentance
  • Testing Practices and Principles by Kent C. Dodds
  • (Maybe also Advanced Asynchronous JavaScript by Jafar Husain if you're interested in writing your own Observables).

On TypeScript

There aren’t many good TypeScript books out there unfortunately and the language evolves quickly. Besides the official docs , one essential resource is the typescript book by Basarat Ali Syed. It’s free to read online.

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 millennium, comprising 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.

Mythical Man-Month

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 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.

Miscellaneous Topics

Some books that didn’t fit any other category:

The Little Schemer & The Seasoned Schemer

For something 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 operating system. If not your personal then the one most servers run. This goes deep, but it’s worth it and makes you appreciate the well-known Unix paradigms like Everything is a File and especially:

Do One Thing and Do It Well

Designing Data-Intensive Applications

I read this for fun to understand more about the data layer. A really well-written tour through the issues of designing reliable systems.

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 so you can enjoy a long career doing what you love.

Bonus: Newsletters

Newsletters are a great way to stay up to date in this industry. I’m subscribed to, and can recommend: