Technical Books read in 2018

Books on Progressive Web Apps, JavaScript frameworks, Doom, a 20 year old classic and a developer life manual. Here are the technical books I read this year. 

Building Progressive Web Apps

Following my attendance at NDC 2018 I wanted to find out more about Progressive Web Apps (PWA) so I started with this book.

It became apparent quite quickly that I didn’t have the vanilla JavaScript knowledge to really understand the examples and that I needed to go on a detour to improve my JavaScript knowledge and return here once I had.

The four chapters of the book that I did get through were well written.  

JavaScript & JQuery

This book has been in my library since 2015 it is one of my favourite books on learning a programming language.  I still return to it when I need to understand a JavaScript or JQuery “thing”.

Don’t let the page count of 600+ put you off. This is not a dense literature -esque book. The text is clear and concise and is complemented by  illustrations in colour.

So after starting on the PWA book above I knew I had relearn JavaScript fundamentals so I had an enjoyable time getting back up to speed. An updated second edition of this book is eagerly awaited.

Detour

Once my JavaSript knowledge had improved I should have returned to PWA. However the podcasts I was listening to around this time had been talking about the various JavaScript frameworks used to build Single Page Applications (SPA). In the past I had ignored these because they were appearing almost one a week and stability appeared to be an issue. Now they were starting to mature, the breaking change version of Angular from JS to IO was already “old” by framework standards so I took a detour to SPA land starting with Angular.

The ng-book 

I had I have already talked about this book here. Suffice to say I am not a fan.  

I became so fed up with wrestling with this book, especially the chapter “How Angular Works”  it put me off Angular for a while and made me switch to another SPA framework, React.




The Road to Learn React

At the time of buying this book, it had only good reviews on Amazon.co.uk. However I have now seen there is a 2 star review which although a little harsh mirrors some of my own thoughts.

Another buying signal was the 180 page count so it was not going to be another behemoth learning “X” programming language door stop. Unfortunately I didn’t get on with the format, it is A4 which means it takes a lot of desk space when the book is open and you are working through the examples and trying to see where you went wrong. There is plenty of white space on each page and I can’t see a reason why it was published at this size.

Format aside I did enjoy the authors writing style and easily got over half way through the book with little effort. React however wasn’t appealing to me and I have since returned to continue my SPA education using Angular coupled with a Udemy course.

Masters of Doom

This superb book tells the story of John’s Carmack and Romero who created id Software which after some excellent releases developed Doom which took them and their company into the stratosphere.  

Although new to me, this book was originally published back in 2003 and having been a fan of First Person Shooters (FPS) since playing the shareware version of Doom on a friends 486 this book was almost as additive and I struggled to put it down and it became one of my favourite reads of any genre this year. 

Software Project Survival Guide

I was reminded that I should read this book after I had listened to an episode of Seth Godin’s excellent podcast where he made reference to it.

Second hand copies are available for a bargain on Amazon and although now over 20 years old it is should be no surprise coming from the author of Code Complete that it still stands up well today. It is jam packed with sage advice that will help make running your software project a better experience for everyone involved. Some of stand out parts were the coverage of Team Dynamics, Estimating, Staged Delivery (i.e. sprints. This is in 1997!) and finally how developers should address the most difficult part of the application first.

A superb book. 

Soft Skills: The software developer’s life manual

This was the last book that I managed to get in before the end of the year. I was made aware of it whilst listening to an episode of Dave Rael’s podcast Developer on Fire.

It is a difficult book to describe so I will let the rear cover do that job:
…is a unique guide, offering techniques and practices for a more satisfying life as a professional software developer

With forewords by Scott Hanselman and Uncle Bob, it has high standards to keep up and it doesn’t disappoint. The book is split into seven sections covering a disparity of topics such as career, marketing yourself, learning, financial matters and physical fitness. The chapters are small which encourages you to dip in and out instead of reading the book cover to cover. The writing is engaging, in a warm friendly style that is never condescending or patronising. It is like having the mentor you always wanted by your side.

