Shipping Go [Manning]

Thanks to the (very friendly) reviewers team at Manning I just got my hands on the newly released Shipping Go, and first of all I had a great time reading from start to finish which hasn’t happened in a long time as far as IT books go.

I was actually pleasantly surprised.

  • the amount of code in the book is kept to a minimum
  • the focus is on keeping the product to a minimal set of features,
  • shows how to push a quality code out,
  • and to a various set of plateforms and environments (and why both production and developpers environment should be kept as close as possible to each other )

The book focuses and explores the lifecycle of go projects in particular, but the techniques presented can be easily reused in the scope of other languages.

Also to mentioned the quality of the book is consistently high throughout all the chapters, so nothing to throw away.

The chapters are:

Delivering value

The chapter includes no code snippet, and invites the reader to focus on the value of the project and how to create the delivery pipeline for that project and how the different parties involved should try to cooperate. This is a topic that can easily span a whole book, and the author managed to stay concise, and just like the presented value, focused to a minimum.

Introduction to continuous integration

Presents source control software and branch techniques for your code, then goes to setting up the CI pipeline. The Toyota Principles here are repeated, and nice to be reminded of, but personnaly they could have just been left outside the chapter.

Introduction to continuous testing

Details the different layers of testing (unit, integrationm end-to-end) and also has a nice part on what to test. I have seen projects where testing is just use a time-filling activities, whereas here it focus on the parts of your code you should be spending more testing time. There is also an invitation to refactor, which, I could have liked to be slightly more details, and how refactoring is a must to avoid technical debt. (and thus loss of speed, loss of revenues and all that follows) The chapter is full of small code snippets, that shows how lines of code are actually not just lines of code, but project management decision that have a direct impact on your team’s productivity and responsiveness.

Introduction to continuous deployment

Today (as of the writing of this article) was the successful launch of NASA’S artemis new space rocket. Along those lines the start of the chapter focuses on NASA delivery pipeline in all its complex layers. Then we move on to releasing the written GO software so that the customer can use it and we can start collecting feedback. Deployment is both on PAAS and FAAS, which brings a welcomed new dimenson to the Go code.

Code quality enforcement

This is a chapter valuable for any language as well. Focuses on analysis your code (locally), analysing your code (on CI), linting your code, and how to do simple and useful code reviews. This chapter also enhances the pipelines created in the previous chapter.

Testing frameworks, Mocking, and Dependencies

This chapter could as well expands to a whole book but again manages to stick to the minimum needed to have valuable tests. I was a bit surprised to see DI introduced here, but why not, it goes well in this chapter and the mocking part, especially written for GO here, can be put into action straight away.

Containerized Deployment

Explains what containers are, and why they provide consistent value throughout the project lifecycle. For people who haven’t use containers or are not used to put them at work this is a great introduction. This is maybe the chapter that could have gain openings to Kubernetes clusters, and be just a bit more than a litteral wrapper around Docker files. Consistent and nice read anyways.

Configuration Management and Stable Releases

Explains what is proper semantic versioning, and what are good variables to set in your code and here again integrates all this in CI pipelines. Also a nice finish on company culture ! But I was left hanging a bit and would have loved to hear a bit more on what the author was proposing to nurture this company culture in a full blown outro.

Voila for a quick review. Go and grab your ebook version of Shipping Go and let me know what you think!