This item has been in my blog-to-do list for a while. I am personally not a fan of rankings. However, as I have read a couple of horrible computer books in the past, listing some of the good ones are just natural. There are computer books out there which are so bad and boring that you are not even going to finish reading.
What I found among these “bad” books:
The books I am about to introduce below are the ones where I enjoyed and was able to apply items in real life. Also, they come with great memorable examples.
I learned so many rules to follow as a Java Developer from this book and why I need to follow them. It teaches you how to become an overall better Java Developer. There are few memorable things I learned from this book. I really liked how it describes the patterns. It was simple and very easy to understand. Examples shown were precisely to the point. Also, I enjoyed the part where it covers favoring composition over inheritance. I remember I researched to understand that point on the internet to understand better. It also teaches implicitly on the concept, “tight cohesion, loose coupling”. It tells you the benefits of doing loose couplings and why it is necessary on what occasions. The book covers a little bit on Concurrency. It is described for beginners but described very well with concrete examples. It is very important, especially with computer books, to read with code examples discussed in the book. You can git clone github , which covers all the examples covered in this book.
The book showed me to take pride in my programming work. This book gives important basics that you need to know to become a good software developer provided with great explanations and examples. At the end, you would understand how important it is to write “Clean Code”, not just for yourself but for everyone else. You may even feel your ability to write code has been improved. If you are a real beginner of software development, the book might not be suitable. You might even find the examples in the book, not clean. Most of the examples are quite long but I suggest to read one line by line and you will find author’s intention of writing the code in such as way. Well, if you think about how it was written in 2008, it is actually quite well written. I would not recommend writing your code like the examples from the book in modern days since it is quite old, I would skim through it to understand and acknowledge the point the author is trying to make. I would recommend this book to a developer who wants to be a professional developer.
When I first read this book, I was shocked. Surprised to the fact how organized the book was toward the interview preparation and it illustrated well how the technical interview is played out. The book had a lot of exercises. The exercises are well linked to chapters in the book. After finishing this book along with exercises, I was a hunger for more programming problem sets which led me to search for online judge sites such as LeetCode, TopCoder, codeforces.com etc. That’s how I began my Algorithm “Playground” Project. It all began with this book, with all the interests toward a piece of the problem set. The book showed me the way to get that awesome feeling after solving that problem set. This book is quite old, there is a 6th edition book available. I did skim through examples from 6th edition. There aren’t many noticeable changes between 5th and 6th. This book is probably great for you to read at least once before you prepare a software developer position interview. It would help you prepare for it both for interviewer and interviewee side. It will make you become a better software developer overall. In the book, it emphasizes the necessity of writing code on the whiteboard. At first, I couldn’t understand the importance of this. But after I actually bought a whiteboard and started writing algorithms on the board, I started to understand why. You will be able to spot problems better and make thorough validations upon writing codes.
I read this book just before I switched my role as a full-time Java Developer. I thought I should read at least one Java concentrated book to join a Java Environment team. I am glad I did. Generally, I am not a fan of O’Reilly Media book. Their books are usually matches to “bad-book” points I covered above. Not enough examples + bored with all the concept. However, this book has some of the good examples and the book was well divided into small chunks of chapters with a lot of references. Check out Ben’s (One of the authors) github for all the examples/exercises discussed in the book. I would use this book as a reference for you to come back and read chunks (and repeat). Overall useful book.
Here is another great interview guide book which has tons of examples in the book. It covers pages to explain in detail of how to solve given specific problem set. It has many interesting problems which will grab your attention. The area which it covers is similar to “Cracking the Coding Interview”, such as data structures, recursion, sorting, concurrency etc. However, the examples are not exactly same though. I find there are certainly differences between the two. This book focuses on topics such as stable sorting, design patterns, also covers important knowledge-based/non-technical questions. It probably is another great book for preparing for an interview (or for interviewee as well). However, the book does make some assumptions on your knowledge on most of the things like red-black trees, dynamic programming, bit-wise functionalities. You may need to brush up on your algorithm skills and run some extra research on your way to fully understand these terms and how they work. Anyway, another enjoyable book!
There are so many great computer books out there. For example, I am currently reading a book called
Soft Skills by John Sonmez at the moment. I really like the motivation this book feeds in me to become a better software developer. However, I do not particularly like his assertions on how to make money (better) and focus writings about the “money” as a Software Developer. I understand his big dream of becoming a successful entrepreneur, but it didn’t really relate to me at all and I did not like the way he is trying to convince every reader to be such an entrepreneur. Anyways, I only took the advice suitable for me out of this book, which is what you should do for reading any kind of books really. Being able to absorb what is really needed for you is important. Above 5 books may not be in other people’s top 5 computer books. I am not here to advertise on their books. I am just depicting my honest feelings toward these books I read. I cannot guarantee you will enjoy these books but they did at least to me!