The book has been a joy to read and some of the chapters that have helped me the most were on don’t be afraid to look like an idiot and learning. In fact I am using John’s tips as I learn Angular and I am seeing results already.

It doesn’t matter if this is your first or 20th year as a developer, you will get something out of this book.

Summary

All the books I have read this year have enriched me in one way or another, yes even the ng book.

Good technical books remain a screaming bargain and one that many developers today overlook.

Fixed NG Book 5 Dependency Injection Page 175

I have been working through the NG2 book on Angular 5 and became stuck when trying to get an example on Dependency Injection to work.

Here is part of the problematic code I was unable to run:

ngDI-Copy

When running the sample, the page did not load and part of the console message reported by Chrome is shown below:

ngDI3-Copy

This problem was occurring using the following Angular environment:

ngDI2

Starting with the user-demo-component.ts file and after commenting out various parts of the code within this file I tracked the problem to the constructor:


constructor(private userService: UserService) {
}

Fortunately StackOverflow to the rescue and this answer provided the fix.  I made the following change to user-demo-component.ts whereby I added providers to the @Component decorator

...
  providers: [UserService]
...

The @Component decorator should now look like this:

ngDI4-After

Why does the completed example work without this fix?

Good question! If you have read any of NG2 book you will know that all the code examples in the book come with the source ready for you to try out rather than typing. When I checked the example and ran them I couldn’t see a similar change yet the code worked as expected so I will need to continue digging to ascertain why the supplied version works.

I will update the post once I have found out.

Update 23/04/2018

The completed example uses a different version of Angular and typescript. Here is the output from ng –version

ngDI5-After-Copy

The completed example which works uses Angular 5.2.0 whereas the version of Angular I am using is 5.2.9.

Technical Books read in 2017

Books2017

Looking back at the technical books I had read in 2017, the biggest surprise is that I didn’t read any books on Oracle which I think is the longest time I have spent between Oracle books. This hiatus will not last long into 2018 because of the imminent launch of Pete Finnigan’s new book

The four books I did read took me far away from my comfort zone and two of the four have been screaming bargains (HT to Seth Godin) with what I have learnt from them.

Microsoft C# Step by Step 8th Edition

This was the first technical book I read this year.  As I continue to learn C#, I look to buy any and all introductory C# books to read different authors descriptions of the language fundamentals.

The book is well structured with nice end notes that recap what the chapter has covered. In addition the code examples were complete and easy to follow. Despite all the positives the book didn’t really grab me and after the first few chapters it became a bit of slog to get through so I didn’t finish it. Not a bad book by any means just not one for me.

Adaptive Code 2nd Edition

This is my favourite technical book of the year. It has stretched me further that I thought possible and has taught me so much.

It is split into 4 parts. Part I Is a good overview of Agile development frameworks; Scrum and Kanban, Part II Focuses on Dependency Management, Programming to Interfaces, Testing and Refactoring. Part III covers the SOLID principles and Part IV Dependency injection and finishing up with Coupling.

Although not a huge book at 421 pages it has taken the best part of six months for me to read and understand about three quarters of the book. I feel I will be revisiting specific chapters for a long time to come as I have only just scratched the surface with the valuable information that this book contains.

One minor criticism is that not all the code examples  can be run, you are given a fragment of code that you may wish to play with to see the different results of changing x and y or just to get a better understanding of the topic being discussed but this is not always possible. That aside this is an easy book to recommend.

MongoDB The Definitive Guide 2nd Edition

This year I have been experimenting with a number of C# console applications that that use NoSQL databases. Rather than endlessly Googling for information, I thought I would buy this books to get a good grounding in MongoDB especially when it comes to security.

I bought the 2nd edition of this book which is now out of date and I quickly lost confidence in it and returned to googling for information and using the official MongoDB docs.

Dependency Injection in .NET

