Jussi Hallila

Talk is cheap, show me the code

Book Reviews

A list of books that I have on the shelve. Rated by how useful I have found these books during my career.

Algorithms unlocked - Thomas Cormen

Software Engineering and Algorithms
Rating: 3/5

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.

Angular JS - Brad Green / Shyam Seshadri

Javascript and AngularJS
Rating: 2/5

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.

Art of Agile Development - James Shore / Share Warden

Agile Methodology and XP / Extreme Programming
Rating: 4/5

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.

Art of the Start - Guy Kawasaki

Career and Entrepreneurism
Rating: 3/5

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.

Category Theory for Programmers - Bartosz Milewski

Mathematics, Category Theory, and Functional Programming
Rating: 4/5

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.

Clean Code - Robert C. "Uncle Bob" Martin

Software Engineering, Code Quality, and Software Craftsmanship
Rating: 5/5

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.

Clean Coder - Robert C. "Uncle Bob" Martin

Career and Professionalism
Rating: 5/5

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.

Code Complete 2 - Steve McConnell

Software Engineering
Rating: 4/5

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.

Design It! - Michael Keeling

Software Engineering, Software Architecture, and Software Leadership
Rating: 3/5

Design it was a somewhat interesting book to read. It outlines the aspects what makes one a software architect and how we in essence have software architects in teams already, regardless of the title itself. The most interesting part of this book for me was its focus on communication patterns between architects and various stakeholders; other devs, clients and the system itself. The book closes out with a catalogue of exercises that can be arranged within a company to improve this communication and information sharing. The technical bits in the book are somewhat slim, which is understandable considering that it rather creates an overview of the role of an architect rather than the end result of software architecture.

Design Patterns - Gamma / Helm / Johnson / Vlissides

Software Engineering and Design Patterns
Rating: 3/5

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.

Developer Hegemony - Eric Dietrich

Software Engineering and Career
Rating: 4/5

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.

Domain Driven Design - Eric Evans

Software architecture, Software Design, DDD, and Bounded Context
Rating: 4/5

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.

Effective Java - Joshua Bloch

Java, Patterns, and Best Practices
Rating: 5/5

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.

Effective Javascript - David Herman

Javascript, Patterns, and Best Practices
Rating: 3/5

Javascript edition of the effective series. Goes through the basic language constructs and explains very well what users of the language should really know about it. Touches the aspects of issues within the language and how to work with them or around them. Unfortunately the book is somewhat outdated in the landscape of fast moving language.

Eloquent Javascript - Martijn Haverbecke

JavaScript
Rating: 4/5

An excellent introductory book to the language of Javascript. When peope ask for recommendations of a Javascript book this is the one I usually recommend if I feel that the reader is starting out with programming. Starts with the basics and builds on top of that. I probably wouldn’t recommend this as a first JS book if you know programming already but for a somewhat novice developer this is one of the best you can get.

Functional Javascript - Michael Fogus

Javascript and Functional Programming
Rating: 5/5

This book made me finally understand the beauty of functional programming and why we should seek to understand that. Goes through functional Javascript programming with Underscore. Touches all the important aspects of functional day-to-day programming and explains them very well and understandably. Since the language is moving fast the book is quickly becoming outdated but for now (Sept 2016) it is still definitely worth the read.

Functional Programming in Scala - Paul Chiusano / Rúnar Bjarnason

Scala and Functional Programming
Rating: 5/5

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.

Functional Thinking - Neal Ford

Software Engineering and Functional Programming
Rating: 4/5

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.

Growing Object Oriented Software Guided by Tests - Nat Pryce / Steve Freeman

Software Engineering and TDD
Rating: 4/5

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.

Guidelines for Online Success - Rob Ford / Julies Wiedeman

UI/UX and Online Marketing
Rating: 1/5

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.

Haskell Programming from First Principles - Christopher Allen / Julie Moronuki

Haskell and Functional Programming
Rating: 5/5

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.

Head First Design Patterns - Eric Freeman / Elisabeth Freeman

Software Engineering and Design Patterns
Rating: 4/5

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.

Head First Object Oriented Analysis and Design - Brett McLaughlin / Gary Pollice / David West

Software Engineering and Object Oriented Programming
Rating: 2/5

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.

HTML5: The Missing Manual - Matthew MacDonald

CSS/HTML and Web development
Rating: 2/5

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.

Information Dashboard Design - Stephen Few

UI/UX and Dashboards
Rating: 2/5

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.

Java 8 In Action - Raoul-Gabriel Urma / Mario Fusco / Alan Mycroft

Java and Java 8
Rating: 3/5

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.

