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.

Top comments (36)

Collapse
 
mortoray profile image
edA‑qa mort‑ora‑y

Or join me in my quest to write a modern programming language: Leaf

Just have fun playing with a new language (careful, without a standard library this is really ambitious).

Or delve into the C++ part of the project, from parsing, to semantic analysis, to LLVM IR generation. Loads of excitement and challenging coding!

Collapse
 
michaeltharrington profile image
Michael Tharrington • Edited

Just to clear this comment up for folks that stumble upon it in the future. I know that @mortoray wrote a post about the end of Leaf which also explains why the URL above is no longer functioning.

Collapse
 
mateiadrielrafael profile image
Matei Adriel

The url seems broken

Collapse
 
damcosset profile image
Damien Cosset

Great advice. Here is a example from my personal life. I think it will fall under the automate your life category. I play football ( or soccer? ) at a semi-pro level. After every practice or match, we fill a form about a lot of things, fatigue, muscular pains and so on. However, certain things in the app they use are not needed by our staff. My side project is to try to work with my coaches to make an app a bit closer to what they need.

This is a long shot, it involves some things I might not be familiar with. But I will have feedback on my work and I know some people could use this app. So, that's the plan

Collapse
 
samjarman profile image
Sam Jarman 👨🏼‍💻

Nice plan, Damien! This is how a lot of software starts "Find a thing that uses spreadsheets and make it better" type stuff.

Even if it's only used by the team, you might be able to get a good blog post, open source project and some decent learning out of it!

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
 
ben profile image
Ben Halpern

Really great thoughts. Automate Your Life-oriented tasks are always a lot of fun to think about, though I'll admit I've consistently let these sort of projects fall by the wayside personally.

One thing I'll add: It might be a good idea to start a non-technical project you can commit to with the idea of adding tech in where appropriate. This will ensure that you don't get bogged down in something half-finished. The project is, in some ways, ready when you start it, and you add to it as you go. This was my thought behind starting @ThePracticalDev on Twitter, and it blossomed.

Collapse
 
samjarman profile image
Sam Jarman 👨🏼‍💻

Totally agree Ben!

In fact, after blogging for a while, and manually scheduling tweets... I'm thinking of ways to automate the tweeting of content, uploading to medium, here and blog from Markdown. All sorts of stuff.

I read your post on making Dev.to fast - great job!

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 :)

Collapse
 
dprothero profile image
David Prothero

Excellent write up and thanks for the Twilio shout out! There's lots of interesting projects on the blog. Also, check out ways you can code for good, lending your skills to non-profits.

Collapse
 
samjarman profile image
Sam Jarman 👨🏼‍💻

No worries David! Yes! Great idea for side projects, helping out non-profits. Readers should google for their nearest way to do so :)

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
 
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!

Collapse
 
bilalbudhani profile image
Bilal Budhani 👨‍💻

Nice article Sam. I'm a side project enthusiast and have built more than few projects to solve my own problems, but the only thing I'm not good at is launching & maintaining them. I'm really trying to focus on building the mindset to maintain my side projects for a long time.

Collapse
 
samjarman profile image
Sam Jarman 👨🏼‍💻

Hey Bilal,

It's a tough one for sure! I guess "launching" can be as easy as a short blog post or even a tweet - don't over think it for now! Just make it public and talk about it. You can even post to ProductHunt if you feel like it! Even if it's a joke

Maintaining isn't really that important unless you keep using it, or others are using it. A "cheat" is to open source it, so people who use it and want to change it can, and you can just keep an eye on any PRs that may come in. No need to maintain something you use once though. Be pragmatic with your time etc :)

Collapse
 
bilalbudhani profile image
Bilal Budhani 👨‍💻

Thanks Sam for such a motivating & encouraging reply. I'm going to keep your reply handy for reference whenever I'm working on my side project.

Thread Thread
 
samjarman profile image
Sam Jarman 👨🏼‍💻

No worries, man! Rock on!

Collapse
 
lukaszkuczynski profile image
lukaszkuczynski

Yes. Automating is good. Making thing more searchable is good, too. As for me I think the nice idea it is to make things more searchable indexing in Elasticsearch? For instance by consuming RSS feeds..

Collapse
 
samjarman profile image
Sam Jarman 👨🏼‍💻

Could be a cool project! Sync all your RSS feeds into ES so you can quickly search it later, when 'you remember that one post that had that thing you wanted but you can't remember the title, author or post' :D

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
 
andy profile image
Andy Zhao (he/him)

Great post! I recently had some thinking time and a lot of side project ideas came up. I went through a similar thinking process, and I'm glad to have someone confirm the process for me. I didn't think of the API exploration one though, and that's a great idea.

Collapse
 
samjarman profile image
Sam Jarman 👨🏼‍💻

Glad I could help, Andy! Thanks for reading. Yeah, APIs are fun. I did end up making that dog/tweet one for fun. I got the idea for API hacking from a few hackfests I've been to.

Collapse
 
findsideproject profile image
FindASideProject.com
 
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)