DEV Community

Chemeres Miriam
Chemeres Miriam

Posted on

Learning Go From Scratch: My Journey as a Beginner Developer

My Journey into Go: What I Learned as a Beginner

Starting a new programming language can be both exciting and challenging. For me, learning Go (Golang) has been an interesting part of my journey as a software developer.

When I first started learning Go, I knew that it was popular for backend development, APIs, cloud services, and systems programming. But understanding the language through actual coding exercises was a completely different experience.

In this article, I want to share some of the things I have learned as a beginner in Go, the challenges I faced, and what I am looking forward to learning next.

Why I Started Learning Go

As a software development student and apprentice, I wanted to strengthen my backend development skills.

Go caught my attention because it is:

  • Simple and readable
  • Fast and efficient
  • Designed with concurrency in mind
  • Widely used for backend and cloud applications
  • Supported by a strong standard library

I also wanted to challenge myself with a language that approaches programming differently from languages I had previously used.

Starting With the Basics

Like any programming language, I started with the fundamentals.

Some of the first concepts I worked with were:

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!")
}
Enter fullscreen mode Exit fullscreen mode

From this simple program, I began learning about:

  • Packages
  • Functions
  • Variables
  • Data types
  • Loops
  • Conditional statements
  • Strings
  • Arrays and slices
  • Maps

Although these concepts may look simple, writing them repeatedly helped me understand how Go approaches programming.

Functions

One of the concepts I practiced a lot was writing functions.

For example:

package main

import "fmt"

func add(a int, b int) int {
    return a + b
}

func main() {
    result := add(5, 3)
    fmt.Println(result)
}
Enter fullscreen mode Exit fullscreen mode

Go makes function definitions relatively straightforward.

I also learned that functions can return multiple values, which is a feature I found particularly interesting:

func divide(a, b int) (int, int) {
    return a / b, a % b
}
Enter fullscreen mode Exit fullscreen mode

This becomes especially useful when handling errors and returning results from functions.

Working With Slices

Slices were another important concept for me.

A slice allows us to work with a flexible collection of values:

numbers := []int{10, 20, 30, 40}

numbers = append(numbers, 50)

fmt.Println(numbers)
Enter fullscreen mode Exit fullscreen mode

Understanding slices helped me when working on algorithms and manipulating collections of data.

Learning Through Algorithms

One of the biggest parts of my Go learning experience has been solving algorithmic problems.

Instead of only writing simple programs, I had to think about:

  • How to break a problem into smaller parts
  • How to manipulate data
  • How to improve my logic
  • How to handle edge cases
  • How to debug unexpected results

This taught me an important lesson:

Programming is not just about knowing the syntax. It is about learning how to think through problems.

Sometimes the hardest part wasn't writing the Go code. The hardest part was understanding the problem and deciding how to approach it.

Debugging

Debugging has also become an important part of my learning process.

When my program doesn't work, I try to understand why instead of immediately changing random parts of the code.

For example, I learned to use simple techniques such as:

fmt.Println(variable)
Enter fullscreen mode Exit fullscreen mode

to inspect values while my program is running.

I also became more comfortable reading compiler errors and using them as clues.

At first, error messages could be frustrating. Eventually, I started seeing them as part of the learning process.

Git and Go Projects

Learning Go also gave me more opportunities to practice Git and GitHub.

While working on projects, I learned about:

  • Creating branches
  • Making commits
  • Rebasing
  • Resolving conflicts
  • Pushing changes
  • Organizing project structures

For example:

git status
git add .
git commit -m "feat: implement sorting algorithm"
git push
Enter fullscreen mode Exit fullscreen mode

Git became more than just a tool for saving code. It became part of my development workflow.

One of My Biggest Lessons

One thing I have learned from programming is that struggling with a problem doesn't mean you are bad at programming.

There were moments when I could look at a problem for a long time without knowing how to solve it.

Instead of giving up, I started breaking the problem down.

I would ask myself:

  1. What exactly is the problem asking?
  2. What input do I have?
  3. What output do I need?
  4. What steps can transform the input into the output?
  5. Can I solve each step separately?

This approach has helped me become more confident.

What I Want to Learn Next

My Go journey is still beginning.

I want to continue learning:

  • Structs and interfaces
  • Error handling
  • Goroutines
  • Channels
  • HTTP servers
  • REST APIs
  • Databases
  • Authentication
  • Testing
  • Building production-ready backend applications

Eventually, I want to use Go to build complete backend systems and connect them to modern frontend applications.

Final Thoughts

Learning Go has taught me much more than just another programming language.

It has helped me improve my problem-solving skills, understand algorithms better, become more comfortable with debugging, and appreciate the importance of writing simple and maintainable code.

I'm still learning, and I definitely don't have everything figured out yet.

But that's what makes the journey exciting.

Every project, error, debugging session, and solved problem is another step forward.

If you're also learning Go as a beginner, keep going. Don't worry about understanding everything immediately. Write code, make mistakes, debug, ask questions, and keep building.

That's how we grow as developers. 🚀

go #golang #programming #softwaredevelopment #backend #learningtocode

Top comments (0)