Java for Programmers - P. Deitel / H. Deitel

Java
Rating: 1/5

Very beginnery book about Java and development on the language. Not much used other than superficial skim through session.

Javascript Allonge - Reginald Brathwaite

Javascript and Functional Programming
Rating: 4/5

The Javascript book that sparked me to the trip down the rabbit hole of functional programming. Very interesting concepts about functions in Javascript and usages of them I had not thought of. To me this is one of the best Javascript books out there that captures the current paradigm shift to more functional style of programming in this language.

Javascript Patterns - Stoyan Stefanov

Javascript, Patterns, and Best Practices
Rating: 3/5

Javascript Patterns goes through a lot starting from basic object creations and functions to a GoF style design patterns. The first part of the book is somewhat basic and not bringing that much new to the table, at least for me. The second half brings in some interesting things and I like that the book touches DOM handling and proper practices to use your JS files in a browser environment. This is a good read, though a little bit all over the place and with a little bit too many skippable parts.

Javascript Spessore - Reginald Brathwaite

Javascript and Object Oriented Programming
Rating: 3/5

The other caffeinated Javascript book. This is very tightly coupled with Javascript Allonge and works very well as a yang to allonge’s yin. Spessore is more about objects and how those are, or should be handled in Javascript and how we can utilize them fully when writing in this language. Excellent book, though a tiny bit behind Javascript Allonge.

Lean Startup - Eric Ries

Career and Entrepreneurism
Rating: 4/5

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.

Learn You a Haskell for Great Good - Miran Lipovaca

Haskell and Functional Programming
Rating: 4/5

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.

Learning Reactive Programming With Java 8 - Nickolay Tsvetinow

Java, Reactive Functional Programming, and RX
Rating: 4/5

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.

Professor Frisby's Mostly Adequate Guide to Functional Programming - Brian Lonsdorf

Javascript and Functional Programming
Rating: 4/5

Brialliant little Gitbook about functional programming in Javascript. Dr. Boolean’s way of writing makes to whole thing a huge pleasure to read and exercises at the end of each chapter match very well the topic at hand. This book gave me a much greater insight on binding and chaining, as well as how to handle wrappedd objects in a functional way. Also the content on composing was excellently written and that alone makes the book worth opening up. Very good, hopefully the author has time to continue the series with more chapters.

Passionate Programmer - Chad Fowler

Career and Professionalism
Rating: 5/5

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.

Pragmatic Programmer - Andrew Hunt

Software Engineering, Code Quality, and Software Craftsmanship
Rating: 5/5

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.

Professional Javascript for Web Developers - Nicholas C. Zakas

Javascript and Web Development
Rating: 5/5

The book that introduced proper Javascript to me. Goes through everything on the language starting from basic constructs and ending up in complex DOM manipulation cases. Nicholas Zakas definitely knows what he is talking about and has crafted the book in perfect order. The level of difficulty creeps up slowly and keeps the reader on their toes while handing in helpful snippets to show how good of a language Javascript, against all odds, can actually be. Definitely recommend.

Programming in Scala - Martin Odersky

Scala
Rating: 4/5

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.

Quality Code - Stephen Vance

Software Engineering, TDD, and Best Practices
Rating: 4/5

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.

Refactoring to Patterns - Joshua Kerievsky

Software Engineering, Design Patterns, and Refactoring
Rating: 2/5

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.

Refactoring - Martin Fowler

Software Engineering and Refactoring
Rating: 4/5

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.

Remote Jobseekers Handbook - Coby Chapple

Career and Remote Work
Rating: 2/5

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.

Scrum and XP From The Trenches - Henrik Kniberg

Software Methodology, Scrum, and XP
Rating: 4/5

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.

Service Design Patterns - Robert Daigneau

Web Services and Patterns
Rating: 2/5

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.

Servlets and Java Server Pages - Marty Hall / Larry Brown

Java and Core Web
Rating: 1/5

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/

Soft Skills: The Software Developer's Life Manual - John Sonmez

Career and Professionalism
Rating: 5/5

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.

Starting an Online Business - Greg Holden

Business and Entrepeneurism
Rating: 1/5

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.

Succeeding with Agile - Mike Cohn

Agile Methodology and Scrum
Rating: 5/5

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.

Test Driven Javascript Development - Christian Johansen

Javascript and TDD
Rating: 3/5

A good introduction to test driven development with Javascript. Goes through the TDD process in JS and more importantly touches quite a bit of important aspects of the language itself. Unfortunately since Javascript is moving so fast the testing tools/libraries in this book are a bit out of date for current JS scene. Even with that it is a good read if you want to get a bit deeper insight on testing with Javascript.