My IT Books

JAVING
Javarevisited
Published in
18 min readJan 27, 2022

During my career as a Java programmer I did read some books, some of them influenced me more and some less. Some I really enjoyed reading and some I didn’t enjoy so much. I am going to take some pictures of them and share my thoughts.

Unfortunately due relocating over the years I lost some of them but I wish I still had them to take pictures of them. For example I remember losing “Thinking In Java”(B. Eckel), “Inside The JVM”(J. Bosh), “Working Efficiently With Legacy Code”(M.C. Feathers). Those were really good books that had a great influence on me. But anyway let me show you what I have left on my shelve.

This is the first book on my shelve, I wanted also to be the first book on this article. Refactoring is one of the activities I enjoy most when comes to coding in Java. I just find it so satisfactory moving chunks of code, deleting and removing duplication. Code reads so much better and it’s fun to read after you spend some time refactoring. Is like finishing a painting or some kind of manual craft, you take a step back, look at it and feels good. Also one nice thing about this book is that is more like a dictionary, you don’t just read it cover to cover and that’s it, you can go back and refer to it easily and find the specific refactor you need. Is one of the books that I found more useful and I occasionally I return to it to check about how a specific type of refactor was done. It has a large glossary and is easy to navigate, each of the refactors is well categorised and also includes diagrams and code samples.

This was my first book about test driven development. It is definitely a must read for anyone that is interested in TDD, regardless the level of experience. This book is a step by step example of a banking app built fully using Chicago’s style of TDD. It is practical straight away from the beginning and you can follow along with your computer, all the codes are there.

A couple of years after I read Kent Beck’s book TDD by Example, I stumbled upon this one. Many people in the office were talking about it and I even had the chance to meet both of the authors of this book in a pub meetup In London. This book in London is nicknamed the GOOS book. I decided to get it. Is an amazing book that explains very well the other style of TDD, the London style and how to gradually grow and improve the design of your code using mocks. Also is very practical and the examples are easy to follow. Another must read in my opinion.

Oh wow, here another one on unit testing. Oh my god, I was so much into TDD I really wanted to learn all I could. This book is also great, sometimes it is a bit under the radar for many but not to be underestimated. There’s a ton of advanced techniques and useful stuff. Very well explained. This book had a large influence on me. I actually wrote a review on this book and posted it also here in the blog some time ago. Here it is if you are interested in knowing more about this book: https://medium.com/javarevisited/effective-unit-testing-a-must-read-book-for-programmers-a6da83f0b23b

In my beginnings as a programmer I gave a lot of importance to TDD but one of the very first companies I was working for seemed didn’t really care much about it, and there were also some bad habits in the company culture that to me started to seem a bit unprofessional or at least unproductive. I started researching on the internet about how to be a good programmer because I didn’t know if what I saw other more senior programmers doing in that company was good or bad. My main concerns were mainly about testing and refactoring but also there were also many other attitudes that not necessarily related to coding itself. The Productive Programmer was a good book that helped me scrap the surface of what it meant to be a good programmer. This book was probably not extremely influential but it was powerful enough to point me into a direction that later would become one of my biggest passion in software which is software craftsmanship.

After reading the “productive programmer”, I was commenting about it on the canteen with a colleague who told me that he also read it. He started quoting some examples that I couldn’t remember and after a while we realised that we actually read different books with similar titles. I read the “productive programmer” and he read “the pragmatic programmer”. So without much hesitation that night I ordered “the pragmatic programmer” on amazon. It was a great book, probably one of my favourites, I highly recommend it. I love the stories and anecdotes in this books, they are so powerful and truthful. An amazing book and probably one of my early initiations into the fields of professionalism and software craftsmanship.

Software Craftsmanship was actually the reason I left a company I was working for in Dublin in my earlier career. Seeking to gain more understanding on the field I decided to move to London where I had the opportunity to attend multiple meetups related to the field and also got the chance to meet and listen to many important figures of software talk about Agile and also Software Craftsmanship. In one of this events I meet R.C Martin(Uncle Bob) and I decided to buy his book “Clean Code”. This book is a classic and a must read. It’s very well written with many examples. I enjoyed reading it and following the examples. Also Uncle Bob is extremely charismatic and I loved watching him speaking and following his really cool videos specially the ones in the clean coders collections. I am aware that there’s another book by Uncle Bob about architecture, that I haven’t read but I heard is also really good.

