How you can stay motivated to work on personal projects
Tags: opensource, career, javascript, motivation
Published: 2020-08-17 14:33:30

After my last post ([How I became a senior javascript developer with personal projects](https://dev.to/afonsopacifer/how-i-became-a-senior-javascript-developer-with-personal-projects-1lpo)), I received a good question that got me thinking: 

# What keeps you motivated?

I believe this is a simple but deep question. Many people start new side projects and get very excited at the beginning, but after a few days, the energy is gone. WTF happen?

Recently I’ve read an excellent book called [14 Habits of Highly Productive Developers](https://14habits.com/) (by my friend [Zeno Rocha](https://twitter.com/zenorocha))  which has a complete discussion about the side projects’ topic. I recommend all developers to read the entire book. But, in this blog post, I’ll try to explain how I’m still motivated by my personal projects in the last years. Starting by demystifying an idea.

> *I don't complete all of my side projects!*

Yes, you read correctly. **I have many unfinished side projects in my Github account and everything is fine**.

The process is the same:

- First: I have an awesome idea (in my mind).
- Second: I create a repository and start the project in my code editor.
- Third: I abandon the project.

# Tips to complete your side project

I have a list of private empty repositories, **but I also have a list of projects that are done.** If you have more drafts (or ideas) than finished projects, I have some tips that may help you.

## Think hard if you really want to do a project

During the first moments after an idea, you are full of motivation, but how do you know if this motivation will exist tomorrow? Simple, wait for tomorrow! If you still want to work on the new project, just START.

![Pomodoro timer](https://dev-to-uploads.s3.amazonaws.com/i/aycurl2iy19sfdqd2zv9.PNG)

> I create a [Meditation Timer](https://afonsopacifer.github.io/vue-meditation/) to keep calm before important decision moments (and learning Vue.js better).

> **Tip:** If you have energy and time, enjoy the moment and do it. Only wait for tomorrow if the project scope is large!

## Create a checklist and follow it

Don't spend time/energy thinking or trying to remember common things for all projects. 

- If your project needs a Readme, take note.
- If your project needs to publish in npm (or similar package registry), take note.
- If your project needs a .gitignore file, take note. And etc...

![checklist for open source projects](https://dev-to-uploads.s3.amazonaws.com/i/w5m9mqpkybevn9i5w645.PNG)

> My [checklist for open source projects](http://afonsopacifer.github.io/open-source-checklist/).

> **Tip:** If your project needs a cool name, use a beta name, and rename when you decide it, don't spend time overthinking the name instead of starting the project.

## Have a generic boilerplate

Don't spend time/energy creating the same files all time.

> **Tip:** Get ideas from your old projects or ask your friends: **how files are commons in all projects.**

Yes, creating a boilerplate is a cool first project for you to start.

![My boilerplate to open source projects](https://dev-to-uploads.s3.amazonaws.com/i/mgva700i2gcy3k7cblby.PNG)

> My [generic boilerplate](https://github.com/afonsopacifer/open-source-boilerplate).

## Don't try to learn more than one new technology at the same time

Starting a new project for learning a new technology is the best decision you can make. But you need to consider the learning curve for any new thing you want to implement. **If you add multiple learning curves in your project, you’ll probably spend more time on the project and increase your chances to be demotivated** due to all problems related to the learning process.

![My incomplete calendar project](https://dev-to-uploads.s3.amazonaws.com/i/38xdbqd7z28mlabmmcbf.PNG)

> I don't conclude this [calendar](https://github.com/afonsopacifer/react-calendar) project because I try to learn (and implement) a lot of new technologies at the same time.

## Dedicate time (with quality) to your project

**Don't wait for the inspiration moment**, organize your time to work in your project as if it was your main job. Turn off all notifications and previously select an inspirational playlist to help you focus.

![Pomodoro timer](https://dev-to-uploads.s3.amazonaws.com/i/0ldn7ewf3p6miwe0h703.PNG)

> I created a [Pomodoro Timer](http://afonsopacifer.github.io/react-pomodoro/) for you to focus on your tasks (and learning React.js better).

## Define a scope for the project and follow it

In my previous blog post, I shared big projects, but this project was created for one year. Within this period, I worked in a lot of small projects and **the most powerful trick for all size projects is to determine a scope of features and follow them**.

![Kanban board](https://dev-to-uploads.s3.amazonaws.com/i/qi5civtglaoemr22c45q.jpg)

During the working, if you have a new incredible idea, take note and get back to the scope. Believe me, big companies have problems when spending more energy than necessary on their MVPs.

## Share

Post your project on twitter, Instagram, Facebook, write a blog post about the process or share with a friend.

![Afonso Pacifer Github profile](https://dev-to-uploads.s3.amazonaws.com/i/z4eq0n4ht7smb52cwum8.PNG)

> My [personal Github profile](https://github.com/afonsopacifer/).

Don't worry about possible critics about your code, serious developers will help you, not attack you. Share your project and grow with the comments.

# Conclusion

To be exposed to new challenges is scary, but great rewards await for people who can take great steps. **Creating and sharing your side projects are one of the greatest steps in a developer career**.

I'm from Brazil and in my country **[only 5% of the population speak English](https://www.terra.com.br/noticias/dino/95-da-populacao-brasileira-nao-fala-ingles,9f848f68ed451de99742216570b7ccf9gc7gj8du.html#:~:text=Pa%C3%ADs%20ocupa%20a%2041%C2%AA%20posi%C3%A7%C3%A3o%20num%20ranking%20de%2070%20pa%C3%ADses&text=De%20acordo%20com%20levantamento%20feito,apresenta%20algum%20grau%20de%20flu%C3%AAncia.)** (The official Brazilian language is Portuguese), and I was always part of the 95%.

![Afonso Pacifer studying with your cat](https://dev-to-uploads.s3.amazonaws.com/i/6g3zjookf8onjxnwzazz.jpg)

Writing in English is hard for me, but this is my new side project: to improve my English skills to meet new people and friends around the world!

Now, I'll share some of the places where people were reached by my first English blog post a week ago:

![World map](https://dev-to-uploads.s3.amazonaws.com/i/arhd9ifbuasxhep33plt.png)

> I received many responses, I couldn't compile all the places on this map! Thanks a lot :yellow_heart:.

I cannot express my emotion when I see this result after my effort to learn English.

Remember, **open source is not only about sharing code but is also about sharing experiences and solutions for different people regardless of the nationality or the background!**

Thanks a lot for reading my second English blog post.

If you liked this content, follow me on [Github](https://github.com/afonsopacifer) and/or [Twitter](https://twitter.com/afonsopacifer) :purple_heart:.

Cheers.