Dependency injection (DI) was a technique hitherto unknown to me. Although discussed in Adaptive Code 2nd Edition I felt I need to find out more and hear what other peoples opinions.  One other point which piqued my interested was the difference when a blog post that is referenced a lot by answers on Stack Overflow describes DI in 2 pages of A4 sized paper yet there is a 400+ page book on the subject.

I bought Dependency Injection in .NET because of two reasons, firstly it is focused on .NET which I am currently learning and secondly the overwhelmingly positive reviews on Amazon.

The book is split into 4 parts. Part I naturally starts with an overview of the problem that DI solves with a simple example that is initially written without using DI followed by it being rewritten to use DI. The next chapters move on to a bigger real world example. Part one closes with a look at DI containers.

Part II covers DI patterns and then interestingly Anti Patterns and then DI Refactorings. Part III looks at DIY DI and Part IV takes an indepth look at DI containers such as Castle Windsor, Structured Map and so on.

At the time of writing I am on page 133 which is the start of the DI anti-patterns. I won’t be reading much further as I feel I have gotten as much as I can from this book for the time being but as my experience in OO languages grows I will be back to correct bad habits and learn how to get the best out of the DI containers that I may be using.

One other interesting point, is that the cover of this book has for reasons I do not know has gathered more comments from people passing by my desk than any other book I have owned!

Conclusion

I have gained much from reading these books (yes even you; MongoDB Definitive Guide) They have all added something to my skills as a developer and given me different ideas and solutions to problems that I currently face and am yet to face.

Can’t wait to see what technical books I read in 2018 will be…

New book: Oracle Incident Response and Forensics: Preparing for and Responding to Data Breaches

Looks like the first technical book for 2018 I will be reading has already be decided. Pete Finnigan has a new book coming out in early January.

Oracle-Incident-Response-and-Forensics-Book

More details from the publishers, Apress can be found here.  At the time of this post there was no preview available. Fortunately the listing on Amazon does so you can check out the contents here.

I will add a further post once I have read it.

Book Review: Introduction to Javascript Object Notation by Lindsay Bassett

 

OrJson

Whilst attending the UKOUG Tech16 conference, several of the talks I attended mentioned the use of JSON (or to give it’s full name JavaScript Object Notation) These talks made me realise how little I actually knew about this Data Interchange Format.

There are many resources for learning JSON, from websites of varying quality to paid for video courses on Pluralsight or for free on YouTube. However my favourite method of learning something new is by reading book(s) and then conducting experiments using what I have learnt. So I chose the following: Introduction to Javascript Object Notation by Lindsay Bassett.  I chose this title as it had a good review and at just over 100 pages was not going to be a door stop that I will never finish.

The book begins with an overview of JSON, it’s syntax, the available datatypes and validating your JSON documents using JSON Schema before switching gears and moving on to demonstrate how JSON can be used in client and server side frameworks and NoSQL databases.

The book was a pleasure to read, new concepts are concisely introduced and no assumptions of your knowledge are made and having now read it I am far more confident in my understanding of this latest Interchange Format.

If you are looking to get up and running with JSON it is easy for me to recommend this book.

Technical Books I have read in 2016

I have always enjoyed reading books about Programming. From books that lead you to take your first tentative steps with a new language to ones that take you on a deep dive into the world of particular feature. I especially enjoy ones that discuss language agnostic programming concepts such as debugging, estimating etc. Books like Code Complete, The Pragmatic Programmers, The Mythical Man Month and Don’t Make Me Think.

To me technical books are such a bargain. For £20 – £30 you can gain knowledge and insight that can make you so much better at your job, such as taking different approaches to solving the daily problems that we as programmers face. Without a doubt there is a lot of published rubbish out there but fortunately in these days of reviews and questions on the numerous Stack Exchange sites it is a lot easier to avoid the charlatans and their ammo pouches stuffed with silver bullets. Although as you will see from my own list, one or two may still slip through the net!

Here are the programming related books I have read this year, listed in the order that they were read.

The C# Player’s Guide (2nd Edition)

CPlayers

