Learning Go! (Dev Diary #1)
Tags: beginners, codenewbie, go, api
Published: 2022-10-03 16:06:04

This article is the start of a series where I track my progress with go and share my code with others. All of the tutorials, and external resources I use will be linked at the bottom of the post.

_Quick Things about me!_
- I have programmed in the past, in college.
- I have never worked as a software developer.
- I know a little (C++, Python, HTML, CSS, JS)

LinkedIn: [Austin-Higgins] (https://www.linkedin.com/in/austin-higgins/)
GitHub: [Austin-Higgins](https://github.com/Austin-Higgins)
Twitter: [@AustHiggins](https://twitter.com/AustHiggins)

---

**Why Go?**
The Syntax makes sense to my brain, it is lightning fast, and it is a compiled programming language. Being able to compile my code for multiple operating systems is important to me.

---

**End Goals**
- Understanding go through doing.
- Lots of small projects to add to portfolio.
- At least one cool project to maintain after.
- Strong focus on APIs and backend stuff.

---

**Project 1 - Web Server**
The first project comes from FreeCodeCamp's YouTube channel -> [Here](https://www.youtube.com/watch?v=jFfo23yIWac&t=5201s). If you follow along this tutorial, you will come out of it with a functional web server.

_But... what does all this mean?
Do I need to remember all this?_

No, you don't need to remember it all, but follow these rules to get the most out of it.
1. Type everything. (No copy and pasting)
2. Do not take credit for other people's work.
3. Do a little bit each day, build a habit.
4. Once it is working pick it apart, look through the code and figure out what it does.

---

**We all learn differently**
I learned a lot from this first exercise, and if you didn't that's okay... this method probably isn't for you. The main point of this dev log is to document my process, but if it helps even one person, I'll be super happy. 

This is what I learned from Project 1:
- The basic structure of a .go file.
- Validating our environment works.
- Assigning variables, importing packages, variables, functions, structs, and more.
- That anyone can take the first steps, even if they need to start with a tutorial and write things one line at a time.

---

**Roadblocks := "Learning Experiences"**
So, I followed the guides exactly and everything worked perfectly? Not Quite.
- The first web server took a couple hours.
- The crud api took a couple different sessions over two days. It was hard, but I didn't rush.
- The third project was simple, and it allowed me to take a couple steps back and understand the fundamentals better. Building an api that you can query that just says hello.

---

**Unorthodox Learning**
The learning style in college didn't work well for me, I always liked trying things out even if they failed. Working a few jobs has taught me a lot more than my education I paid for.

I realize this article may not resonate well with people who are purists, and insist on sitting down and digesting whitepapers, textbooks, or other documentation.

That doesn't work for me, and this and future articles are focused on others who are wired that way too. 

Thanks for your time! :) 
 Austin

---

**References & Projects:**
Project 1: [Here](https://youtu.be/jFfo23yIWac) (FreeCodeCamp)
Project 2: [Here](https://youtu.be/jFfo23yIWac?t=1118) (FreeCodeCamp)
Project 3: [Here](https://dev.to/karanpratapsingh/build-a-rest-api-with-go-for-beginners-3gp)(@karanpratapsingh)