DEV Community

Cover image for Finding Ideas for Programming Side Projects
Sam Jarman πŸ‘¨πŸΌβ€πŸ’»
Sam Jarman πŸ‘¨πŸΌβ€πŸ’»

Posted on • Originally published at samjarman.co.nz

Finding Ideas for Programming Side Projects

So you want to get better at a certain language or expand your toolbox, and you’ve heard side it’s good to blog about them or open source the finished(ish) project. Great! But you just don’t know what to work on. Nothing is coming to mind and you’re not really sure where to start. Today I humbly present to you three ways to find ideas for side projects, and hopefully you can find something to sink some time in to!

Practice What You’ve Learned

The first option I present to you is to simply practice what you’ve learned in other projects, at university/school/college/etc or at work. Don’t break any company rules or anything (such as taking code off work computers etc etc), but try to set up similar technologies, like your database or task managers at home and see if you can do some basic operations. It’s a great way to fill in the cracks of knowledge, and re-affirm what you learned previously. It’s also great to test out newer versions of these technologies to see if they have anything that could be of benefit to the original project.

Example: I was playing with some new iOS API and found something we could use at work. I suggested it to my team and it went on the backlog.

Automate Your Life

Is there some website you check every day? Some forum? Weather site? A subreddit? Your great aunt's blog on restoring wooden furniture? Whatever it is, a good project is to try make a script that gets the information you want for you, and presents it to you in a practical way for you, such as an email, tweet, RSS feed. Do this every weekend and after a few months your life will be even smoother. You’ve learned something, had fun(hopefully!) and made your own life easier.

Example: I once had a friend who lived in a run down apartment. His shower took a few minutes to actually warm up when turned on. So he rigged up a small microcontroller to detect temperature and it sent him an SMS message once it was hot (somewhere in between 2–5 minutes after turning on)

Explore APIs

A further generalization of the above is to explore some APIs. Almost every company who has a software offering has a public-facing API. This could be anything from Google for maps, to Twilio for SMS to Flickr for Photos.

A great place to start looking for APIS you can interact with is ProgrammableWeb or just a simple Google search. Then just scroll through some and see what comes up, and see what inspires you. Try mix and mash 2 or more apis to generate something new. Heck, you might even have something worth selling to consumers once you’re done. For example, Buffer, is a whole company built on top of APIs. But the automation they provide is so valuable that they’re able to charge.

Example: Just scrolling through ProgrammableWeb, I see the Flickr API and the Twilio API. I’m sure there’s people out there who want the latest cute dogs messaged to them every day. Could be a fun project! (Tweet me if you end up doing it!)

Once you’re done with your project, don’t forget to blog about what you learned and have a go at open sourcing it!

I wish you all the best with your projects!

This is the 13th post in my Junior Developer Diaries blog series. I’m writing more every week, and you can sign up to my mailing list to hear more, and read previous posts on my website.

Latest comments (36)

Collapse
 
bansalsuv profile image
Suvansh Bansal

Brilliantly put, Sam! We used the first 2 principles while building remote.tools :)

Not only did we have information about 100+ remote-friendly products ready with us. We only had to create a repository on WordPress, which we did in around 15 days. The best part is that we still use the repository every other week for different use-cases.

The experience was so enriching that my co-founder wrote a post about it on Hackernoon. You can read more about it here- hackernoon.com/how-side-projects-c....

Would be great to hear your thoughts on remote.tools

Collapse
 
samjarman profile image
Sam Jarman πŸ‘¨πŸΌβ€πŸ’»

Looks great! Always nice to surface cool tools for others to find easier. Often people make cool stuff but aren't great at getting it into the hands of those who may need it!

Collapse
 
bansalsuv profile image
Suvansh Bansal

That is the motive, Sam!

We have built remote.tools version 2 with this in mind. In it, product makers can add their products so remote workers can discover their awesome work and we plan to launch it by the end of next week.

I can share it with you too if you would want to have a look :)

Collapse
 
