The Wilderness: My Journey Into Code
Tags: beginners, learning, journey, webdev
Published: 2022-01-23 08:42:36

Hey, just FYI, there are some pretty significant shifts in tone in this... whatever this is. I didn't really road map it and it's far more introspective and personal than it is technical. It is very much me just trying to make some sense of my journey into code and how and why certain things happened.

Back when I used to write more often, about more abstract and less interesting things, I never used to worry about feeling like I deserved a spot in the conversation, I just started saying stuff. Seldom did people actually listen, but at least I did the talking. When it comes to writing about code though, well... impostor syndrome is very much a real thing and thoughts like "who cares what I think, I've only been doing this for 5 minutes" take precedence over anything else I could ever want to say. The fact is though, I am a professional. People do put steadily increasing amounts of money in my bank account for doing this stuff, so I figure maybe, just maybe, I'll permit myself to sneak a couple of quick one liners into the chat, and hope for a few laughs or at worst a couple of pity nods.

The above being said though, and irrespective of any neurotic self doubt about writing about code, I do remain acceptably confident in my ability to write the code itself, and when I allow myself to stop for a few seconds to think about how that actually happened, the journey forms in my mind in a bunch of vague images which, if you'll allow me, I'll attempt to distil into an comprehensible narrative.

There are a whole bunch of reasons why I want to do this. Here's a few:

1. I think looking back on where I started, might help me chop a couple of limbs off of this black knight that is my self doubt.
2. My path wasn't exactly a straight one, and much of it I don't entirely remember, and I'd like to try to.
3. When I was starting, all I did was look for examples of people who hadn't failed, and the more of those stories that exist, the better.
4. People on podcasts tell me I should. (Not gonna lie, mainly this.)

So... Here... We... Go...

Before I dive in in earnest, a small piece of background about why I started to learn to code in the first place, because despite being a career that I believe I'm actually quite suited to, it was, frustratingly, never on my radar.

I was 27 when I wrote my first line of code, and my introduction to it was largely out of necessity. The agency who'd been hired to build my family's company's new website had been floundering for two years, had over-promised and massively under-delivered. This uncertainty had started to put a financial strain on the business, and alternative plans needed to be made.

Cue a chorus of _"How hard can it be to learn this stuff?"_.

The answer, of course, was pretty bloody hard.

I did, however, find myself immediately swept up by the frustrating sense of fulfilment that comes with things not working and subsequently aspiring to make them work, and my desire to learn became a bit of an obsession.

The (rather strange) old saying goes "there's more than one way to skin a cat", and it's a very apt one for describing the process of learning to code. I, however, think of the venture in slightly different and far less gruesome terms.

I'm an overthinker. I've thought about it and I think if you ask anyone, they'd probably say the same thing. I've therefore done a fair amount of reflecting on my personal journey and the metaphor that most resonates with me, as someone with zero outdoorsing experience, is one of a blind venture into the wilderness.

As a self-taught developer (though perhaps, self-guided is a more accurate term), my first steps into the unknown were exciting of course, overwhelming definitely and life-changing.

Looking back, I did almost everything wrong.

I thinking when wandering into this world, there are many ways to take your first steps, you could:

1. Band together, go in as a team with a strong experienced guide.
2. You can hang around on the outskirts, writing essays about moss and edible berries, until you are deemed worthy of stepping in.
3. Go at it alone, with no guide, no adventuring party and no idea (<- This is me. This guy right here).

I think if you take this third option there are a couple of things you can do to help mitigate your chances of starving or getting eaten by bears and such. Everyone will tell you from the outset, the best way to learn this stuff is to pick a language, any language (within reason), and just learn it. Learn it well, find somewhere safe, build a camp and find your bearings. There is a reason why everyone says this, because it's a smart thing to do. Once you have a solid grounding, some place warm to come back to, it becomes increasingly easy to take little expeditions outside of your comfort zone, with the knowledge that whatever you find out there, you have somewhere you can keep it safe. Oftentimes when you are trying to learn a broad range of things, depth of understanding in one area can spawn the fundamentals necessary to soak in that breadth of knowledge.

