Scheme M: “Fun on the Side”
Published (gregorian) (ornellember)
Tags: scheme
hobbies techMaybe this scheme should be called “Make it up, Mwahahaha” because I most definitely am not writing this in the month of M, or even in 2022 at all. It is February (B) 2023. In true cheater fashion, I could make slimy excuses like “time is arbitrary, look at my calendar” – (“baby, the westernized idea of monogamy is so artificial and outdated”) – but really, it all comes down to “It looks nice to me if there’s a scheme for every month” and “lying is a perk of coding my own website”.
Anyway, in this scheme, I’m going to discuss how I go about choosing and creating side projects. I’ve said it before, I love side projects. Hell, this entire website is a side project (3, actually). There’s probably a dozen unfinished other projects sitting on my laptop, and about as many that I finished but don’t think are worth talking about online. And I often get questions around how, or why. So let’s get into it!
# Definition
You find an idea that’s 1) fun, and 2) useful. You identify the point of inflection where the project becomes useful (ideally, it should take less than 10 hours to get there). Then you build it.
# The story
In 2019, when I finished my coding bootcamp, I had completed a couple of projects with teammates. There was one that everyone had done (an ecommerce-type Node/React/Redux website) and one that had been more independent.
I happened to have really brilliant teammates, so the project was actually quite good. It was a neural-network-powered web app that took in a person’s mood at the beginning of the day, their mood at the end of the day, and what they had done, then computed them. When a person put in their day’s plans in the morning, it spit out a prediction for how the day might go, and suggest advice, something like “you’re already emotionally tired, and the day will be quite busy. Consider having many snack breaks.”
The project incorporated machine learning, and therefore data collection, as well as front-end form validations and some pretty cool-looking user-responsive data visualizations.
When I finished the bootcamp and started keep job-searching, it was taking a while to get an offer, so I decided to add a couple more projects to my portfolio – for marketability, learning, and because to be honest, it sounds corny, but I was so excited to have the superpower to code. I wanted to code everything. I built out a personal site (done, easy, that’s one – though it was squarespace at first) and tried to think of my next move.
I was still curious about machine learning, so I played around with some python libraries and trained a model to recognize cats or dogs. It worked, but it was pretty lame: it had no real utility (I know how to tell a cat from a dog), plus, it’s the boilerplate beginner tutorial for neural networks.
On the other hand, I had grand ideas for things that could be useful. I can’t remember them all, but here’s one: a website where you put in what languages you speak, then a language you’re planning to learn, and it tells you which phonemes will be new to you. But after going through hours of rabbit holes, I realized that, and many other ideas were kind of too big.
I needed a project that would take me 10-20 hours, be fun, original, built my skills… and that I’d have a motivation to finish.And then, eureka!
During the last week of bootcamp, I had built a google spreadsheet to calculate how given salary would affect my life, based on my outstanding debt, cost of living and savings goals. Some friends from my bootcamp saw it and were curious, so I’d generalized it and shared a link which my bootcamp career counselor ended up giving to most alums after my cohort! The only thing was, it wasn’t very visual, so it seemed like there was a big opportunity to make it cool and shiny.
My idea was to build an implementation of this salary simulator in code, which would be more visually appealing than a google sheets chart; this allowed me to explore data visualization. Also, it would respond to user input in real-time, which allowed me to explore React and Redux.
And, more importantly, I was going to help folks like me a lot: transitioning into a new job is hard, conceptualizing money is hard, planning for money is harder, and this would all make it just slightly easier for my friends and fellow bootcampers. As soon as I got to a point where the web app’s data visualization was there, and was slightly cooler than my spreadsheet, I shared it with friends, who gave me super useful feedback.
The ensuing monstrosity was not exactly functional, had many opportunities for improvement, but it was demo-able and well-scoped enough that I put it on my resume and portfolio, and moved on to other projects. I ended up presenting it and walking through the code in my Disney Streaming interview a couple months later. The rest is history, I guess.
# My plan
With Salary Sim, I had a clear motivation: to make something useful and cool-looking for my friends. This allowed me to clarify my project well, to scope it – MVP would be to have one data visualization that responded to user input –, and to put a lot of love into it. In short, I did product work.
It’s totally fine to write code that’s just exploratory and about learning tools, by the way, and I do that a bunch still. But for me, learning a tool for the sake of it doesn’t usually result in a project worth sharing. What does is the intersection of interesting and useful, and specifically, projects that get to the point of being useful in as little time as possible are really the sweet spot.
Side projects are how I keep falling back in love with code, and other hobbies, while getting better at them. Side projects such as, I don’t know, writing a scheme every month.
:) It has made me fall back in love with writing every now and then. And even though - not fishing here - I’m genuinely not sure I’ve gotten any better, I’ve definitely written some things, like Kora Theory, that make me proud and I am glad I’ve created them.
# PS
I’ve found that this is the missing part of many portfolios I look at: why was this, specifically, built?
When the answer is “because it was a tutorial”, that should be explained - it’s a bit slimy to put it up without credit, and also, it usually means it’s not really solving a real-life problem you encountered. There are many to-do-list apps that are better than what anyone could build by following a React tutorial. But if all to-do list apps a person has used have, say, a task reordering pattern that could be better, and a developer took a stab at building out that new task reordering, that’s a very cool project worth talking about!
# PPS
I revived the idea of salary sim a few months ago to explore Svelte. It’s still pretty ugly, and it doesn’t respond exactly in real time, but at least it’s there.