Day 6: The Joy of Coding
Man, I’m really, really loving coding these days. When I joined Google as a product manager back in 2015, I pretty much stopped coding, with the exception of being enamored by Apps Script (a scripting language for Google Apps) for a while because I love spreadsheets and learning that I can write code for my Google Sheets and give them superpowers was like collecting $200 and going straight to the promised land.
When I initially decided to make the switch from being a software engineer to a product manager after college, I did it because I preferred thinking about the “why” behind a product rather than the “how”. That is, I’d much rather be focused on what features/products should be built, how they should work, and why it matters rather than figuring out the implementation details and ultimately just building what others decide.
That preference still holds today, but being an indie maker gives me the best of both worlds: I can work on defining the product, how it should work, and then dive deeply into building out the best experience I can. Being a PM at Google, I had forgotten just how incredibly satisfying it is to be able to dive deeply into a problem and come out several hours later with an elegant, working solution. Being a product manager meant constantly thrashing between different projects, duties, meetings, emails, and tasks — my attention felt like it was being pulled in all directions. Now, especially since I get to set my own schedule and don’t have obligations to attend meetings or promptly respond to coworkers, I’m able to enter deep flow states on a regular basis and I love every second of it.
It felt much more difficult when I first started, though. Back in June, I decided to dive back into coding again and set out to learn React, the framework everyone and their mom seemed to be raving out these days. So I went off to do their intro tutorial, but I kept getting stuck because I didn’t recognize a lot of this weird syntax with three dots and “=>” and “let” and “const” and all this funny stuff. What the hell had happened to Javascript?
So I set out to modernize my knowledge from my Angular 1 / jQuery / 2015 Javascript days and found an absolutely incredible resource over at javascript.info. If you haven’t checked it out, go do right now because it’s amazing. It has a wealth of information not only about Javascript, but about lots of topics related to front-end programming like how browsers work. MDN and javascript.info are basically the only two resources you need for all your web development questions.
From there, I just started building. I made a bunch of music apps with create-react-app (personal highlight: implementing an academic paper to build a pitch detector), rebuilt my personal site with Gatsby, and then started making Chrome extensions.
At many moments, I felt intimidated by the seemingly endless list of new technologies, frameworks, and tools I kept reading about. The front-end world had somehow transformed from “omg look how cool my myspace theme is” (okay, maybe it was a little beyond this in 2015) to Serious Software Engineering over the years, and I had trouble figuring out when and how I should learn all these new-fangled things like Babel, Webpack, Redux, CSS modules, Gatsby, VS Code, Typescript, etc. not to mention all the stuff I had learned before but had gotten rusty on, like git, npm, CSS/SCSS, Bootstrap, and of course, good old Javascript.
Somehow, just coming back to it day after day has paid off big time and coding nowadays feels much more like slicing right through a plump, juicy tomato with a razor-sharp Japanese chef’s knife rather than hacking away at it using a rusty butter knife. I don’t know how much better I’ve actually gotten at programming (I’d like to think I’m much better now than I was in 2015, but who knows), but it’s sure as heck a lot more enjoyable. Even as my projects become more complex, putting together clear and maintainable systems feels easier and I now have a set of shared components and packages that makes every new project easier than the previous one.
Soon though, I’ll transform back into a baby learning to walk again because I need to step outside of my front-end comfort zone to build a licensing server for Hide Feed. I think it should be pretty straightforward, but I’ve thought that about many things before crying myself to sleep because I couldn’t figure out some random error after spending eons wading through a dumpster fire of StackOverflow questions. Here are the tips I’d like to remember when that time comes based on what worked for me for learning front-end programming:
- Start building things as soon as possible and figure things out as you go rather than trying to learn everything before you start
- Just accept that your code will be terrible when you start and don’t worry about getting it right on your first try
- Get really, really good using a few tools rather than being mediocre at a bunch of different ones
- Okay, there are a lot more but I’ll dedicate a future post to practices I’ve learned and benefitted from
I’ve pretty much broken my arm patting myself on the back in this post, but I don’t think I’ve ever felt so satisfied with the quality of my work. Hide Feed is a pleasure to work on every day and if it weren’t a Chrome extension that anyone can trivially copy and upload, I would open source it just so I could point to it and scream at everyone about how cool it is that it has this framework to support any site and deterministically manipulate the DOM even when it’s being injected into modern single page apps that perform a ton of modifications via their own scripts and it automatically cleans up after itself and that means you can toggle features on and off at will and everything will update instantaneously without you needing to refresh the page ever and if you restart the extension or update it or set your house on fire and lose your laptop and get a new one, it will do the right thing and reflect your latest changes oh and did I mention that everything is synced across tabs, windows, and even computers so that everything works everywhere all the time and YES DAMN IT I’M PROUD
also word vomiting is fun and all but man this writing is terrible