How personal opensource project helped me learn GO
Tags: opensource, go
Published: 2019-01-30 10:16:17

---
title: How personal opensource project helped me learn GO
published: true
description: My GO journey in small
tags: #opensource #go
---

I loved working with C, i was looking at C as personal challenge to me, but year ago i wanted to learn something new that looks and feels like C and that was moment when i discovered GO. 

I started reading and going through GO playground, but i felt like that's not enough, how you gonna learn if you don't take practical approach and make something, tackle some problems, think about solutions and get some ideas on your own.

This was the moment i decided to create [Leprechaun](https://github.com/kilgaloon/leprechaun), it first started as small project and you can see that in first version that i released which was [0.3.0](https://github.com/kilgaloon/leprechaun/tree/v0.3.0) i can't remember why i started from this number but what the heck.

These are the first steps, you aren't in community yet, so you are going to reddit subscribing, going to youtube watching videos (Shoutout to Francesc Campoy and his youtube [channel](https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw) he helped me understand GO better and i strongly recommend it). 

At this point whole new world opened up for me. I started to discover about how to structure go project which you can take a look [here](https://github.com/golang-standards/project-layout), i started looking at some of the GO projects on GitHub wanting to learn more and more.

And there wasn't a while since i noticed a big difference between GO and other languages i was working with, i was spending more time on official GO documentation page then anywhere else, one thing that is good about GO is very very good documentations and its so easy to read i was delightful, my mind wasn't corked with partial solutions and ideas from StackOverflow, which i don't think is bad, but what is seen can not be unseen, especially when you are at start, you maybe get bonded to that idea and solution of some problem you have that you maybe have problem ditching that and thinking fresh. 

Spending more time with Go documentation i had more time to think about my own solutions, try them, experience errors and try different approaches, at the beginning i wasn't thinking about is that approach good or bad, i was trying to make my project work. 

Exploring another projects on GitHub i started to notice differences on my own project and i noticed that i like some approaches and ideas so i took them over in my own style, implemented them to try it out. When you are at the start, like i was, i can say that there is no real bad path you can take. Take every informations as a reserve, maybe it is useful maybe it's not, you will find it out later on as you progress.

Through my whole project history i made couple of overhauls for some packages since i was improving my skills in GO, i got better and more efficient ideas and that was because i was constantly reading and watching things related to GO, and i was constantly working on my project.

Then time was come, when my program started working as i intended to, it was time to ask somebody to give me some hints or whatever that will help me out. This was a moment i posted to reddit for the first time asking people for code review, honest opinions and anything that can help me. I wasn't afraid of some bad reviews coming my way i was new and i was prepared to look at everything as constructive criticism and i wanted to use that to learn more.

When i got first reviews of my code i started improving it, everything is constant improving and i dedicated myself to this project, it was taking just slight part of my time but it was giving me more, learning me to program in something, fresh and new.

Time passed and i started enjoying working with GO, i was looking forward every time i needed to do something with GO and every time i learn something new regarding GO i was feeling good, language was easy to pickup i started to feel like i know it for years and not for months.

## Summary

Starting you new project will make you experience some bad stuff, error and practices sooner then later, this will make you smarter and stronger for future projects and make you more understand whats going on behind some other code. It will create a bond between you and your project and will always push you to make it better. You will become part of community where you can experience other projects and learn from other people mistakes, find some good content and probably sometimes in free time you will thinking something like "Lets just find some good resource that has something to do with GO". And after all and what is for me my personal success is that somebody out there will find your project useful and will use it.