Beginners - stop limiting your projects to things that are "useful"

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:

  1. Useful to everyone (eg may be a popular open source project), and
  2. Simple enough that they could build it as their 1st, 2nd, or even 5th project.

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.

Learn Web Development with Go!

Sign up for my mailing list and I'll send you a FREE sample from my course - Web Development with Go. The sample includes 19 screencasts and the first few chapters from the book.

You will also receive emails from me about Go coding techniques, upcoming courses (including FREE ones), and course discounts.

Avatar of Jon Calhoun
Written by
Jon Calhoun

Jon Calhoun is a full stack web developer who teaches about Go, web development, algorithms, and anything programming. If you haven't already, you should totally check out his Go courses.

Previously, Jon worked at several statups including co-founding EasyPost, a shipping API used by several fortune 500 companies. Prior to that Jon worked at Google, competed at world finals in programming competitions, and has been programming since he was a child.

Related articles

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?

See something that is wrong, think this article could be improved, or just want to say thanks? I'd love to hear what you have to say!

You can reach me via email or via twitter.

Recent Articles All Articles Mini-Series Progress Updates Tags About Me Go Courses

©2018 Jonathan Calhoun. All rights reserved.