Thoughts on building Side Projects
The TLDR
Build SOMETHING. Just start.
Need an idea for what to build? Find a problem that bothers you (that you can solve with code) and solve it. Build a lil script for yourlself. Be your own first user.
Use existing tools as much as possible. Do not reinvent the wheel.
- Idea Generation: ChatGPT, Notion AI
- Frameworks: React / NextJS, Vue
- Database & Auth: Supabase, Firebase
Tech stack doesn't matter. Pick what you're comfortable with. Try something new. Who cares, there is not wrong answer (except PHP, that's always the wrong answer)
Pick something that is completeable. My own version of the Power law says that 90% of projects that go longer than 2 weeks will die.
Build SOMETHING. Just start.
If you've made it to this blog post, š welcome! Ideally, you're here because you're early in your career (or are a student), and want to get some insight into building side projects.
Some Backstory
After reflecting on my time spent hacking away on random shit in college, side projects built the foundation of my career.
You can take a look in the About section, but the TLDR is that I was very busy as a student in college. Although I was a late bloomer (first exposure to coding in Spring of Freshman year), after getting a taste of software engineering, I was set on building a ton of random stuff. Some early projects that I remember were:
- very basic UI wrapping logic that was normally a very manual task (getting Addresses and ZIP codes based on school name), which was used for an Esports & High School data aggregation project
- simple SMS bot for audience members of a pitch competition to interact with during the pitch
- (with a group of people) attempting to build an LCS match analysis tool
- a from-scratch emoji selector
Notably, none of these were for any class. I built all of these because I was either a user, or it helped to solve some sort of problem that myself or friends were running into.
I spent nearly every free weekend morning / afternoon I had in a coffee shop working on stuff. It was never glamorous. It was not always productive. There were definitely some frustrating moments. But goddamn, I absolutely loved it.
There was always a new, interesting problem to solve. There was always an exciting piece of tech to try out, or a new update of React to play with. Don't get me wrong ā this maniacal persistence of non-acedemic things definitely took a hit on my GPA. I wasn't terrible in school, but I also wasn't the best. I graduated from UW with a 3.3 GPA.
Afters literal years of this dogged consistency, I started actually being able to ship coherent, good product. Not amazing, but enough to get by and go from idea to public URL.
And from there, the rest is history. Buidling more projects turned into getting a chance to build a startup. That (very luckily) turned into getting acquired eventually. And now I spend my time enjoying work and hacking on random stuff for fun (like resume.lol).
Step 1: Get Started
The first step of this framework is to build something, anything! Whether it's a solution to a problem you've been facing or an idea that you just can't get out of your head, the goal is to create something that you or your friends could use. By actually building something, you're taking action, gaining experience, and improving your skills. Don't stress about the end result, just have fun and enjoy the ride. Focus on learning, experimenting, and getting in a creative headspace. If your first idea ends up being shit, more ideas will naturally flow after getting started.
Step 2: Use Existing Tools
Secondly, your goal should be to use as many existing tools as much as possible. This could include AI tools to generate ideas (such as ChatGPT or Notion AI), frameworks to help build your project (such as React, NextJS, Vue, etc), and database solutions to handle database and authentication responsibilities (such as Firebase or Supabase). Using existing tools can save you time, effort, and frustration, and help you focus on what really matters: your project.
There really is no reason to reinvent the wheel here. Unless of course, your project is to reinvent the wheel, in which case, go ham on it.
Step 3: Tech Stack Doesn't Matter
Third, remember that the technology stack you use for your project doesn't matter that much. Sure, some technologies are better suited for specific tasks, but at the end of the day, they're just tools in a toolbox. So, don't be afraid to use something you're unfamiliar with, as it can be a great opportunity to learn something new and expand your skillset. Sometimes you can use a screwdriver to hammer in a nail. yolo
Step 4: Pick Something Completable
Fourth: pick a project that is completable. You don't want to start a big, complex project that you won't be able to finish. Instead, aim for something that is achievable and can be completed within a reasonable amount of time. This way, you'll be able to finish what you started, feel a sense of accomplishment, and move on to your next project with confidence.
Ideally, pick a project that you think will take like 2 weekends to complete. If its longer than that, then following a rough Power law, 90% of projects that go longer than 2 weeks will die, in my personal findings.
Step 5: Ideas to Get Started
Finally, just get started. That is all! Good luck, get out there, and start building!
Here are some ideas to get you started:
- scraping data on the internet with Puppeteer and Node or Python
- building a Discord bot with JavaScript or Python
- developing a website with React, NextJS, or VueJS.
āļø