Skip to the content.

From Infrastructure to Application: My Journey to Learning Golang

For a while now, I have been contemplating the state of the infrastructure side of technology. Over the years, it has become increasingly apparent that infrastructure has largely become a commodity. We have a handful of platforms available to us for running our critical applications and data, ranging from physical and virtual environments to cloud and cloud-native platforms such as serverless and Kubernetes. However, the key metric driving change in the tech landscape has not been the infrastructure itself, but rather the application.

The Importance of Applications and Data

The most important aspect of technology for any business is the application and the data it handles. Applications drive business processes, and the data they generate and process is invaluable. Understanding how applications are built and function is becoming crucial for anyone involved in the tech industry.

Why Golang?

In the short term, my goal is to learn Golang, a powerful programming language that’s gaining popularity in the cloud-native ecosystem. Our own cloud-native tool is built using Golang, and I believe that having even a basic ability to read and understand Golang code will be instrumental. It will enable me to provide better feedback, understand system behavior, and contribute more effectively to discussions around our tools and technologies.

My Learning Path to Master Golang

To achieve my goal, I have devised a comprehensive learning path that will take me from an absolute beginner to being able to build demo-level applications with Golang. This path includes understanding the fundamentals of programming, diving into Golang, practicing coding, exploring DevOps integration, and finally, building and deploying a full application.

Step 1: Learn Programming Fundamentals

Before diving into Golang, it’s crucial to grasp the basics of programming. I will start with:

  1. Programming Basics:
    • “Python for Everybody” by Dr. Charles Severance - This free course is a great introduction to programming using Python, covering basic concepts like variables, loops, and functions.
  2. Introduction to Computer Science:
    • “CS50’s Introduction to Computer Science” by Harvard University - This free course uses C, Python, and JavaScript to teach fundamental programming concepts.

Step 2: Start Learning Golang

Once I have a grasp on basic programming concepts, I will start learning Golang specifically.

  1. Online Courses and Tutorials:
    • “Go Programming Language” by Todd McLeod - A comprehensive course on Udemy covering the basics to advanced topics in Golang.
    • “Golang by Example” - A free resource that provides examples and explanations of Golang concepts.
  2. Books:
    • “The Go Programming Language” by Alan A. A. Donovan and Brian W. Kernighan - A highly recommended book for learning Golang from scratch.
    • “Head First Go” by Jay McGavren - A beginner-friendly book that makes learning Golang engaging and fun.

Step 3: Practice Coding in Golang

Practicing coding is essential. Here are some platforms and projects to help me practice:

  1. Interactive Coding Platforms:
    • LeetCode - Practice coding problems and challenges in Golang.
    • Exercism - Offers Golang exercises with mentoring.
  2. Build Small Projects:
    • Basic CLI Tools - Start by building small command-line interface tools to get comfortable with Golang syntax and libraries.
    • Web Scraper - Build a simple web scraper to understand HTTP requests and HTML parsing in Golang.
    • REST API - Create a basic REST API using Golang’s built-in net/http package.

Step 4: Understanding DevOps with Golang

To integrate Golang into my DevOps practices, I will explore the following areas:

  1. Docker and Kubernetes:
    • “Docker and Kubernetes: The Complete Guide” by Stephen Grider - A comprehensive course on Docker and Kubernetes.
    • “Kubernetes Up & Running: Dive into the Future of Infrastructure” by Kelsey Hightower, Brendan Burns, and Joe Beda - A comprehensive book on Kubernetes.
  2. Continuous Integration/Continuous Deployment (CI/CD):
    • “Jenkins, From Zero To Hero: Become a DevOps Jenkins Master” by Ricardo Andre Gonzalez - A practical course on Jenkins for CI/CD.

Step 5: Building Web Applications with Golang and UI Frameworks

After mastering Golang, I will start building web applications and integrating UI frameworks.

  1. Web Development with Golang:
    • “Web Development with Go” by Jon Calhoun - A course that covers building web applications with Golang.
    • “Build Web Application with Golang” - A free eBook that covers various aspects of web development using Golang.
  2. UI Frameworks:
    • HTMX: A modern framework to build interactive web applications with less JavaScript.
    • Vue.js or React: For more advanced UI frameworks, I might explore Vue.js or React.

Step 6: Build and Deploy a Full Demo Application

Combining my knowledge, I will build and deploy a full application:

  1. Project Idea: Create a task management web application with a Golang backend and HTMX for the frontend.
    • Backend: Use Golang to create RESTful APIs.
    • Frontend: Use HTMX to handle UI interactions.
  2. Deployment:
    • Deploy the application using Docker and Kubernetes.
    • Set up CI/CD pipelines for automated testing and deployment.

Total Estimated Time

Based on my estimates, the total time required for this learning path is roughly between 630 and 980 hours. If I dedicate 40 hours per week, it will take approximately 16-25 weeks. Studying part-time at 10 hours per week will extend this to 63-98 weeks.

Conclusion

By following this structured learning path, I am confident that I will gain a solid understanding of Golang and the skills necessary to build and deploy demo-level applications. This knowledge will not only enhance my ability to understand and contribute to our cloud-native tools but also prepare me for the future, where understanding applications and their development is key.