When I consider my status as a dev, I like to think of myself as a hobbyist first, then a professional.
The stem of this mindset is that I code applications because I enjoy the process of doing so, not merely because its my job. I like to see my solutions come together; pretty, symmetric styling and beautifully modular code. I enjoy the challenge of fitting boxes of things inside slightly larger boxes of things in an efficient way. I like doing that, and I also enjoy developing apps.
The issues arise when I find myself enamored by some new technology, programming language, or library. If you looked at my Twitter you would find that I'm participating in the #100DaysOfCode challenge. If you crawled through my past tweets (day 57 so far!) you would find that I've worked with quite a few different technologies.
I spent some time with Golang, React Native, TDD/BDD with Jest, GatsbyJS, Rust, VueJS, Ethereum blockchain apps, Unreal game development, UI design with Sketch, and most recently, GraphQL. I've tackled some different projects, all of which fizzled out eventually in favor of something else that caught my eye. I explore these other avenues outside after work or on the weekend, perhaps to get away from the more routine JavaScript I'm hacking with daily. A lot of coding!
Rabbit Holes
I was never much a fan of recursion. When the interviewer told me to calculate Fibonacci's sequence or the factorial for some number n, I coughed up the solution that I had memorized and said lets get on with it. My problem with recursion is what happens when the call stack gets too large, when that recursive function has called itself so many times the program throws in the towel. Ever wonder how Stack Overflow got its name? Maybe it was too obvious.
The majority of my free time coding sessions are spent tumbling down a recursion not too different from the one I'm describing. Consider the following code.
let golangLearned = false
function learnGolang() {
if (!golangLearned) {
learnGolang()
}
// that is all... nothing else happens in this function
}
learnGolang()
Can you see how this program turns out? Notice that there is not a damn thing that will flip that boolean and release me from this torment. Time flies by, its closing time at Starbucks. I pack my stuff up, confused and disoriented. In the past few hours I had done nothing.
I drive home, make some tea, eat a cookie, and go on the internet to consume content. I see a tweet somebody made about having fun with the Unreal game engine, writing game scripts with C++ and I'm just like wow, that sounds a hell of a lot better than my night! I go on Udemy and pick out a course to follow along with, and its actually a breath of fresh air. I try this for a couple days, the stuff we're building is really neat!
But then the honeymoon ends - this new hobby became a struggle. Now, it didn't end because it was inherently boring or difficult, it ended because I learned that I can now build distributed apps on the Ethereum Blockchain! I mean, come on, when will I ever get this opportunity again?
Fast forward a bit: React Native.
Fast forward some more: GraphQL.
What was initially a recursive rabbit hole exclusive to one programming language had revealed itself to be a much larger problem, I don't have the slightest clue of what I want to do.
Alan Watts says that there are two reasons why you don't know what you want.
- You have it.
- You don't know yourself, which is practically impossible for the godhead is never the object of its own knowledge.
Not an Unfamiliar Foe
When I was in middle school, I spent a large portion of my summers playing World of Warcraft. I got pretty into it, romanticizing about taking on raid bosses with my guild; my virtual friends. I wanted to get the shiny gear with the floating crystals and sit near the auction house in the great city of Stormwind and AFK with all the banter that goes on in the Trade chat channel, which spanned all major cities for a particular faction in the world... of Warcraft.
But I never got there. Despite the sheer quantity of hours I spent grinding boars and running The Deadmines, despite the fact that I knew almost every tiny bit of lore, I only got to play with endgame content for a short while. As a result, I must confess: my name is Ian, and I'm an altoholic.
Altoholic - When used in reference to MMORPG's (Massive Multi-Player Online Role Playing Games), such as World of Warcraft or
Everquest, refers to a person who creates many different characters, rather than just one or two. May also be used to refer
to a player who creates characters on many different servers of the same game, where the experiences they see will often be
different from each other.
There were 10 classes in World of Warcraft by the time I was done playing. TEN! What was I to do, play one character as a mage for an ungodly number of hours and then realize I should've been a druid? Seriously, what if I'd enjoy that class more, would I have more fun? And don't get me started on the factions, races, and professions.
Get one character to the level cap, or at least pretty close, then create a new one and do it again. Though that was never my goal, thats how it always unfolded.
Two stars to the right
Do you remember Peter Pan? He is the boy that looks a little like Link from the Legend of Zelda; he carries a dagger and has an annoying fairy. The story of Peter Pan did not begin with Disney, however. His name is derived partly from the Greek god Pan, who represents man in his most natural state; a child not hinged by the taboos of adulthood.
Pan represents a child with limitless potential. He or she can grow up to be anyone or do anything. Adults will say, "Wow look at that kid! I wonder what great things he will do?" For Peter Pan, that is where the story ends.
Eternally, he spends his days fighting pirates, flying around with pixies, and smoking the peace pipe with the Indians.
He will never grow up to work his 9-5, to end homelessness in London, or to wait in line at the DMV (he can fly).
And straight on till morning
Sometimes I feel like Peter Pan; constantly feeding my fancy, spending the majority of my time messing around with various facets of modern web development, wondering where my weekends have gone while I chase down how the hell I set up Enzyme with React Native. If you have any pointers for that one, please.
Though I've been afflicted with this lack of focus for my whole life, it manifests itself in different ways. In the World of Warcraft, I was definitely having fun, I just did so by leveling up with noobs the whole time. When it comes to learning different technologies I cannot seem to find a ship to stay on. Everything is just too neat.
I want to do everything. I want to play with all of the toys. I want to build empires to slay dragons and kaiju. I also want to become a professional snowboarder, win ultramarathons, and become a modern nomad.
Some of my dreams are mutually exclusive. Warren Buffet says you should go all in on a specific goal. It seems reasonable, but why is it so difficult?
By choosing one path, I destroy the possibilities offered by the other paths. By not choosing at all, I stagnate and wonder why I'm not doing more with my life. This is the paradox of choice, despite the quantity of options, I cannot help but feel a sense of loss.
Is it a problem that I want to try all of these different avenues? Maybe the issue is that I don't have a real world project to build and truly choose what to use. On that note, maybe I just need a grander objective with more systematic planning.
But I digress; I could ramble all night and it would be just another trip down the rabbit hole, where I would wake up and wonder, what the hell did I do last night? If you suffer from shiny object syndrome, this article may help you.
Solidify your focus.
Top comments (1)
This is so awesome! Thank for this!