Books every developer should read

There’s a enormous number of books out there – (even I am writing a book!), so choosing the right books to read can be a difficult task. Yet it’s important because our spare time, is very limited: we still need to eat, sleep, socialize, take care of family and kids, while we have to spend significant time to write code and solve problems. How to get the right book and not regret spending time reading it?

There are many good books – but it’s best to categorize them into smaller groups:

  • Is the book only useful for a small group of developers, on a specific topic (such as C#, Javascript or Networking), or is it useful for almost every developer?
  • Is the book beginner-level, or does it require some experience to digest?
  • Will the content be still largely relevant after ten years, or will it be obsolete in just next few years?
  • Is it a book to read from cover-to-cover in one sitting (just kidding, I mean you should finish it when you start it), or to read chunk by chunk (read a chapter, stop for a while, read another chapter), or keep it around as a reference?

I have this criteria to categorize books myself:

Good books: A book which is on-topic and with accurate information, and in an easy to read and easy to follow style, the author(s) deliver their promises.

Great books: Good books give information. Great books raise questions. A good book becomes great when it makes readers think – not only about topics mentioned in the book, but also the bigger picture.

Legendary/Classic books: Great books which stand the time and still be useful after 10 years, or even longer. These are truly gems of their own and should be read, regardless of the topics. The topics might be obsoleted, but the thoughts/ insights are still relevant. They are battle-tested and no matter which field you are working on, you’ll still learn something from it.

Books you really should read

C programming language, 2nd edition

 

C programming language, 2nd edition
C programming language, 2nd edition

Not everyone works with C (myself included), but this book is still recommended over and over for developers. The book is pretty small, and indeed very easy to read and follow – it is widely accepted as one of the best programming books ever written, in terms of writing quality – and it provides a view of what is a function, how a program works, how are things connected to hardware-level …

If you ever write a programming documentation – and you will – make this a reference for writing style.

Code Complete, 2nd edition

Best books collection: Code Complete, 2nd editition
Code Complete, 2nd editition

This book is considered must read for everyone, especially those who are new to software development, and re-read after a while. It’s a big book contains almost everything you should follow when you’re in the software industry – coding convention, naming, how to structure your classes … Get a copy and read it from cover to cover, if you haven’t, and re-read after 3-4 years to see how much you learned from it.

The Pragmatic Programmer: From Journeyman to Master

Best books collection: The Pragmatic Programmer
The Pragmatic Programmer

Continue reading “Books every developer should read”

Articles software developers should read, at least once

… if not twice.

These days, almost every software developer has a blog – so it’s sh*tloads of content around the Internet. Truth is, the good, accurate, long-lasting contents are hard to be found. Most contents are supposed to be obsolete very soon – and it’s OK, because many contents are for a very specific situation in a very specific time. But can we have a collection of the precious contents that are useful not only today, this week, this month, but ten years from now?

This is supposed to be a definitive collection of great contents that will be helpful for your entire career as a software developer. It’ll be updated frequently, with new link as I found it.

The Log: What every software engineer should know about real-time data’s unifying abstraction (Jay Kreps)

Logging is essential to every serious software system. But it’s not easy – getting it right can be indeed hard, especially in real-time. This article provides a deep knowledge about the concept.

http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (Joel Spolsky)

It’s been 26 years since Unicode was introduced and still, not all people can get it right. This article gives you – as the tittle suggests – a minimum knowledge about Unicode, and how to not get it wrong.

http://www.joelonsoftware.com/articles/Unicode.html

What Every Programmer Should Know About Memory (PDF) (Ulrich Drepper)

This is a pretty low-level paper, you will learn about how memory works at hardware level. Still interesting and useful. Who knows someday you’ll have to get your hands dirty with some memory stuffs?

Continue reading “Articles software developers should read, at least once”