Overcoming the Tutorial Gap and Making Your Own Software
Tags: beginners, discuss, productivity
Published: 2019-02-05 16:30:45

---
title: Overcoming the Tutorial Gap and Making Your Own Software
published: true
description: How to take the next step in the software development journey.
tags: [beginner, discuss, productivity]
cover_image: https://thepracticaldev.s3.amazonaws.com/i/cc8aju9sj87cf45evyfi.jpeg
---

When learning to code, it's easy to fall into what some have named the "Tutorial Rut". There's so much to learn and so much content to follow along with that you churn out tutorial after tutorial, running through the motions and working out your fingers without getting to the root of software development and tapping into the flow of creation.

Following along with a tutorial takes out a lot of the hard parts of software creation -- you already know what you're going to build and when you're stuck, you have the answer right in front of you. When you're making something from scratch, you may have a vague idea of your project, but you don't know every feature that will be implemented.

I know I've been there. Here are some of the things that help me.

## Take Part In The Community
Go to meetups! Talk to other developers. They've all been where you're at. You'll have a chance to meet like-minded people, eat free food, and hear speakers present on interesting and new ideas. Plus, the organization hosting the meetup is probably hiring.

## Go to a Hackathon
Hackathons are awesome and exhausting. You're surrounded by a whirlwind of development and creation, you have a team of volunteers who are there to help you be successful, and you get free food and swag! I can think of no better way to get experience with coding than by taking place in a hackathon.

Even if you don't feel comfortable coding, you can still help with the presentation and with the documentation of the product. It's a perfect, low-stakes environment to be a part of a programming team and something you can bring up in interviews or put on your resume.

## Make Jokey Arty Things
The apps and websites you use every day have entire teams dedicated to portions of their app that you've never even thought of. You're not going to become a DevOps expert overnight, so why not use the tools you have to make something fun? Go to a site like codepen.io or glitch.com and put up a fun little code snippet. Focus on making something visual instead of moving data around.

Here's an idea: [recreate 10Print](https://www.makeartwithpython.com/blog/10-print-in-python/) and show off how you can create your own universe. Or make [Purple Rain](https://www.youtube.com/watch?v=KkyIDI6rQJI) Or just mess around! (note: don't follow these like a tutorial. that's against the rules of this article.)

## Get Inspired (and Rip Something Off)
Instead of thinking about what would be cool to build (vague), or trying to imaging what could be a billion dollar app (yeah right), pick an existing product that you use and recreate it.

* airbnb.com
* twitter.com
* tinyurl.com
* dev.to (@ben)
* news.ycombinator.com

Here's the secret -- there's absolutely no way your app will be better than theirs. They have had time and developers on their side, and they probably know more about the space they're in than you do. What you get is a guiding light that you can refer to, and a site that you can inspect and check out the code. If it's open source, even better! You can dig into the repo and see exactly how they made the thing that you're making now.

## Write About Your Project
Measure twice and cut once. It does feel great to enter into the terminal "rails new my-blog" or "npx create-react-app my-blockchain" and start typing up some code willy-nilly, but in reality, most work that developers do is debugging, testing, documenting, or thinking about and designing the code they want to write rather than mindlessly hacking away in their IDE.

Think about your project -- what you _really_ want to make -- and write down exactly what features you are going to include. Put this into a document called a "Product Spec." Product Specs turn in pseudo code turn into real code. Writing a product spec helps you design your project and come across potential pitfalls that are much better to make early on instead of after you've been programming for two weeks and realize you have to throw everything out and start over.

For more help and wisdom, check out [Joel Spolsky's blogposts] on writing product specs(https://www.joelonsoftware.com/2000/10/02/painless-functional-specifications-part-1-why-bother/). He's one of my favorite tech writers, and he was a Program Manager at Microsoft working on Excel as well as founded Trello and StackOverflow. 

## Make Something 50 Times
Not a joke. Take something simple that you do know and write it 50 different ways. Vi Hart wrote about her experience writing [Fizz Buzz](http://vihart.com/fifty-fizzbuzzes/) fifty times demonstrating how setting constraints can be liberating, and how 

## Have Fun
Play around with your language of choice's REPL. Open up Vim and try to exit it. Change this article's title in your browser to "poop." Get cowsay to say something to you whenever you start up the terminal. Have fun! Coding is a creative and fulfilling endeavor, and you should take the time to enjoy the fruit of your labor.

Now go out there and make something!