6 min read

Ideas are hard.

I won’t even try to sugarcoat this fact. The structure of ideation around school projects is comforting: existing guidelines, rubrics, and deadlines. Free-form ideation is harder.

This can feel overwhelming at first, but each time it becomes a little less so. After a while, the unease transforms into nervous excitement and you become an idea machine. The nervousness doesn’t go away, but it becomes more productive. It becomes fun.

Make something useful for yourself first

Many people start with too large a scope — helping every person in a 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 the vagueness in covering all use cases. This could end up with a massive list of features, making it very daunting to get version 1.0 out. 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 because it’s hard to know upfront what everyone 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)

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 local community 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:

Doing something silly

Another way I’ve seen good projects born is when someone said, “What if I did this silly useless thing?” and then made it happen. Sometimes your project isn’t solving a problem — it’s just something you want to try out. It might fail, it might succeed.

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.

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. I personally spent a lot of time re-implementing things that already existed, which gave me a real appreciation for the tradeoffs involved.

Gimmicks

Sometimes it’s elitism, and sometimes it doesn’t feel important, 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.

Combining other fields with CS

Today, CS is at a point where it’s rapidly expanding into almost every facet of society and knowledge. Many fields didn’t have much CS traditionally, but now there are a lot of low-hanging fruits. Take some time to explore your interests and past experiences outside computers and think about what could be useful. Many successful companies and research projects are born out of a combination of CS and something else, and there’s room for many more.

Note Every Idea

At first, ideas will be hard to come by, but you’ll start generating endless ideas 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. Doing this will:

(If you’re smart, you can turn 8 of your unused ideas into a summer series of workshops)

Good Advice From Others

These are excellent articles that inspired me a lot.


Based on an earlier version of this post with feedback from Drshika Asher and Maaheen Maajed