/Beyond-Effective-Go

Book companion source code

Primary LanguageGoMIT LicenseMIT

Beyond Effective Go

Are you a Go programmer with 6+ months of experience?

Have you learned everything you can from Effective Go and wondered what to learn next?

Then Beyond Effective Go is for you.

These books, aimed at competent Gophers, don't mess around with the basics. Instead, they dive right into the problems professional programmers face every day. Like, how to write applications and services that are fast, robust, and able to be maintained and extended as requirements change.

These books focus on both the programmer and the code by addressing four critical aspects of Go programming, developer productivity, application performance, code quality, and depth of understanding of the language and tools available.

After reading this book, you will know what aspects of your application or code to focus on and when. You will have a suite of tools, software patterns, and recipes to make your life easier and your code better, faster, and easier to maintain.

What is going on here?

The code in this repository is the companion code for this book series. The series was started a while ago, and due to, well, life issues, it was not completed then. This book was initially titled "Advanced Go" and was to be written under contract with Packt. However, because of the delay, this is no longer the case. I am now attempting to complete this work as a series of books in my spare time between other work and life commitments.

As you will see by the chapter statuses (below), it is a work in progress.

With that out of the way, I want to request help. I find no greater reward for my writing than knowing that I have helped someone learn; thus, I invite you to help me finish this book by reading any of the chapters below and letting me know your thoughts. Similarly, if you have read a completed book, please leave a review (good, bad, or ugly) on your favorite bookstore's website. I am absolutely looking for positive and negative comments (preferably in the form of constructive criticism).

If something needs more explanation, please tell me. If something needs less explanation, please tell me.
If something needs an example, please tell me.

Like software, the earlier problems are identified, the easier they are to fix. And once something is published, it can't be easily changed. Please check the appropriate link and request access to the individual chapters.

Structure

This book series is (currently) organized into 3 books:

  1. Achieving High-Performance Code
  2. Striving for High-Quality Code

Part 1: Achieving High-Performance Code

This book focuses on writing blazing-fast code because sometimes we need to extract every last drop of performance from our system.

Chapters:

Chapter Title Status Link
1 Understanding Concurrency, Parallelism, and the Sync Packages Published Purchase Book
2 Applying Expert-level Go concurrency: Primitives, Patterns, and Tools Published Purchase Book
3 Achieving High-Performance Code Published Purchase Book

Part 2: Striving for High-Quality Code

This book discusses writing eminently readable, maintainable, and extendable code. In most applications, the code's quality determines how easy it is to maintain and extend and how much we will enjoy doing so. At the end of the book, I've also included some interesting "other" things you can do with Go, like functional programming and metaprogramming. These don't necessarily directly lead to quality, but they can lead to productivity and improved language understanding.

Chapters:

Chapter Title Status Link
4 Exploring Software Design Principles and Patterns Editing Pre-order link coming soon!
5 Optimizing for Code UX Editing Pre-order link coming soon!
6 Advanced Unit Testing Techniques Editing Pre-order link coming soon!
7 Improving your Development Productivity Editing Pre-order link coming soon!
8 Examining Unusual Patterns for Go Editing Pre-order link coming soon!
9 Metaprogramming Editing Pre-order link coming soon!

If this content is your kind of thing, consider joining my Google Group (very low traffic and no spam). Book updates will be posted there.