With technological advancements, fast markets, and higher complexity of systems, software engineers tend to skip the uncomfortable topic of software efficiency. However, tactical, observability-driven performance optimizations are vital for every product to save money and ensure business success. With this book, any engineer can learn how to approach software efficiency effectively, professionally, and without stress. Author Bartłomiej Płotka provides the tools and knowledge required to make your systems faster and less resource-hungry. Efficient Go guides you in achieving better day-to-day efficiency using Go. In addition, most content is language-agnostic, allowing you to bring small but effective habits to your programming or product management cycles. This book shows you how
some parts are just repeated basics from CS which might be relevant for juniors while some parts are very advanced and not very aplicable to real life scenarios. Book could be easly 50% shorter for same amount of information due to its verbosity and repeated points.
I went in thinking I’d find a source of insights on Go internals and Go-specific techniques to write efficient code. Sadly, this book is all over the place. There’s a 30-page Go tutorial. 2 chapters are dedicated to motivating writing efficient code, and documenting requirements. There’s tutorials on pprof (complete with a list of command flags you can pass to specify the output format of graphs generated with it, such as SVG and PNG), and on instrumenting Go code with OTel. These are all important, useful topics. But it’s not “Efficient Go”. In other words, this book feels like it should have been 3 different books and a handful of essays/ blog posts. Those are the issues at a macro level. There are also some problems when you focus on the writing itself. There are paragraphs that could have easily been single phrases, and the grammar issues (such as the omission of articles and prepositions, common in non-native English speakers from Eastern European countries) are very distracting. The sad part is I can see the author is really passionate about the topics in the book. I don’t fault him for the problems I found - ultimately, he has useful knowledge and I thank him for sharing it, but O’Reilly failed him (and us readers) with the editing team. They should have helped the author converge towards a more defined audience and set of topics. There are some gold nuggets in this long book, but I suspect if you’re an advanced reader you’ll find yourself skimming through most of it. On the other hand, if you’re a complete beginner to programming, you’ll find the tutorials useful, but the more advanced parts could be confusing.
Probably a really great book for someone just getting into software development with Go, but if you’ve been in the field for a while, a lot of the go bits should be fairly obvious. There’s a good amount of interesting Linuxisms, especially around performance. There’s author makes the case that most production software runs on Linux even if you develop on something else so you should understand these internals (I agree!) — but I didn’t expect so much of a Linux and comp sci deep dive from a book titled Efficient Go.
Such an underrated book. As a software engineer working at a trading company using Go, the knowledge in this book is incredibly valuable to me. From fundamental concepts like hardware (CPU, RAM, etc.) to advanced tools such as micro-benchmarking, macro-benchmarking, and profiling — it has helped me a lot in writing efficient Go programs.
What I liked most was the section on continuous profiling. It gave me an ‘aha moment’ — exactly the kind of insight I’ve been looking for to become a better programmer, especially in Go.