I posted this recently on Reddit, but I felt it was important enough to post again here.
One of the most common themes I see with beginners or people learning a new language is the question “What should I build?”
The problem isn’t the question itself, but that so many people want to build something that is both:
My advice is to stop doing this. Forget about (1). Focus exclusively on (2) - finding projects that you can actually complete in a reasonable timeline.
You are much more likely to finally build that awesome open source application, or whatever else, if you accept that your first 5-10 projects aren’t likely going to be useful to anyone. They should just be something you can learn from. When you have finally learned what you are doing you can then move on to the useful applications.
The reasoning behind this is pretty simple - anything a beginner can build in a week is likely something an expert can write in a day (if that). That is just how programming works; as you get better you can do a lot more in less time because you spend less time debugging and learning and more time doing.
That doesn’t mean that this is true for everyone. There are always exceptions to this rule, but they are just that - exceptions. And the authors are likely exaggerating if they claim it was their “first” application. It was likely their 10th, but they just didn’t consider the first 9 applications “real applications”.
My first 10-20 projects were all junk. I don’t have the source code anymore, but if I did both you and I would laugh at how useless they were in their final form. But where they were useful is in teaching me how to do new things.
TL;DR - Build things that will teach you and push you to learn more, but keep the scope small enough that you will actually complete the project.
Sign up for my mailing list and I'll send you a FREE sample from my course - Web Development with Go. The sample includes three chapters from the book, and over 2.5 hours of screencasts.
You will also receive notifications when I release new articles, along with other freebies that I only share with my mailing list.
Jon Calhoun is a full stack web developer who also teaches about Go, web development, algorithms, and anything programming related. He also consults for other companies who have development needs. (If you need some development work done, get in touch!)
Jon is a co-founder of EasyPost, a shipping API that many fortune 500 companies use to power their shipping infrastructure, and prior to founding EasyPost he worked at google as a software engineer.
Spread the word
Did you find this page helpful? Let others know about it!
Sharing helps me continue to create both free and premium Go resources.
Want to discuss the article?
©2018 Jonathan Calhoun. All rights reserved.