Once I was in the industry for a 3 years or so I realised that often I had difficulty understanding the requirements. Back then there was not JIRA, or at least not as it is today. The tickets were printed in paper and stuck to a physical Agile Kanban board with bluetack. I think I really liked this boards and I got quite interested in the process of the lifecycle of delivery and continuous delivery itself but in particular I was very interested in how to write good requirements. I got this book to understand better about user stories and how to best craft them because the technique I was starting to learn to code then was called ATDD which was TDD but starting not from the unit test but from the acceptance tests(hence the ‘A’). I knew that automating acceptance testing was a very important aspect to get things right but to be able to automate the acceptance criteria's it is also important to know how to write good acceptance criteria's. Many companies struggle deeply putting their requirements into words. This book was a great help understanding some of the tricks, biases and pitfalls when preparing user stories.

The topic of Agile was really big during the early years of my career, I was obsessed with Agile practices, retrospectives, user-stories, TDD, etc … One day I was having lunch in the canteen and I heard other developers talking about this book which was quite a fun novel about Agile. I decided to buy it and I had a lot of fun. It turned out that this book was actually a choose your own adventure game/book. You arrive new to a company as a team lead of a software project and you are given choices and depending on the choice you make your project and team goes one way or another. It’s really fun and also has some useful teachings not just about Agile but also leadership.

I think the pragmatic programmers is one of my favourite editorials. They have really good books, I loved all of the ones I bought from them. This one is a really good one. I wanted to understand better how the thought processes worked and in particular the process of learning. How do people learn? This book is off-charts. Very small but also very powerful. I really loved it. It has lot of visuals, diagrams and great explanations. The topic of learning how to learn I think is very important not just to programmers but to anyone regardless of the profession. You don’t need to be a programmer to read this book.

After reading the book about pragmatic thinking and learning, I thought to get something else also on the topic. This was my next book related to the topic of learning and thinking. But this time I didn’t read it fully, I think the previous book was better. This was yet good but I got a bit tired of it quickly, It had good and fun examples but was more code oriented and focused in problem solving rather than the dynamics of learning and cognition which is what I was interested in at the moment. I think I didn’t make a mistake buying it but I made a mistake thinking that it covers the same topic as the previous book so that’s why stop reading it just a bit before half way. But this is not a bad book at all, it has very good critics in online forums.

There was a time when I was so much into asking and answering in stackoverflow and also project euler that I wanted to find some good compilation of problems to solve now and then just for fun and practice. A friend told me that this book had a loads of problems and that also was very helpful because many of the problems were sometimes interview questions. So I decided to get it. Wow, this book is just huge I didn’t read even 10% but I randomly read some parts now and then. And also is interesting to find problems via the glossary. It’s a really good study and preparation book and it can be revisited many times. I personally only use it in between jobs/contracts. I do one or two exercises just to do a bit of problem solving and I think it does help motivating me for the interview.

I borrowed this book from one of the first companies I worked for and then I forgot to return it. I realised that I still had it 3 years after I left or so. This is just a great pocket guide to Linux. The linux terminal was one of those essential things that you need to learn when you are a beginner programmer and this pocket guide was next to me on my desk for long time. I did learn lot’s of useful things from it.

Given I put the Linux guide I thought it would also be fun to show you that I have also a DOS guide. This little booklet is from 1991. Back then I was still a child and I had some old computer, I didn’t know anything about programming then but this book helped me learn some basic DOS commands that I would mainly use to copy files, create folders and install games using floppy discs. My favourite DOS game was “prince of persia”. I was so happy when I managed to install it because one of the discs I had was damaged so I had to go to a friend's house and clone one of his floppy disks to be able to complete the installation.

Side note: I don’t read just in English some of my books are also in Spanish or also in Serbo-Croat. Just to say in case you notice that some titles are written in other languages.

