Skip to content
loading...
Heroku profile image Heroku

How do you come up with new side projects?

github logo ใƒป1 min read  

image by By freepik

Side projects are great ways to grow our knowledge and skill, but where do you start? How do you get your ideas for new side projects?

For me, I need someone else's passion to really get into side projects, so my process starts at a hackathon or meetup where I meet someone who wants to do something great.

twitter logo DISCUSS (22)
Heroku is a container-based cloud Platform as a Service (PaaS). Developers use Heroku to deploy, manage, and scale modern apps. Our platform is elegant, flexible, and easy to use, offering developers the simplest path to getting their apps to market.
markdown guide
 
 

I know a lot of people (myself included) will see this as their pattern. I think I might write something just about this very idea! I think the point of side projects is that they don't ship, but I better start a new post before I write a 900+ word comment ;)

 

I think this is the natural journey of side projects.

Taking some time to reflect around the patterns of failed side projects dating back all the way to college actually helped me map out what pitfalls to avoid when starting what became DEV.

The biggest pitfall was seeking early success. I actually gave myself a "ten year rule" when starting the project that I would not let it fall off for ten years, even if it slowed at times or whatever.

I think that's the kind of realization that can only happen if you've had a history of moving from one thing to another, which is a really healthy part of growth.

This actually gives me peace of mind! Knowing that it's okay to start dozens of side projects and then abandoned in the midway is totally fine. Hearing this from you who created this platform is quite encouraging.

Also, this may sound weird, but sometimes I enjoy hearing stories of someone's failures and mistakes. It's what makes successful people relatable.

 

I have a ~/tmp directory full of small tests where I try out all the new shiny before I put them into an actual project. I start a couple a week, and am ok walking away after 20 minutes. Very few go anywhere, but I use it to learn what I want to actually use on a side project. Keeps me from starting too many big things.

That being said I still start way too many side projects to finish.

 

This is basically me - can't be bothered with finishing things ๐Ÿ˜‚

 

I've got a few on the sidelines and started building a twitter clone and it's about to be sidelines as well๐Ÿ˜‚

 
 

I keep a dev-ideas list on GitHub.
Whenever I have crazy-ass idea that I thing could help someone or me in general, I write a small description of what it will do or not with a catchy name.
It doesn't matter if its a small script or a library, if its solving some part of the problem, I consider that as a side-project.

After this i evaluate :

  • What can I build ? Is it worth it ?
  • Can it be built in 1-3 months (if longer then abandon it for sometime)
  • Can i do it alone ?
  • Do I have the skills to implement this idea ?
  • Basic flow layout of the idea
  • Feature list

If everything goes well, my next 4-5 weeks go in alpha development of the idea

 

That is such a great idea. I think sometimes I feel a bit of relief just writing the idea down, and it relieves the feeling that I need to start it immediately. It also gives a place for ideas to combine into soemthing great.

 

One way to keep myself focused on a side project ideas is to treat it as an actual job: create a project on ClickUp and start assigning tasks to myself, logging time, the whole nine yards. I still go down the rabbit hole of starting something else before finishing what I am doing, but it's always related to the previous problem, so I create another task for it, until I complete it and I am satisfied with the result. Then I continue the parent task, reusing what I made. This thing went so far that I registered my own startup (just a website, but enough for now), which gives me extra motivation to finish what I started. And what I build can be later reused for other projects to help me start faster.
Here is an example flow:
1) I want to build an organizer...
2) ...but I don't know state management libraries well enough...
3) ...start a new project that plays around with different state management libraries to see which one fits my case best...
4) ... but I need to make sure I do things right, so I have to learn how to use the tooling around the ecosystem, so started learning jest, eslint, etc...
5) ... I want to make a default configuration so I can reuse it in 3) and then in 1), so I start making that.
Right now I am still stuck at 5), but things are getting into shape. Making things right is a project on its own too. Without that structure, I would have been lost. But now I have my 1) goal. Keep coding!

 

It varies, quite often it's a limitation of existing tooling I've been using or something like that - I start with a grand vision to write my own faster, better, stronger version, then get distracted by something else and it goes to the bottom of the github graveyard :( But I normally learn a few things along the way :)

 

๐Ÿ’ฏ Many of my ideas and side projects I start extend existing things to fill gaps that no one else would care about.

 

For me, side projects are the best way to explore new technologies and expand my skill set. I try to find an idea that meets the following requirements.
1) I would personally use the product
2) It's interesting enough that justifies all the hours that I'll spend implementing it
3) The things that I need to learn in order to implement it are focused on the technologies that I want to learn.
4) It will be ready in less than 2 months.

Once I find an idea that meets the above requirements, I try to find a cool name and register the domain. From that point on, I'm hooked and I proceed with the creation of all the necessary accounts(GitLab, Trello, Slack , Facebook, Twitter, Instagram etc). By treating the side project professionally, it really helps me stay on track and built the actual product as fast as possible.

 

