Introduction
Welcome to the first post in the series of Engineering Advices. In this series, I plan to share some of the advices that I have learned or received over the years. These advices have helped me in my journey and I hope they help you too.
Let’s start with the first advice.
Learning Through Building
This is the most basic and simplest advice that I can give to anyone. The best way to learn something is by doing it. You can read all the books, watch all the videos, but nothing beats the experience of building something yourself.
The challenges you face while building something will teach you way more than any book or video can. You will learn how to debug, how to optimize, how to scale, how to maintain, and so much more.
“The best way to learn is not when everything goes right, but when something goes wrong.”
I live by this quote. Some of my best learnings did not came when I was able to follow a tutorial or a guide, but when I was stuck with a problem (or commonly known as a bug) and I had to figure out a solution to debug it. This is where the real learning happens.
Mind you that I am not saying that you should not watch video tutorials or read books. They are a great way to get started and to understand the basics. But if you really want to master something, you have to build something with it.
My recent experience
I have been working in JavaScript land from quite some time now and I wanted to explore something new and Golang was the perfect choice. I started by reading the official documentation to understand the language semantics and followed few videos to understand the basics.
Once I had a decent understanding of how the language works, I started building a small side project called git-sync
↗️. This project is a simple CLI tool that syncs my GitHub repositories to my a local server where I store them as backups. The use-case was simple and perfect for me to implement what I had learned in Golang.
While building this, I learned so many new things that I never came across in the videos or while skimming through the basic documentations. And hence I advocate for learning through building.
Another example is recently I came across Codecrafters ↗️, a platform where you build projects to learn new languages.
Not a Sponsored Post
Before I proceed further, I want to clarify that I was reached out by the Codecrafters team to try out their platform but I am not being paid to write this blog.
I spend time with the platform myself and tried out some of the projects from their catalog. I genuinely liked the idea and hence I am sharing it here.
That being said, I do have a referral link that you can use to get a discount on their platform. If you are interested, you can use this link: Codecrafters Referral ↗️ .
I tried out their Build your own shell ↗️ project and it was quite interesting to build some of the shell commands in Go. Here’s the link to my attempt: github.com/AkashRajpurohit/codecrafters-shell-go ↗️. I am planning to try out more projects from their catalog whenever I get some free time.
That being said, I hope you got the point that I was trying to make. Make sure next time you are spending more time on the keyboard building things and much better if you are building something that you are passionate about or something that solves a problem for you.
If you have any questions or comments, please feel free to reach out to me on Twitter ↗️ / Reddit ↗️ or in the comments box below.
I will be sharing more advices in the upcoming posts. See you in the next one. Until then, happy building! 🛠️