Listen, I tried to do this, I really did. When I started out I decided that Python was for me. I was going to become an expert and be lauded the world over for my unrivalled experience and intellect... but like I said, I am very much the over-thinker. I liked Python. I found it easy to write and easy enough to understand, and I made some steps forward and learned some very cool interesting things, and it got me hooked on writing code. My problem is that I'm a bit of an explorer. I don't go outside so much, but I like to experiment with this thing, that thing, whatever is shiny really and it can oftentimes be hugely detrimental to my learning goals.

This is a common trap, I know and I think I am particularly susceptible to falling into it, "Is this language the best/coolest/funniest/hardest/easiest". I ended up down that hole 5 or 6 times and ultimately it meant that a good stretch of my journey into tech has been spent wandering around fairly aimlessly, without making any significant progress.

From 2017-2020, I roamed around, willing myself to just build a camp, get comfortable, light a fire, lay down some foundations... but I am who I am.

I wasn't very happy with myself around this time. I hated my job. I was feeling massively unfulfilled in an industry I didn't care for and in a job for which I felt I had very little aptitude. The problem was though, I knew I was never going to leave, and that tore me down even further.

Then, in January 2020, my daughter was born sleeping. I'd never felt more lost. Losing her and everything she would have been crippled me, and it still does.

What this did though, what she did, was bring me to the edge of a canyon, and I knew that I either go back to the place I'd been, or figure out some way to get across. I didn't like that place. Going back there with her would have been one thing, but going back there without her was too scary to comprehend.

My wife says that there really are only a handful of ways to live your life after losing a baby, and the one that honours that baby most is to try to live life as best you can. They both inspired me to be better and do better and I am so grateful for that.

Never in my life had I been more motivated to make someone proud, as I was for my little girl. I love her and I miss her.

I was still in the wilderness though, and here is the thing, it's absolutely enormous. There is so much more to know in tech that I would ever have the time, capacity or the intelligence to learn, and I've previously stated, I really struggle with wanting to know everything. I've been this way my whole life, and I think I'm unlikely to change.

I had a fairly sizeable realisation at this time though, it's not a hot take by any stretch of the imagination and it's slightly embarrassing that it eluded me for so long.

It goes, something along the lines of this:

_It becomes increasingly more difficult to fail at something, the more time you put into attempting not to fail at something._

I'm happy to open source this quote, if anyone wants to put it on t-shirts and stuff.

I lived with myself long enough to know that it is so easy to allow my nature to derail me from making it to a target. I am an extremely neurotic person, and I don't think anything is likely to change that in a timeframe suitable enough to allow me to achieve anything meaningful. So what I did instead was actively made the decision to try to harness and enable any good parts of how my brain works, in an attempt to encourage myself not to fail.

I gave myself time. I'm an explorer, so I let myself explore and I still do. I still get pangs of anxiety and self doubt when I tell myself to stay in my lane, but it becomes increasing easy to shout them down when it is clear that, in my own way, I am making progress.

This has been me, lost in the wilderness for the last two years, but hugely motivated to find my way. I have taught myself that I am incapable of taking straight paths, it is not in my nature. However, I have taken the winding, meandering tracks for long enough, that sooner or later I started to recognise the important landmarks and how to make use of them, and that is when I found myself able to start to lay down foundations.

I'm not an expert in anything, but I'm getting there. This is probably the only bit of advice that I'm qualified to share, and probably the biggest take-away from this tangential narrative. Even if you do _almost_ everything wrong, if you keep doing it in any meaningful way, you'll probably end up somewhere adjacent to where you want to be.

In technical terms my path to become a professional developer went something like this:

PHP -> Python -> PHP -> Python -> JavaScript -> PHP -> C# -> *JavaScript*.

I do not recommend this path. I cannot express how much I do not recommend following this path, but if you commit to learning, no matter what you do, you'll probably be OK.