findsideproject profile image
FindASideProject.com
Collapse
 
findsideproject profile image
FindASideProject.com

Great ideas at FindASideProject.com

Collapse
 
pokom profile image
Mark • Edited

Really appreciate the tone and real life examples! One area that I struggled with in terms of automation was figuring out when to automate. I would often say, hey I could totally automate this process, and then just go for it without truly thinking of the process and consequences. I would often start a project with the best intentions, and within an hour find myself struggling to even begin to solve the problem. I would eventually get overwhelmed and defeated, and repeated this ad nauseam for a number of years(while genuinely believing I was making progress!), and it wasn't until my manager noticed this a few months back and took some corrective actions that I realized how exhausting it was to work towards a goal I didn't particularly understand well.

One thing that was particularly helpful was my boss needling me for more information before I tried to automate something. His goal was to ensure that not only could I run the task myself without any issues, but I could explain it to others and ensure I had worked out as much of the problems up front. Once I was confident of my solution on paper, I would then begin automating the process. I have baked this into my daily routine so that it's not even a thought anymore. Much less stress and anxiety, and I've found myself making larger strides then ever before.

Collapse
 
samjarman profile image
Sam Jarman πŸ‘¨πŸΌβ€πŸ’»

Great tips!

There are for sure some things you dont need to automate, because they're one-offs, but in the long term, if there is a time saving with automation, it's a candidate for a side project.

Collapse
 
bgalvao profile image
Bernardo • Edited

thanks! I am working on doing data science on my own liked tweets, but I still needed this article.

Collapse
 
niorad profile image
Antonio Radovcic

I had lots of fun with the Spotify and Marvel-APIs. You could make a random-song-preview-player, or a Twitter-Bot that tweets random Superheroes.

developer.spotify.com/web-api/
developer.marvel.com/

Collapse
 
samjarman profile image
Sam Jarman πŸ‘¨πŸΌβ€πŸ’»

Nice!

 
samjarman profile image
Sam Jarman πŸ‘¨πŸΌβ€πŸ’»

It was a lot of fun to make!

All πŸ‘ programming πŸ‘ should πŸ‘ be πŸ‘ this πŸ‘ fun πŸ‘

Collapse
 
samjarman profile image
Sam Jarman πŸ‘¨πŸΌβ€πŸ’»

Great stuff Grant! Cool project too!

I also automated my life with a chrome extension project recently... producthunt.com/posts/preach (a little less serious than yours, perhaps :P)

Collapse
 
aghost7 profile image
Jonathan Boudreau

General rule for me is to write stuff that I would use, and then use it. For example, I wrote a plugin for my editor recently which allows me to review PRs on Github from my editor. Automation is also a pretty big part of what I do on the side.

Collapse
 
samjarman profile image
Sam Jarman πŸ‘¨πŸΌβ€πŸ’»

Nice rule, Jonathan! Building tools for yourself is how we have evolved, and I don't see why it should stop in the digital age, haha!

Nice tool, where can readers get it?

Collapse
 
aghost7 profile image
Jonathan Boudreau

Well, its still in experimental stages, but here: github.com/AGhost-7/critiq.vim

I have the intention of writing documentation when I have a better idea of how I want my workflow.

Collapse
 
hrishio profile image
Hrishi Mittal

Great post, Sam! I especially like building new projects by exploring APIs.

Btw, I published this list of 27 project ideas for learning React on freeCodeCamp that you and others might find useful.

Collapse
 
samjarman profile image
Sam Jarman πŸ‘¨πŸΌβ€πŸ’»

Hey Hirishi! Great list - I'm guessing most, you could use any JS framework (or anything you like), not just react?

Collapse
 
hrishio profile image
Hrishi Mittal

Yes, of course. I created the list because I'm learning and teaching React, but you could use the ideas for anything, even without a framework.

Thread Thread
 
samjarman profile image
Sam Jarman πŸ‘¨πŸΌβ€πŸ’»

Awesome! Great list - thanks again for commenting, I appreciate it :)