While on the topic of old books, let me show you this one. Is one of the very few books I kept from university times. I finished my uni in Belgrade and most books after using them I gave them away or I just put them in a box and left at my parents attic. But this one I decided to keep. It’s funny because at the very beginning of uni when I started getting interested into programming I really thought that I will be using CASE(Computer Aid Software Engineering) tools to create software so I decided that I really needed to know UML. This book was given to me by another student from the previous generation and I ended up reading it nearly from cover to cover. 10 years later UML is something that really hasn’t really had much impact in my career after all. To be honest a developer even without knowing UML if at work is shows UML diagrams, it’s never a problem. But I guess this is still useful for those who are more into systems architecture and like to present ideas and concepts to the companies and teams they work with. I keep it just as a memory from uni times but I really never refer back to it.

When I bought the book “Cracking The Coding Interview” along side it Amazon suggested me also this one for an extra 5 euros since it was in offer. So I bought it too. It’s a fun maths book and I did read some of it, I never finished it. But it has very interesting miscellaneous data in it that will surprise you.

I got this one from a family member 3 years ago or so. I commented that the topic of the mind and thought processes was interesting to me and I was gifted this book. I started reading it but I found it a bit hard to read to be honest so I stopped. Maybe in the future with more time I will return to it. But the critics on this book are really good. I can’t comment much more since I haven’t read much of it unfortunately. But is there on my shelf.

Not reading a book or reading it half way is something that shouldn’t really bother us. This is just one of the many interesting lessons about self-education that can be learned from “secrets of a buccaneer-Scholar”. Soon in my career I realised that a lot of things in software require to be “self-educated”. Since things moves quite quick, it’s not unusual that things either become obsolete or that there are new required things that we need to learn. This book was very interesting and I had good fun reading it. If you are interested in the field of self-education and want to become more autodidactic. This is a nice book.

Java is going to die! I hear that so many times... Once I was invited to a meeting organised by some recruitment firm in London’s Heron Tower and their whole pitch was how good scala was and how bad java was without really explaining much about it. They were just trying to brain wash us to change jobs and that we will be thought Scala by some people in the banking sector. They gave us some books for free. I did study Scala for some time and even worked with it in couple of occasions but I never really pursued a career with Scala. I don’t regret giving up on Scala, at least I gave it a shoot. I found the learning curve quite steep and I just couldn’t be bothered. Java was always there so I stuck to it. I have a lot of respect for Scala devs since I know this language is quite versatile and also not easy to learn for many.

For me, Scala no but Kotlin yes. Kotlin is my new love, since 2 years ago. I just love the language. I did complete a nice course in udemy and even decided to create a blog to upload some kotlin videos and document my transition: http://kotlin4j.blogspot.com/ I bought this book later to complement my learning it’s quite good and I want to complete the reading I think I read around 60% then I paused since I had other priorities. I already had the chance to code professionally some Kotlin code and I even ventured a bit into Android on a personal project, just to see what was like. In the near future I see my self fully transitioning into Kotlin as an alternative to Java. I noticed that companies are already hiring Kotlin devs even in back-end systems. So Yeah this is one of my actual objectives at the moment. This book is really good, as I already said I love that editorial, I am happy to recommend any book from them.

Oh look this one. Most apps I work on nowadays are RESTful but some years ago many systems still used the SOAP architecture. This was one of the study books I used to pass one of my Oracle certifications called OCE-WSD(Oracle Certified Expert — Web Services Developer).

It’s a good study book but I would also recommend to complement this with some good book or guide on API’s design because the topic of designing good REST API’s is always very popular and needed.

I don’t like this book. I did read it early on my career because I really love design patterns but I was a bit let down by both how is written and also the diagrams. I got it because I thought I would understand better the examples if they were written in Java, but I was wrong.

There’s a better book on design patterns called the GOF(Gang Of Four) which is actually I ended up downloading in pdf and reading instead of this one, even if the examples on the GOF book were written in C++
This is a link to the GOF book: https://www.amazon.com/gp/product/0201633612