This is my favourite book that I have read whilst learning C#. Immediately accessible. The large format of the book along with the lucid and easy to grasp descriptions of Object Orientated topics make this my recommended book to anyone that is interested in learning C#.

Django By Example

DjangoBE

Unfortunately this book is still on the “bought but not read” pile. It is no reflection on the book I have been focusing my attention on learning C# this year.

C# 6.0 and the .NET 4.6 Framework

CNET46

At 1600+ pages this was certainly the biggest technical book I bought this year. For me it is too unwieldy to use on a day to day basis so, for the first time I have abandoned the printed version of a book and have spent the last 8 months using the e-book. Usually the eBook is open on one monitor whilst Visual Studio is open in the other. Not sure if it’s such a good book for beginners but as a reference I can see myself returning to it to look things up.

The Psychology of Computer Programming: Silver Anniversary Edition

PCP-1

I have been wanting to read this book for several years and finally got round to it. It is by a very long way my favourite read this year and it is in the top 5 all time technical books I have ever read. Although 45 years old, the ideas discussed then are still very relevant today; How we don’t read existing code to see how others have solved problems, the critical importance of having code reviews, egoless programming, estimating and setting expectations around delivery times. I could go on and on. If you haven’t read it, order it today you will not regret it. It will make you a better programmer or manager!

Learn C# in One Day and learn it well

LearnCIAD

The worse book I read this year. I have already written what I think of it here.  Not much more to add so moving on to the final book…..

Working Effectively With Legacy Code

WEWLC

The final book for this year is another classic and I have high expectations for it. Currently I am a third of a way through but I will have finished it by the end of the year. At this point I think it should be called “Working Effectively with Legacy Object Oriented Code” because a lot of the ideas in the book code are centred around legacy Object Oriented code. I will update this once I get to the end of the book.

Summary

This year marks a slight change from previous year lists in that I haven’t read any Oracle database or Application Express books. There are two reasons for this. First I don’t think there have been any unmissable Oracle books published this year (I am interested in Real World SQL and PL/SQL that was published in September 2016 however I awaiting reviews or to actually have a look through it) –  and secondly most of my spare time has been spent learning C#.

I have taken something from each of these five books this year, yes even Learn C# in a day. I know that as a result of reading these books, I will start 2017 a better programmer.

Learn C# in One Day and Learn It Well – Review

I have been learning C# and the .NET framework for a while now and have been working my way through several books; The C# Programming Yellow Book, The C# Player’s Guide (2nd Edition) and C# 6.0 and the .NET 4.6 Framework All of these books have helped me to varying degrees to get comfortable in Object Oriented programming, the C# language and the .NET framework.

When learning a new programming language, I always look to improve my knowledge of the fundamentals, so seeing an introduction to C# book that was getting good reviews piqued my interest. That book was Learn C# in One Day and Learn It Well although I am very suspicious of Learn X in Y days hours minutes titles (see Peter Novig masterly description) I ordered a copy.

LearnCIAD

At 153 pages the book is slim and can be divided into two parts. Chapters 1 through 11 cover the various building blocks that make up a programming language such as variables, arrays, condition statements as well as briefly touching on Object Orientated concepts. The second half of the book, starting on page 128 brings together what you have learnt in a project by building a Payroll programme.

I think the book is self published, obviously not an issue in itself however I felt that it could have done with an editor to catch the typos and misaligned paragraphs but these are minor irritants. The real point of this post is, can you use this book to learn C# in a Day?

In my opinion no. The main problem with this book is how brief the topics are covered. Take for example Interfaces which are discussed on pages 107 – 109. The text compares Interfaces with Abstract classes, however no where in these two pages does it tell you what an interface actually is and why you would want to create one.

In summary I am not sure who the target audience for this book is. Perhaps someone that just needs to get some course work or module “working” For everyone else it is far to brief and does not go into enough detail especially explaining why you would want to use a feature of the language. If you are interested in learning C# my advice would be to put the £8 towards a better resource.