Five Books That Every Software Developer Should Own
Tags: beginners, books, programming, webdev
Published: 2021-06-13 20:07:03

Books can be a tricky thing for programmers: Unless the subject matter is fairly evergreen and established (like algorithms), the constant churn of what constitutes "current knowledge" can makes books seem like an unattractive, or even useless, resource for programmers. But there are some books I want to talk about today that I think every software developer should have within arm's reach!

## Grokking Algorithms

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xe9bq17jg176qr9qp04n.png)

Gayle Laakman McDowell's [Cracking the Coding Interview](https://www.goodreads.com/book/show/54845619-cracking-the-coding-interview) may be the 800lb gorilla in terms of data structures/algorithm interview prep, but I honestly think that Aditya Bhargava's [Grokking Algorithms](https://www.goodreads.com/book/show/22847284-grokking-algorithms-an-illustrated-guide-for-programmers-and-other-curio?from_search=true&from_srp=true&qid=FuBy5wLbS4&rank=1) is a much better place to start. GA will provide you with a friendly and clear introduction to algorithmic techniques as recursion, dynamic programming, various sorting methods, etc. This might be too elementary for folks with a computer science degree, but this is an **ideal introduction to the world of algorithms for newer developers**

## Code Complete

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/flqwbtk9m3dsvwzk27c2.png)
 
Steve McConnell's [Code Complete](https://www.goodreads.com/book/show/4845.Code_Complete?ac=1&from_search=true&qid=nP631y9eFr&rank=1) covers a wide array of topics related to general programming and software engineering. This book is especially valuable for newer devs when it comes to **getting to know the landscape of software engineering** and moving your "unknown unknowns" to "known unknowns".

## Don't Make Me Think!

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/khd0gcs3tgimmntz4vam.png)

Steve Krug's [Don't Make Me Think, Revisited](https://www.goodreads.com/book/show/18197267-don-t-make-me-think-revisited?ac=1&from_search=true&qid=cqlfENBWLH&rank=3) is essential reading for any developer who designs or works with UIs in any way, shape, or form. Krug lays out what you should be doing to build friction-free UI, and provides a thoughtful framework for you to utilize **to approach building for the user first and foremost**.
 
## The Pragmatic Programmer

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fg78n9z8azgnubztu7cv.png)

Andy Hunt and Dave Thomas's [The Pragmatic Programmer](https://www.goodreads.com/book/show/4099.The_Pragmatic_Programmer?ac=1&from_search=true&qid=XLHQF1rY9j&rank=1) lays out a practical framework to building software in terms of personal attitude, approach, flexibility, etc. The way to think about this is that if Code Complete introduces the landscape of writing software, **TPP provides guidance as to how to best navigate that landscape**.

## Pro Git

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f8m8sqhj09r6wp20ug8r.png)

Git is one of the most important tools that a developer needs to know, and it can get pretty hairy from time to time. Because os this, I think that every developer could benefit from having a paper copy of Scott Chacon's [Pro Git](https://www.goodreads.com/book/show/6518085-pro-git?from_search=true&from_srp=true&qid=g4Llv9sh6m&rank=1) on hand. And yes, it is available for [free online](https://git-scm.com/book/en/v2), but **having it in your hands is faster and more immediate**.