Introduction

Aug 16 2018

Nearly all of us have thought of starting side projects, and not gone through with them. I believe that side projects are the best way to learn new skills, and build upon/display old ones.
I have been asked many times by friends, how I have so many projects, and how I follow through with them. This blog is a guide for just that, comprising of what I've been following for the past few months.

How to start

Aug 16 2018

Most ideas for side projects come to us at weird times, when starting them isn't possible. For example in the shower, or in the gym.
These ideas start dying out as time goes on, and eventually you forget that they ever existed.
The first step, you need to execute is to write this idea down, as soon as possible, no matter how silly or impossible it seems. A fitting quote I found from the movie Inception is, "Ideas are like a virus". I like to see ideas in the same way, if you don't feed the idea with more detail, it'll slowly start to die out.
The next step you should do is make the idea more concrete. Write it down in detail, and see how different parts of the idea work together.

Congratulations! You now have a base for your idea, which you can refer to if you ever get stuck.

Liability

Aug 16 2018

One of the main parts of being able to follow through with an idea, is to be held liable if you don't.
You have to set goals for yourself, which if you break should incur a penalty, such as taking your friend out for lunch. I think any friend would be happy to enforce this on you.
The goal I had set for myself was having atleast 3 not redundant GitHub commits per day on the project.
After you make this a habit, you yourself won't want to miss out on any of the goals.

Structure

When you start any project, it should have some structure to it, otherwise you'll start to lose motivation if you have really badly written code.
Sometimes it's inevitable to have poorly written code. If you ever feel that it's getting too cluttered, don't be afraid of deleting everything and starting over.
One of the most important skills in coding is not to get too attached to code because you spent a lot of time writting it.
You need to be able to learn when to hit delete, or archive.

How to make progress!

When you think of a project, and it has many parts, it's easy to get overwhelmed by it. You need to take it one step at a time, and break the project down into smaller parts.
What this does is gives you the feeling of accomplishment when you complete a part, and helps you stay motivated. It also helps give the project more structure, if you ever need to work on it in the future, or if you encounter bugs.
You should also not try to fit all features in your first release. Have only essentials, and work it up from there. If the foundation of your code is strong, adding additional features Is a fairly easy task. Over burdening yourself will only make your project complex, and might make you lose motivation.

Getting Stuck

If you don't get stuck anywhere in the project, you're doing something wrong and not challenging yourself.
The most important rules you need to learn are, "Google is your friend", and "Ask for help when you need it".
Everyone gets stuck somewhere or the other, not asking for help, or being afraid to ask for help are mistakes that should never occur. No one person can have the answers to everything. At my internship, I've seen senior software engineers working in the industry for more than 20 years get stuck and seek help.

I wish you all best of luck in completing your side projects.
You can follow some of my side projects at GitHub.com/ktech99
Happy coding!