The Pragmatic Programmer
The authors focus on teaching a pragmatic approach to the software development process. They’ll try to teach you what matters about a project, how to stay productive, and they’ll provide you with an extensive list of tips you can, and probably should, apply to your day to day software development activities. In reading this book I had a lot of nodding moments, some “ahá!” moments, and a lot of fun.
The Mythical Man Month
Brooks wrote a timeless piece of work in The Mythical Man Month. In his book you will find the explanation for many myths pertaining to software building, such as the fallacy that software engineering is in any way similar to classical engineering. You’ll learn that projects inevitably go wrong, and how to prepare for when they do. His argument also focuses on a paper he wrote, called “No Silver Bullet”, where he explains why software development is doomed to be a slow process, and why it won’t be changing anytime in the near future.
A must read for any software developer. The world would be a happier place for everyone if project managers around the world read this book.
Don’t Make Me Think
This book addresses usability and web design in a very comfortable read which somehow puts all the concepts in the book in its presentation itself, which makes it quite an interesting and well rounded book. You will understand how to think so that your users don’t have to, and just how important that is to designing products that are intuitive to use. You will also learn to keep your happy talk down, while promoting the most relevant content in your pages. A must read for anyone working in the front end of software applications.
The Design of Everyday Things
Have you ever wondered why the telephone is so damn hard to use? You might not be the only one. Norman will unveil the reason why some products are easier to interact with than others, and you will earn a competitive edge over other, less thought-out, unpolished products.
Head First Design Patterns
Head First is an excellent book if you want to learn common software design patterns and ways to apply or combine them. The code samples are written in Java, but it should be very easy for you to understand the idea behind the code samples. The book is very easy to read, and gives you lots of examples, which makes it a very fun and relaxed read. You won’t even realize how much you’re learning.
In his book, Jon will walk you through the wondrous land of low-level programming. It all boils down to making you think really hard about problems. Even if problems such as sorting and filtering are resolved for the average software programmer today, this is a crucial book going into one of those interviews which attack your coding and reasoning skills ruthlessly.
Refactoring: Improving the Design of Existing Code
Fowler goes on to describe a very lengthy list of software refactoring patterns in a very structured way. You can either read the book from beginning to end, or jump right into the recipe you want to use. Each refactoring comes with the reason why you’d want to use it, when not to do it, and a step-by-step explanation on how to implement it. You’ll also gain insight into why refactoring is important in the first place, and how to refactor in a clean way that mitigates introducing bugs during the process.