This is meant to be an expression of the the inner dialogue web I have been finding myself tangled in. It will be a bit whiny but I figured I should let myself whine so that I can find the root of my frustrations and start working on a way to settle them.
I often find myself complaining about LinkedIn, taking issue with everything being an opportunity to boost productivity. And the doomerism, but neither of those things are exclusive to LinkedIn. It is easy to get wrapped up in it all, especially when it feels like the right post reaching the right eyes can change your life in big ways. I hope to break out of that mindset a bit here.
These thoughts were inspired by the book "Strange Code" written by Ronald T. Kneusel and published by No Starch Press, because it is a book fundamentally rooted in the fun of code. Outside of productive norms and efficient usage of black box libraries to meet a deadline, it touches on the silly and the downright bizarre. I have yet to finish the book but I have a great amount of gratitude for Knuesel, as his book has reminded me why i started coding in the first place.
Why I hate "algos"
Algorithms should be fun. They should be neat little creative expressions of problem solving. They should be brain teasers and a daily puzzle like the weekly crossword, or the daily wordle. Either that or they should be an elegant solution to a problem that needs to be solved in the software I am building (but there should be a library for that, right?)
Instead, I have found myself struggling to keep my "algo brain" sharp in case I ever need to interview in a hurry. They have become a responsibility of mine so that I may be a linkedin-approved, futurespective engineer.
When I interview someone I have to pretend that the ability to solve an algo is indicative of a skillset, and when someone interviews me I have to pretend that I care about algos because they are reflective of my skillset. That says more about how difficult it is to effectively determine someone's coding abilities but my frustration is at this cultural inertia that keeps this practice around. Is it Google's fault?
Either way, it is my belief that algos act as a platform in which someone can showcase their genuine ability to code. To work through a problem, communicate their thoughts effectively, develop a plan, and execute that all while keeping their team (the interviewer, in this case) in the loop. That's great, it sounds great, and I promise it is something I actually believe to a degree. I still hate them.
I hate algos through no fault of their own but because my motivation to keep doing them is based in fear, a sense of self-preservation. I would rather find the need to solve an algo because the project I am working on requires it. The more common need is to solve as many as possible in the hopes that the algo gods shine their grace upon me and an interviewer asks me one I've already solved and can remember.
But there lies the rub, right? If I have been practicing them and a genuine need for one arises, however rare that may be, that is what would distinguish me from the other engineers. If I can pull from experience and solve it quickly, I am the star for that sprint. I would sit back in my seat and tell myself, "And THIS is why I go on leetcode daily,"
I began to code because it was advertised to me as existing at an intersection between financial stability and creative expression. You can build what your imagination desires while also having a job that pays you well to do so. In my silly little head, algos fly in the face of that with their necessity. They tell me, "You can be free, but you can't be free from ME!" and laugh maniacally. Ultimately, that is what exposes the root of why I hate algos: They are a smart way to spend my time. They make me feel like the kid in math class who used to ask, "When are we actually gonna use any of this stuff?" and the answer is: "You are going to use it when you want to get a job." and that's it. It's good for goodness' sake, for the most part. And that is frustrating because of what it is I really want to do: I want to code absolutely everything, ever.
Things I want to code
Aside from absolutely everything ever, I want to make an NES emulator and I want to use that emulator to build ROM hacks of the first few Dragon Quest games. Then I want to make an NES game of my own, from scratch. I want to learn 6502 assembly because it will challenge me and it will be motivated by a childish love for these games that meant so much to me.
Then I want to make a game engine after I learn C++. Then I want to make a game in the engine I built because of the novelty. Because it's mine and I did it all myself. Not to be some sort of individualist, but because I feel like I owe it to myself to get down and dirty and leave all stones entirely overturned.
I want to reverse engineer old games, I want to dive headfirst into the hex editor and see it all. I want to know the dumb things, the silly things, the outdated things. I do not want to be a 10x engineer, I want to be an engineer who knows how to find out how to make all the things I want to make. Maybe that is exactly what a 10x engineer is but I never want to know.
I want to play all the new indie games and be inspired by them. I want to watch and read all of their dev logs and cheer them on, and I want to write my own. I want to ignore my player's silly requests and let them be angry at me. Yes, even if they are good ideas.
I want to understand the machine that makes this all possible. I want to scrutinize every black box, I want to move beyond consuming a library and into editing the library, then making it myself. I want to complain about the library and then make my own to fit my own needs. Not because it will get me a promotion or send my career to the moon, but because I want to be self sufficient as an engineer. And all of it is beautifully possible.
That first paragraph contains what I think the key to all of this is: I am motivated by a feeling that I first felt as a child. That is why I want to whine like a child about algos. I don't want to be an adult about this. I want to play and dive into rabbit holes, then drop them for another, maybe to never return. I want to finish things halfway, I don't want to care about what I have to show for my efforts. I don't want to have to talk about the things that I make in the context of a value proposition. I just want to make.
So that is what I plan to do. And maybe I will keep doing algos along the way so i don't go broke in the meantime.