After my last post (How I became a senior javascript developer with personal projects), 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 (by my friend Zeno Rocha) 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.
I create a Meditation Timer 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...
My checklist for open source projects.
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.
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.
I don't conclude this 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.
I created a Pomodoro Timer 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.
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.
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 (The official Brazilian language is Portuguese), and I was always part of the 95%.
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:
I received many responses, I couldn't compile all the places on this map! Thanks a lot 💛.
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 and/or Twitter 💜.
Cheers.
Oldest comments (41)
Nice work! I don't often leave comments on others' posts, but the "share" section of this article flows really well with a list of resources I compiled in one of my own articles. I think it's useful for anyone interested in this post, so I'll copy and paste that section here so people don't have to click away:
There are a lot of platforms to post your project to for free. The ones that have worked best for my JavaScript-based repo (in order) are r/javascript and r/webdev on Reddit, Cooperpress- which runs the the biggest coding email newsletters (contact here), Dev.to, Hada News, Echo JS, Hacker News, Product Hunt, Twitter, Facebook, and LinkedIn. Lobsters is an invitation-only community that I don't have an in with yet, but you can post there as well if you do. If your repo is JavaScript-based like mine, you can also post to JavaScripting once you reach 80 stars. Even interacting with other users' repos on GitHub through contributions/stars/follows can lead to visits to your own repo. Don't overdo it with GitHub interactions though; you'll get flagged or banned or spam.
Nice tips!
Thanks for sharing your content awesome here <3
Same to you :)
There are a lot of important things here,
We don't need to worry about attacks from other developers, serious developers don't do it and we need to respect just serious developers
It is a most important thing about open source projects and because it we got to where we are now.
Motivation can be a problem, is hard to keep it high, but sometimes we don't need motivation, we just need discipline.
Thanks for your text.
Thanks for your feedback!
Your tip about discipline is awesome!
Thanks a lot for share <3
It's also worth noting that you shouldn't judge yourself if you don't feel like working on side projects. This is the same thing they teach you when you start exercising too, or trying to do anything out of "discipline" that you don't necessarily care about (at least initially).
Perfect!
Being a good practice does not mean being mandatory!
This awesome and very current image passed my LinkedIn stream. It applies to the very topic of finishing :
One rule I've learned: either do a project to learn, or do it to ship. Never combine both reasons.
Olá Alfonso tudo bem?
Loved what you said at the end. I think that's the true spirit of Open Source.
I do have a question though, since you mentioned to list out the requirements for a project, how to not get overwhelmed when you see that there's too much to do on the project?
It happens to me more than I'd like to admit ha.
Awesome feedback bro <3
If you need to create a lot of things to start any project, you can automate the scaffolding process using Yeoman, Slush, or plopjs!
These tools can help you <3
Thanks a lot for the advice 😁
This happened to me a lot before. To day, I use to write down everything that I need, and then I divide the project in releases. At the beginning, I tackle a lot of things for the "future" release, and for the "first release" I take onlywhat is very necessary. The first release is far from good but at least it's a working system. Then I iterate over and over with the exact same process. You grow step by step, and If you want to take a break after a release, do it and you will come back with a lot of new ideas, energy...
By doing this I have a lot of benefits, and one very important (of course keep the motivation and so one), but I boosted my creativity!
Very decent post and really good advice! By the way, your projects look fantastic and they’re amazing inspiration on what you can do with simple ideas! Keep up the good work.
Thanks <3
I really appreciate the way you share your opinions and put yourself outside of comfort zone, it's a non-return path to grow as a person and professional.
Thanks for this amazing second post! Keep growing.
Thanks bro! <3
Nice article! What I find really helps my motivation is a Trello board, with only a few things in a Sprint Backlog loss list - 3, tops. Have only 1 item in the In Progress list at a time and give yourself discussion notes as you go.
Finally moved it to a Complete list. So satisfying when you always have a short to-do list and a long completed list!
Wow... Awesome tips <3
Hi Afonso, That's amazing
Loving to see how you motivate yourself, and I do myself practice many of the elements discussed here!
Thaaankkkss <3
I must say, your English is excellent
heheh... Thanks!
I'm still studying <3
Thanks for the tips, they're really useful!
I'm facing problems to start my side projects but I'm going to consider these points in the next time :)
Wow...
Awesome <3
Great Post saving for later to try some of that tips you suggested! Thanks for sharing
Thaanks <3
This awesome! I've been feeling the same in terms of side projects (I have 1) and also I want to push myself to write an article in english about serverless and some other cool stuff I've seen in re:invent for the last 4 years but the point is to include a project where people can put hands on.
Muchas gracias Alfonso (asumiendo hablas español y no portugues)
Gracias <3
Writing in English is very awesome!
Send me the article when you publish :)
Afonso, teu Ingles ta otimo! Couldn't even tell it was just your second English article.
Thank you for writing this! I'm someone who struggles to get my own projects up and running, but this was incredibly motivating.
Out of curiosity, what makes you a "Former full-time CSS evangelist"?
Thanks <3
what makes you a "Former full-time CSS evangelist"?
Basically I focused 100% of my time with CSS content creation (to help the Brazilan community). Writing articles, record videos, etc...
Great works dude! I really like your ideas :)
After reading your post, im planing to grab my side projects which suspended because of my working plan 😂
Awesome!
Let's go (and share)!