I also don’t like this book. Many say is a great book and it probably is but it just gives me a bit of anxiety and headache when I open it. The thing is it got it years ago because one app I was working with relied a lot on Java’s multithreading api so I wanted to learn some of the basics of concurrency in Java. But soon after I changed jobs and since most apps in the back end I worked on don’t really have this kind of concurrency problems because they are written in functional style and also aim to be stateless. So yeah, thanks god to first VAVR(formerly Java-slang) with immutable collections and a bit latter Java 8 appearance. The functional style of coding, with it’s immutability became predominant so this book was not needed so much. So yeah it’s there on my shelve but I only go to it maybe after an interview to check if I answered correctly.

There’s a thing called the theory of constraints that is quite relevant for Lean-Agile teams specially if they are interested in Kanban and also Continuous delivery. I will not go into this theory but this book talks about it through an interested novel. I recommend reading for anyone who is interested in the field of Agile leadership. Very valuable lessons in this book.

Oh cool another uni book that actually survived the purge. This is a fun book. Most books from the Head-First collection are quite cool to read and very practical. I also had the one on Java but I gave it as a gift to a friend that was starting. Anybody starting with SQL can benefit from this book.

When I started to get interested in Agile I discovered that there are other aspects to the good performance and efficiency of teams that are not just related to technical approaches nor complex processes. Some things have to do with motivation.

Have you ever heard the saying “If you believe you can, you are halfway there”? The power of motivation in development teams is very much underestimated. Lot’s of recruiters get it wrong and building a cohesive team is much more than skills and previous experiences, it is also motivation, culture, attitude...

This book is really small, I don’t think it has a 100 pages. You will enjoy reading it.

This one I think is ok to call it an IT book because is about the field of HFT(High Frequency Trading) which is basically computer algorithms that trade currency, stocks or other financial instrument faster than humans can do it. I got interested in this because I took a free lecture on forex trading and by pure chance I heard about HFT and somebody recommended me to read this book. A really fascinating field and story. It really opened my eyes to observe how important fast performance is for some systems even to the point of requiring to be collocated geographically and even buy land to build infrastructure to lay optic cables. Is a really a crazy interesting story.

IT Security is always interesting and relevant. Knowing how to protect your web app from SQL injections, XSS attacks and other is important. I wanted to learn a bit of security from the point of view of the attackers and I found this book on offer. There are quite interesting things in it. Is not a programming book, is just an offensive security essentials book. Maybe there are other better books on this field but since I am not an expert I cannot recommend or tell how good this one is. I personally liked it.

Guess what is the weaker point of every system? The people using it. This domain of social engineering and open source intelligence is really amazing. I with I had more time to research on this because the topic is quite broad. But I got this because I was always interested in the psychological aspects of systems security. This book doesn’t talk about software, it talks about the principles of social engineering an open source intelligence and how they are used by pen testers and other security professionals. I really enjoyed this one, there are very interesting real life cases and stories in this book.
Also I forgot to mention, sorry about this picture, I went to the shop and left the book in the sofa after reading and my dog started to eat it. Fortunately it’s still readable.

I was unsure which book to get when looking on the social engineering books. So I got two, the previous one and also this one. But I haven’t read it because after finishing the other I was a bit busy and this one was a bit large so I thought to postpone the reading. But I think this one is also good. Seems to be a reference with lot’s of technical detail while the previous book that I read was smaller and more on use cases and real life stories. I cannot say much more at this point, I have it in my to do list and I will have a look when I have time.

I wanted do a bit of mobile since I never really did but also because I wanted to try to show programming to kids. During my time in uni I used to teach programming to other students to get some pocket money and I always thought that teaching kids would be interesting hence I decided to get this book. App Inventor is quite a good tool for beginners but soon I realised that is yet too advanced for some kids so I decided to use scratch instead after all for the younger kids.

I used this book to teach scratch and some programming concepts to some kids including some on my family, during my free time. They all love it. Scratch is so much fun and is really cool to trigger the kids creativity. By the way I found this book on a Tesco supermarket in London for just 5 pounds.

Those were my IT books, well the ones I have left as said at the beginning sadly I lost some.

If you enjoyed this post, please give me a clap 👏and follow this blog for other interesting content coming soon.

--

--

JAVING
Javarevisited

The present continuous form of “to program in Java”.