Talk is cheap, show me the code
A list of books that I have on the shelve. Rated by how useful I have found these books during my career.
Good introductory book to algorithms if that is you cup of tea. Tries it’s best to be approachable and easy to understand and does a decent job on it. Goes through sorting, Acyclic Graphs, Shortest Paths and Cryptography. Apart from exercises trying to found exploitable arbitrage in Bitcoin exchanges (Bellman-Ford) I haven’t found much use on the techniques from this book.
A basic short book on AngularJS. Goes through Controllers, Services and Directives as well as communication patterns with an API. The most helpful section on the book was in the beginning where an anatomy of an Angular application was explained. It might be good as a first resource on Angular but not much further. For me the book became too late and did not reveal much extra compared to articles and blog posts found on the internet before reading this.
I love agile and feel frustrated most of the time when companies I work for fall into old patterns of heavyweight processes. Goes through corner stones of XP and all the useful practices that come with it. Was the initial spark for me to take a closer look to TDD. Luckily the book is not poisoned with consult talk on methodologies and keeps itself pure and on topic. Excellent, excellent book about agile development, can’t recommend enough.
A classic book on startup circles about entrepreneurism and building your own business. Did not hit a home run with me and the tactics recommended in the book were at times a bit out of my reach. Could be that the timing wasn’t correct for me to read this title but in the end I did not get much out of it. I still believe this is a recommendable book to people in the process of spinning up a business.
While spiraling down into functional programming more and more I, like many others, stumbled upon categroy theory. Looking for a good explanation what does it actually mean has been tough but so far the closest I have gotten to understand is due to Bartosz Milewski and his book and videos. Excellent quality, explains things very well. The topic is very difficult but Milewski is able to shed some light into the mathematical world and theories behind functional programming patterns.
This book is probably one of my all time favourites. The information within these covers is invaluable to all developers. The book explains why code quality is important and the notion of software craftsmanship, being proud of your creations and the ideas of code smells. Even though the book was written using Java in code examples the meaning of it goes well beyond that. All the essential structures of good looking code that is easy pleasant to work with is touched in the book. This one is probably the one I would recommend the most to developers jumping into the industry and I definitely have hoped many times that my coworkers would own a copy of this. Classic.
Continuation to Uncle Bob’s Clean Code, this time touching the career aspect of software engineering. Goes through the needed behaviours in a workplace. Explains about why professionalism is important and outlines the steps how to achieve that. The book contains more or less everything a developer needs to thrive in a workplace when one is not on his IDE going through the codebase (though that part is mentioned as well). Another book I can wholeheartedly recommend.
A classic book recommended by many, if not most, software developers. Explains every aspect about code starting from basic variable namings to complex build and testing systems. Unfortunately for me the book came a little bit too late on my career so I was mostly nodding along when reading through the pages on this book. The content is brilliant, though at times a little bit in need of an update. This is one of those books that you would really want to buy for the intern or just graduated coworker, they will learn loads from this one.
Legendary Design Patterns by the Gang of Four. The nature of the book makes it somewhat hard to read since in the end it is a catalogue of patterns that you can utilize in your object oriented code. Don’t get me wrong, I have opened the pages on this book probably more times than any other one in my bookshelf but that has been mostly to check the list of patterns from the first page and then continue search the implementation of that pattern from the internet. Somewhat labourious read due to the structure but is one of the classics so needs to sit in the bookshelf of every proud developer.
At time cynical, depressing and definitely thought provoking book. Paints a beautiful picture of the future of our industry from a developers point of view. The suddenly outlines the software industry, career paths and progressions and the cut-throat world of corporate developers life, before eventually settling into actual advice how to get good, how to advance ones career and how to find happiness as a software developer. Definitely recommendable.
A classic book on designing your domain entities within your application. A good book to read through especially at this day and age of increased drive towards modularity and componentization. Book itself contains a good amount of nice examples and use cases from real life, both successful and some missteps. For me this started a bit slowly but especially the penultimate chapter around bounded context gave some nice hints to mold thought processes. The book is a good companion for people who spend lot of time of their days huddled around white boards trying to come up with perfect designs.
A book containing patterns and tidbits how to write good or brillian Java code. Goes through the essential parts of the language and explains why and how it can be used effectively. While working with Java I usually end up going through writings of the author quite a bit since his collections library in the JDK is probably the most elegant piece of code within every project I lay my hands on. Every person writing Java should read this book.
The red Scala book. Very challenging but also so rewarding. The book will teach you functional programming if you go through the exercises. For me this title was able to tilt my head in a way that I understood the core concepts of functional style in Scala. The exercises in the book are a must do if you want to keep up with the content. If the exercises are done, it is guaranteed that you will finish this book as a better developer. For people already writing nearly fuctional code and wanting to take themselves to the next level -> get this book, this will definitely take you there.
Good mindset shifting book on functional programming. For me this title helped to understand the differences between imperative and functional styles of programming. The book goes through functional programming with Java and other JVM languages (Scala/Groovy). It is a good introductory book on functional paradigm for people coming from Java background.
A big case study book on TDD. Most of the book consists of writing a good sized program using test driven development. The content in the book is top notch though it suffers a little bit because of the book form. This would be an excellent crash course to TDD if the book is read out loud by someone while coding along with the book. Very good book for people looking to take their TDD to the next level.
A book with a lot of images showing websites and how they have been designed. Some points touching what makes a good “guideline for success” but in the end the content is much more readily available online. Might be a good for landing pages or advertisements, for me not much use.
Chris Allen is the person to go to when one wants to learn more about Haskell. This book starts from the basics and increases difficulty in a well structured, easily followable manner. Since the book really goes through things from First Principles, it also introduces a lot of ways to unlearn things. A quality that is definitely needed when one wants to venture into Haskell from C-based languages. Easily the best book on Haskell.
The entrypoint to design patterns. Witty and funny way of teaching about OO and design patterns. Goes through most used design patterns and show good variety of examples on use cases for these patterns. Makes the patterns easy to understand and grasp so the book reaches its goal wonderfully. This is the book to get in case you want to get a firmer knowledge of design patterns.
OO analysis and design side of head first series. For me the content didn’t bring much new to the table since most of the things were very familiar from university years. I like the concept of head first series which makes the book easily approachable. This could be a good read for people not so familiar with the subject, for me it was a little bit of waste.
Very introductory book about “new” aspects in HTML5. I bought the book to mostly have something to browse on while on an airplane. Since the topic is touching only an overview of HTML5 features the book is somewhat beginnery levelish. Few interesting tidbits around offline storage and proper usage of semantic tags were interesting. Other than those, most text was more or less skimmed through.
A catalogue of visual dashboards and what makes them good on the eye. I bought this to help design information dashboards in a way that the important data could be easily grasped from them. In the end the book didn’t see much usage. Few turned pages here and there to get some inspiration on design and that ended up being the full lifecycle of this title. Maybe a good buy if you are really struggling to find inspiration, in reality internet might be a better option.
A good listing of new features in Java 8. Explains thoroughly the new streams API and usage of Lambdas around your codebase. Touches Optional and how that can be used and talks a little bit about async programming with Java 8. I enjoyed the chapters of how to shift into functional style thinking in Java 8, though so much more could be said on that. This is probably a good introductory book on the new features of Java 8 for people not so familiar with functional programming concepts. It doesn’t go too deep into the paradigm but touches it on the surface which is a good compromise for this kind of book. In the end the book is a good fit for developers jumping to the next JDK from previous versions.
Very beginnery book about Java and development on the language. Not much used other than superficial skim through session.
The book most people recommend when looking for a path to the entrepeneurial life. Lean Startup is a good starting point to read on that journey. It outlines most of the important aspects and techniques that can be used. Most of the things I got out of this book was a some kind of mindset shift towards more iterative style of developing myself and products I work on. It is a really good read and I would recommend it to everyone interested in the subject . Somehow I have a feeling that it could have been much better or that there are better books around the topic out there.
My first touch to Haskell. This book was a breath of fresh air in the category of books teaching programming languages. Very funnily written as well as educational. The whole concept around the topic was brilliantly executed and taught me a massive amount of new knowledge on a difficult topic. As an originally imperative style student some parts were difficult to grasp but that is not the books’ fault. Could’ve used a little bit of exercises but in general a brilliant introduction to Haskell.
Short-ish introduction to Reactive programming and operators that can be used when building reactive pipelines. Goes through the basic concepts fairly well and touches a good amount of different approaches one might want to take when working with observables. Could use a little bit more of mindshift type of topics explaining in more detail the reasoning behind the whole reactive streams movement and when one should jump on that and when not. All in all this book is a good introduction to RX and worth checking out.
One of my career defining books. I really really enjoyed the teachings from this title. Goes through the softer side of software development in a succinct and fast paced form. Touches all the important topics on how you should manage and develop your career and what kind of moves you should make on the journey towards software craftsmanship. Gives you good guidelines and thinking points about behaviour in and outside of your $DAYJOB. One of my favourite books about career in the software industry.
A classic. If you are only able to read one book about software development, it should probably be this one. Goes through all the important aspects around professionalism, software craftsmanship and code quality. Has a big, big influece on my view how I look at software development as an industry and career. Can’t really recommend this book enough.
Heavy and thick book on Scala. The book covers everything around the core Scala language and explains in detail core concepts around both object oriented and functional parts of Scala. What I found most interesting in this were the insights on why a language feature was implemented in such a way and what the thought process was behind such and such approach. The book really does an in depth analysis why the design decisions were made that way and also what approaches one would take when using Scala. The book is brilliant and will teach everyone reading it a lot, about Scala and about programming in general.
A good book about test-drive development. It goes through techniques in detail how to improve the quality of your code base with testing. For me this title came at a good time since I was just making a bigger shift towards embracing more TDD. The book laid out a good groundwork on the type of coding around that area. Sometimes the content is a little bit too basic but all in all the book is a good read if the timing is correct. You need to know your testing a little, but not too much for this to hit home.
A glue book between Gang of Four’s design patterns and Marting Fowler’s Refactoring. The book is a catalogued collection of code smells and steps how to get to the needed design patternized solution out of that smell. Unfortunately much of the book is geared towards legacy code and at times somewhat outdated. Also much of the solutions tend to be fairly simple and straightforward. It is a good complement to Refactoring but in itself I don’t think it will give much insights to competent Java developers.
A classic. This is an excellent book to first skim through to get a superficial knowledge about the topic and then return to every time you see something that “doesn’t feel right” in your code base. The book is a catalogue of code smells and solutions to how to get rid of them. Very beneficial to all Java programmers and mostly a must read to everyone who is working on legacy code (so everyone). Some of the pages are somewhat outdated due to modern IDEs giving you the one-click option to highlight a code smell and refactor to a better solution.
Nice small book about resources and techniques on how to find and survive remote work. Chapters around remote work itself and what kind of expectations one should impose on it are very interesting and contain a lot of useful information. I would have liked those to be a little bit longer and contain more insightful tips and experiences on that. The content regarding online resources etc. is useful but might work better in an online form. In the end the book is a good introduction to remote work and lines out things one should expect about it.
A short recap about scrum and how Henrik Kniberg’s team has adopted that. These kind of books are always good to read because they give you a more hands-on understanding about the topic at hand. This book is no different and it lines out valuable insights on Scrum and some challenges that you might be expecting when adopting it. As a short read this is a very recommendable title.
While buying this book I was balancing my decision between this and Enterprise Integration Patterns. In hindsight that would have probably been a better purchase for the that time period. This book goes through deisgn patterns around “heavier” style services in service oriented architecture. Works well as a reference book to skim through and see if a particular solution would fit the current use case. Now when focus is shifting towards microservices I will be opening the book every now and then to look for similarities and inspiration but all in all I believe there are better resources around the topic than this.
Probably a good book for it’s time. For me this didn’t really hit home since my development stack is not near J2EE and core servlets. Touches few interesting bits around JSP if that is something you want to use in your application to handle server side rendering but other than that, most of the content is outdated due to lighter weight Java Web development frameworks/
After Clean Coder and Passionate Programmer there was a long time without a proper book about software development as a career and how to make most ot of your passion around your profession. Soft Skills is irght up there with those classics and might be even better. The book goes through all the needed skills a software developer needs to create a good career, inside and outside of the office. The book lines up everything from mental and physical health to money management and salesmanship as means to make the best thing possible out of your career. John Sonmez has crafted an excellent tutorial to everyone, not just software developers, how to, essentially, live your life. Excellent book.
A for dummies series book that goes through the basics of an online business. Might be a good one for people coming to the topic with no earlier experience. For me the book was too much ‘for dummies’ and I did not get too much out of it.
One book about Scrum I really enjoyed. Even though I think Scrum has seen it’s glory days and will decline in the future to yet another management fad I found good information about it from this book. Mike Cohn is one of the founding fathers of Scrum and knows what he is talking about. If you want to direct your career towards scrum mastery and management side, this title is a really good starting point. It lays out everything you need to know about Scrum, starting from basics and expanding all the way to distributed and massive teams.