Why I Decided to Learn Programming

To set the scene, I'm not entirely new to programming. I have been a hobbyist programmer since high school. I first started after going to a holiday camp, learning some basic. I have no memory of the language itself, but I made a game where you had to navigate through a maze.

BASIC MAZE

After going back to school, I taught myself HTML. When I got to the point of trying to make interactive websites, I got stuck. The choices back in 1999 were PHP, along with Apache and MySQL or the Microsoft framework based on IIS. Needless to say as a 12-year old, I struggled for a couple of weeks with trying to set up PHP, but I could never manage to work out how to get everything installed.

After this, I ended up dropping website development for a long time. I carried on dabbling with programming languages, but I never did anything past the basic tutorials as I never applied them to problems.

When I started my job with my current company, however, I began to use the programming I had learnt to start scripting some of my work, which was checking alarms for network incidents. With this renewed purpose, I started pushing myself to be able to implement new things. Move on three years, and I've got interested in website development again after looking to make graphical interfaces for the scripts I'd been making. The bug struck again, and I started to study website development more seriously. So, what is it about website development that I love?

Making Beautiful Things

I'm typically not concerned with the look of things, but as soon as those things are on the computer, I suddenly want to pay a lot of attention to the details. My thoughts are continually drifting to what is perfection? * Is this file structure right? It's starting to get too many files in this directory. * It works but it's ugly. How do I change this to make it more readable? * It's not quite right.. How about a little further to the right? But oh, starting at this screen size, it needs to go there.

Getting the CSS right for a page can be time sync, let me tell you. And don't get me started on any incorrectly indented code. I don't think I'm capable of reading code that's not indented correctly. I do need to rein myself in sometimes to make sure I can get things done.

Solving Problems

I also enjoy solving problems. There's nothing quite so relaxing to me as running a test suite, reading the error message, coding the fix for that and moving on to the next error. There is also the feeling following looking through different resources and finally having that concept click is also exquisite. Problem-solving is something I have been doing for the past six years in my current job, and I don't think I will ever get tired of it.

Learning

The other thing that I can never stop doing is learning. No matter how much you have learnt about programming, there always seems to be more to learn. I have spent many years dabbling in programming, and I've barely scratched the surface. There's plenty more learning to keep me going for the rest of my life, and thank goodness for that.

The Malleable Medium

You're not reliant on hardware, cabling between different routers and switches, new hardware and other physical things. You can code whatever it is you want, and all you need most of the time is your laptop. You can deploy things to AWS or Digital Ocean with the click of a mouse and have something to show off to your friends and family. You can create some piece of code that millions of people use all from this one portable thing. Because of this malleability, you can also break things without getting yourself into a state that is irreversible. Do you want to try a new method on a database? Copy your database, make changes to that new database then see whether the changes worked. There have been times in networking where I've wasted days of my life trying to get something back into a good state, even on just a proof of concept. The idea of software-defined networks is becoming more prominent, which will be bringing some of the wonders of this malleable medium into networking.

What Am I Currently Missing?

So, the main things that are currently missing for me are "Making Beautiful Things" and "The Malleable Medium".

So, if I want to make beautiful things, I think I am going to have to switch jobs. Networks are not sexy, and I don't think they ever will be. This sexiness makes me want to look more deeply into front-end web development and to study more UX Design. I know this will be a lot of work, as I currently have a minimal background in this area, but I think it's something I'm interested enough in to immerse myself in it.

With the malleable medium, I mentioned software-defined networking, and how I could bring that into my current role. Even if I were to bring this into my current position however, I would need to have the firmest grasp I can on programming before I could utilise software-defined networks in sensible ways.

Programming is also useful in so many different roles that it takes me out of the pigeonhole of just being the network guy. It will also allow me to provide services for the network. If people could request firewall rules or connectivity for example between two different virtual machines, I would love to be able to provide that through a website. I could automate those changes if they met specific rules, or I could quickly approve or reject requests that didn't match these rules (maybe through GitLab merge requests..).

So, whether I decide to stay in my current role in the long-term or I decide to switch into web development, the skills I am now learning to provide more than small scripts will be useful.

links

social