Having built many side projects, I share my own experience.

Side project:

  • Build mini project since it has shorter time frame and higher chance of completion.
  • Must be purposeful and focus, and not doing everything.
  • have immediate value asap. Not necessary need to be complex but must be useful.
  • Minimum viable project (MVP)/design should be completed within a day or two by asking "if tomorrow is end of world/presented to your boss", what are the most important things to show. The longer one drag to create MVP, the more chance one lose momentum and motivation.
  • KISS principle until the core functionalities are all up, after which you can decide if you want to expand on functionality.
  • Prefer starting project that can be designed and coded by oneself, and avoid collaboration with others on initial phase as no one really care what you do until you build yourself and proven to be useful as you are the champion for the project.
  • Think out of the box, not necessary need to follow traditional way of project deliverable (etc frameworks, library, full-blown web app)

I have built many mini projects using Keyboard Maestro wtih Kotlin, Ruby, Python, Kotlin, Java etc, node as execution runtime etc. and for those who may not know, Keyboard Maestro (KM) [keyboardmaestro.com/main/) has this ability to create webkit-Window based on HTML, JS (consider it as lighter electron), (wiki.keyboardmaestro.com/action/Cu...) which can leverage on the full power of KM.

For example,

1) Snippet Search => I built this app using custom prompt action (which actually is just html file that can call external js files. )of KM which use AceEditor (ace.c9.io/) to for code formatting and editing, and node.js backend to which use sqlite for Full-text Search. Inside the html can call any KM functionality.

2) Regex101
regex101.com/ that I constantly use for interactive regex. I convert this to KM version using custom prompt and add extra functionality (like auto-compact window when lose focus). Best of all, it opens up instantly (KM is very fast and memory-efficient) unlike web and chrome app version of regex101.

Snippet Search using Keyboard Maestro
dev-to-uploads.s3.amazonaws.com/i/...

Regex101 using Keyboard Maestro
dev-to-uploads.s3.amazonaws.com/i/...

 

It's a cliche, but for me it really is, often enough, just scratching an itch.

I wrote Ettal for balancing my checking account (and doing a few other personal finance things) because, while I love me some GnuCash, I find their user interface cumbersome and atrocious.

I wrote Prostetnic Highligher (deprecated in favor of Persistent Highlighter) because my beloved needed a web page highlighter, was an avid Yooper user, but Firefox 4.0 broke Yooper, and the other browser extensions for highlighting were too dumbed down. Couple years later Firefox broke Prostetnic so I wrote Persistent Highlighter. The original Prostetnic Highlighter was my first exposure to Javascript.

Back in 2011, I wrote AIS (Agnostic Ideology Sorter) because I was fascinated by "put you in an ideological bin based on your survey responses" websites such as Political Compass, but I was always troubled by the fact that which questions got counted toward which "axis" seemed to rest on a priori assumptions, so I wrote a politics questionnaire with a backend that does pattern recognition on the survey data. This project was my first exposure to PHP (and my first attempt at writing a website backend). My hosting provider was a small pop-and-pop operation that eventually folded, but Wayback has a few receipts, such as this.

I guess the common denominator is, I was using some software tool or website for some purpose, and it left me wanting more, maybe an additional feature, or a less cumbersome user interface.

 

I have several side projects where I have spent a couple of days looking for an existing solution with no results. So I get started. I start to where I need a repo and I need a name. I double-check pypi for name collisions only to find exactly what I was looking for in the first place and abandon my version.

 

It's usually something that serves a purpose for me personally. I'm making a game inspired by LEGO just because I love legos as a kid and just wanted to build something fun that reminds me of the good old days. Also writing a python library of data structures to solidify my knowledge in that domain and it's also for job interview preparation.

 

I find I am really into a side project when it is something I need personally. What bothers me or slows me down day to day

 

I usually think of something that would be cool to exist and that I would love to use but it does not yet exist in the form that I would love it to be.

 

When I am bored I look for projects to make and see something related to it. I do get original ideas but still not experienced to make my own.

 

I just solve my own problems. I fix things I am not happy with. Just look around, there are plenty of small and big things that need to be fixed. If you have a real problem and know to solve it, then it will be useful for other people, too.

If you sit and think "hey, what side project should I build?", then likely you'll solve an imaginary problem. Programming for the sake of programming is a waste of time. Build things that matter!

Classic DEV Post from Mar 9

Tag Someone You First Met on Dev Who Changed Your Life for the Better

Tag Someone You First Met on Dev Who Changed Your Life for the Better

Heroku profile image

Code[ish]: a podcast from the team at Heroku, exploring code, technology, tools, tips, and the life of the developer.

Sore eyes?

dev.to now has dark mode.

Go to the "misc" section of your settings and select night theme โค๏ธ