The Island of Technical Knowledge

2020-11-12 Word Count: 1670 Reading Time: 9m
Sections

Where To Begin

I almost certainly have some form of anxiety that makes choosing between options that are important to me difficult.

When I say important, I don't mean like life or death or even anything that would appear important to an outside observer. I'm mainly talking about something internal to myself. Something along the lines of a value system or the way I perceive myself.

To complicate matters, the more we learn, the more options are available to us. How we weight our decisions becomes slightly more difficult as more doors are open to us.

This applies to many things but for the purpose of this article, I'll talk about something technical: learning to program and making choices as we learn more.

A Personal History On Programming

My first foray into programming was Java 1.0. I was a kid and had no programming experience. A programmer at my mom's work suggested I learn Java if I wanted to get into programming. At the time (1996?), Java had just come out and if I recall, this programmer actually did all his work in Perl so go figure.

My mom bought me a book at Costco and I remember the smell of the pages and the excitement of new opportunities. The book was Java Unleashed.

Java Unleashed

Needless to say I didn't get far. As a total noob, the book wasn't exactly a gentle introduction. Later on I purchased a book with CD that had slides to walk a person through it. This was the first breakthrough I'd had in programming.

Talk Java To Me

I remember vividly one of the first programs I had ever written was a tiny calculator where I could enter how many hours I worked and it would guesstimate my take home pay after taxes and such.

I didn't necessarily progress too much in my knowledge because I was a kid. I learned just enough to do what I wanted and, being a self-learner, you have a tendency to only learn what you think is important and little else.

The Benefits of Ignorance

The point of the story above is that, due to my lack of knowledge and direction, the door to the world I wanted to enter was uncomplicated and provided for me (Just Learn Java!).

The steps were clear and progress was easy to track. Like a kid learning to ride a bike, success was easy to see and failure was obvious.

The decisions I needed to make were almost entirely the work of others. I just needed to follow what I'd been given.

Options Increase

As I continued in my technical journey, I added a few things to my knowledge. I dabbled a little in C to create a tiny game using Mode 13h. I started doing some web development in HTML which opened up more doors for me.

Probably the biggest and most pivotal decision of my technical life was the first time somebody introduced me to Linux. Up until then, I had been a Windows user and knew little else of other operating systems save MacOS. My friend's dad was a technician at Intel and we enjoyed discussing nerdy/electronic things. He sent me home with a boxed version of SuSE and you could say I was hooked from the first bash prompt I had ever encountered.

Sidenote: It was literally only a bash prompt. I couldn't figure out how to get a graphical desktop until I tried the slightly more friendlier distro Mandrake.

Decisions, Decisions, Decisions

It's here where things get tricky. I was now a budding web developer doing small projects for myself and managing the website for our high school newspaper.

For reasons beyond my understanding, Linux strongly appealed to me and my decisions technology-wise became more complicated. My choice of technologies now depended on how I could use them for both Windows and Linux.

After high school, my knowledge of Linux and web development landed me entry level jobs writing Perl web applications. Later this shifted into doing Linux, Apache, MySQL, and PHP (LAMP).

While my knowledge was growing in various fields, the options were still pretty simple. You could get pretty far using just the LAMP stack and most of the tools you needed were provided out of the box.

Likewise, if I had decided to go a different route, say, with Microsoft technologies, they had their own "blessed" path that made the decision easier.

Fast forward more than a few years and I've worked across my different technologies: Drupal, Rails, and Python/Django.

Greener Pastures?

The thing about gaining knowledge in a certain field is you also develop a sense for the things you don't like. You find things in your existing stack of choice that needle you and can range from annoyance to frustration.

This knowledge only comes after exercising a technology more thoroughly. The more invested into something you are, the more qualms you may develop regarding it.

Some people stop and live right here. They have their tools, they know them well, and they deploy them for every problem they encounter. This is a good thing and I find myself in envy of them.

Not that I don't also have my go to tools I reach for when I encounter a problem. Just that, due to curiosity or frustration, I'm always goofing around with things on the other side of the fence. What I gain is a broader knowledge of how others are doing things "out there". What I suffer however is always a "grass is always greener" situation.

The fact is, no toolset is going to meet every issue you throw at it. Also, some things are going to have a much more well developed solution in some aspects and be more underdeveloped in others. There are always trade-offs in these things.

To throw more anxiety on the situation, there's also other, often competing, things that factor into how we choose our tools:

  • Personal interest - I find it's important that I have at least some interest in the tools that I'm using. If I don't, I find it difficult to maintain interest in innovating.
  • Work Requirement - Sometimes, our place of employment dictates the tools we use. This can be good in that it pre-determines our paths for us. It's bad when those tools are shoe-horned into something that it's not meant to address.
  • Branching Out - Often I find myself interested in a tool not just because it can do what I need now, but that it could also open up doors to working in different fields (web dev vs systems programming for example).
  • Future Proofing - None of use have a crystal ball so this one is least compelling but there are many things that, if you looked into trends, might indicate pouring your time into it wouldn't be worth it.
  • Working With Others - If I'm looking into something that will be related to my work, I try to consider the team I'm working in. Are they programmers? Sysadmin types? Is Python within reach but Go not? Often, at some point, somebody is going to inherit a project I'm working on. Will I use something more industry standard? Is my niche project just going to cause more grief down the road?
  • Time/Ability - This last one is probably the most serious. I only have so much bandwidth to commit for things. While there are a lot of things I may be interested in, only very few do I have the resources and time to develop. I really struggle with this and often end up being a mile wide and an inch deep regarding my interests.

Bottom Line

As I've branched out into more areas and my knowledge has grown in a way that allows me to try new or more difficult things, I find myself hitting up against the same wall again and again: analysis paralysis.

My personal disposition makes it very hard for me to choose something when the act of doing so means NOT using the alternatives. Call it fear of missing out or fear of commitment, the issue is very real and often I end up in a cycle of not making progress in anything. I'm always second guessing my choice, or shortly after deciding and finding a feeling of peace, I'm enticed back into indecision when there's something new being discussed "over there".

It sucks. I don't like it. It's a problem that has prevented me from doing many things that I would like to do.

It's also not something specific to technology. I find this issue crops up in other areas of my life. Anything that could have potential value or matter in the long run is up for debate in my mind.

Moving Forward

So what's the way out? I'm not certain. I've done best when I worried least about my tools and just focused on the project I want to build. When I don't put so much weight on my choices and focus on outcomes, I find I make better progress.

This is hard for me. I wish it was easier. I like to talk. A lot. Often talking is the primary way I sort through my feelings and thoughts on things. What this usually means is that my poor, non-technical wife knows WAY to much about my industry than she should. But she's patient. And a good listener.

I've recently decided to put some time into writing. Not so much to spare my wife, but to detail my thoughts in away I can review them later. In a hope that I can see patterns and not re-process things like I have a tendency to do.

What I hope to find as I grow in knowledge is a wisdom to navigate all of these open doors. The wisdom to seek what I'm interested in but also a pragmatism to temper my enthusiasm.

Categories: technical