- Make something useful for yourself first
- This Annoys Me
- What If I Did X?
- Someone Already Did It
- Note Every Idea
- Startups and Research
- Good Advice From Others
Ideas are hard.
I won’t even try to sugarcoat this fact. It is easier to work in an existing framework with guidelines, rubrics, and deadlines than to create something all on your own. The structure is comforting. This summer class isn’t completely structured, but it isn’t fully unstructured either. It’s more of a training wheels approach.
Every time you come up with ideas, it gets easier. It is overwhelming at first, but each time it becomes a little less so. After a while, the unease transforms into nervous excitement, and the overwhelming feeling turns into an idea machine. The feelings of nervousness don’t go away, but it becomes more productive. It becomes fun.
That’s why we’re drilling this cycle eight times. On that note, this guide might be worth bookmarking to revisit now and then.
Now, here’s some general advice on ideas:
Make something useful for yourself first
Many people start with the idea that helps every person in X country or all college students generally. That’s a good end goal, but not a good start goal. The issue with targeting a broad audience is figuring out how to make everyone happy. You could also end up starting with a massive list of features, making it very daunting to get version 1.0 out. Honestly, this is why I see the majority of side projects, and startups fail. It either ends up incomplete or as something that no one wants.
I think the best way to get ideas is to make something for yourself first. Working for yourself is a much better problem. You know your needs the best, and you have a good idea of what has worked for you before. Users are generally hard to survey and interview, but it’s easy to figure out what you would want in a program.
Once you have something you’re happy with, expand your idea slowly (ignoring the instinct to snowball). At this point, you’re further along than about 95% of projects out there!
Now try adjusting your software to include: (roughly in this order, but one at a time)
- Local community
This kind of growth is organic, and it’s a reliable path to making something that lots of people want. You may realize that you’ll want to pivot and rework your idea a lot. It’s perfectly acceptable to stop at something that maybe only your university finds useful. It’s even okay if you’re the only person happy with it. Focus on making people happy one at a time, starting with yourself, and you’ll find yourself with good results.
This Annoys Me
One way I see many successful projects start is by picking something that annoys you or someone close to you. As software people, we have the power to streamline the world to make it friendlier and less stressful. Many things are broken by design, while others are broken by a lack of care. These annoyances can be a starting point of something worthwhile.
These can be in many forms:
- The interface is ugly - make a prettier one or a new form of access
- It is not accessible to many people (disability, language, slow internet). Check out a11y.coffee - add accessibility improvements or make a new accessible interface
- It takes too many steps to do the task you want - create something more streamlined
- You have to use many different pieces of software to do a task - figure out how to create a combined workflow
- It does not spark joy
What If I Did X?
Another way I’ve seen a lot of good projects born is when someone said, “What if I did X?” and then made it happen. There is something about procrastination that drives creativity towards side projects. Sometimes your project isn’t solving a problem, and it’s just something you want to try out. It might fail, and it might succeed.
These projects can serve as both a learning experience and a path towards your future. Once you’re there, hindsight might make it feel like destiny or fate, but in reality, you were messing about and wondering why things happen. Projects that start with a simple “What if?” can change the world.
Someone Already Did It
Most of the time, your idea has already been done. And if that isn’t the case, then it might be close to impossible to do. There are still many ideas that don’t fall into either of those, but they are not the majority. Over time, you’ll find good sources of inspiration that lead to fresher ideas. Today, CS is at a point where it’s rapidly expanding into almost every facet of society and knowledge. Many places didn’t have much CS traditionally, but now it’s an open season with many low-hanging fruits. Successful startups and research projects today are often born out of a combination of CS and X. Now, guess why UIUC has so many CS+X degrees all of a sudden?
Even if what you want to do is already done, that’s perfectly okay. Not everything you do has to be original. Besides that, it can be pretty fun redoing things that already exist out there. As long as you’re not copying the existing code as is, I think that projects that start this way can be a valuable learning experience. In fact, many of my initial projects were like that. There is a concept of system design interviews in industry, where they often ask how you’d engineer a feature that usually already exists. Projects like these can help.
Sometimes it’s elitism, and sometimes it’s someone’s defeatist attitude, but do not undervalue a “gimmick” or “flashy” component. People often dismiss good UI/UX, exciting features, good art, or a novel type of computer interaction as a gimmick. Sometimes these can make or break a project. Sometimes they don’t add to a project, but they do make it more fun.
Users are often more likely to use your software just because of these ‘gimmicks.’ I think side projects with more of a gimmick/flashy factor are always more fun to both make and look at.
Note Every Idea
At first, ideas will be hard to come by, but you’ll start generating endless after a while. Most will be bad, practically impossible, or already done, but they’re still a valuable part of the process. Don’t discard any of them, even if they seem kind of cringe. Many billion-dollar companies today were once a “bad” idea that people did not think would work.
Aggressively note down all your ideas in places where you can find them later. I like Google Keep, but there are dozens of different note-taking programs. Your ideas are probably better than you realize, so keep them! Doing this
- saves you time, since you might come up with the same idea again
- can give you a starting point for your programs
- makes you think harder about what your idea is over a castle in the sky that is nowhere as well defined as you think it is
- keeps you from forgetting - trust me, you will forget, and it will often only take two or three minutes!
(If you’re smart, you can turn 8 of your unused ideas into a summer series of workshops.)
Startups and Research
Maybe your project starts going in exciting directions. That’s awesome!
For startups, check out Illinois Founders. They can guide you much better than we can.
If you think your project has research potential, create a write-up and a picture/video demo, and start showing it to grad students and professors.
Good Advice From Others
These are excellent articles that inspired me a lot.
A Software Developer’s Guide to Side Projects - Simple Programmer. He’s written a whole book of advice as well.
Software engineer, it’s okay to not have a side project - Benoit Pasquier. I think this article gives a good understanding of the toxic side project culture. If you feel things are becoming a source of anxiety or feel like a chore, step away. Trust your instincts.
Contributors: Harsh, Drshika, Maaheen