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.
Top comments (28)
Be careful with side projects :)
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.
This jives well with Github's story.
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 usually me, but I've actually finished a couple. The key difference for me is that I'm solving an actual day-to-day pain point, which motivates me to at least get it to a usable state. Otherwise, it's just a learning exercise (which is great too!)
If you find your products to be useful for the market, why do you put them off? I think these are the products we need to spend time on building
This is basically me - can't be bothered with finishing things 😂
I laughed but it hurt!
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 :
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.
This is a great idea! I'm definitely going to start doing this :)
Very helpful suggestions to be considered while building a side project 👍
I'd echo the sentiment that given a choice, do use code for solving a problem that you face than recreating anything that already exists. Such endeavors while initially useful will somehow end up ignored or be limited to only finite efforts.
The feeling when you fix your own problems via technology is unparalleled 😎
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!
Having built many side projects, I share my own experience.
Side project:
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 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.
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.
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 wrote a medium post about how I come up ideas.
I start with the customer. I identify a customer. Let's say my customer is 'a teacher', then I speak with teachers in my community and ask them about how they go about their day to day activities. From the story the give me, I pick a side project to build. The side project is now a solution to a problem identified in a teacher's story.
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.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.