Why did I decide to learn software development?
Tags: beginners
Published: 2020-08-09 07:05:10

I believe that to answer that I need to first answer, “What does being a software developer mean to me?”
I do not claim to be an expert and my list is not exhaustive, but I think of these as being the so-called “cornerstones” of what it means to be a software developer; A software developer is a knowledge worker, a perpetual learner, and a problem solver. 

The term “knowledge worker” was first coined by Peter Drucker in his 1959 book, [The Landmarks of Tomorrow](https://en.wikipedia.org/wiki/The_Landmarks_of_Tomorrow "The Landmarks of Tomorrow"). While I don’t wholeheartedly agree with all the ideas in his work, there are some insightful passages, such as:
> “Productive work in today’s society and economy is work that applies vision, knowledge and concepts — work that is based on the mind rather than on the hand”

This was written in 1959 regarding what he was observing in the world at that time.  We often hear about different careers and how they are the next _“sexiest job” (see: [Data Scientist](https://hbr.org/2012/10/data-scientist-the-sexiest-job-of-the-21st-century "Data Scientist: The Sexiest Job of the 21st Century"))_, but knowledge work has been valued and discussed as the future of the workforce for much longer than many might have expected. The same radical ideas that used to get you labeled as a heretic and burned at the stake are now in high demand. While software development might not get you a trip to the Pope, it can enable you to join this group of highly skilled individuals that deal not with the traditional view of goods, but in the trade of information, ideas, and the actionable output of those ideas. Needless to say, this concept is extremely attractive to me. I am someone who spends, what my partner calls, an unnatural amount of time just thinking. As such, I believe the sharing of ideas is one of the most fulfilling ways you could spend your days. 

If you ask a software developer what one thing you should learn to be successful (spoiler: I have asked many), a common response is some form of _“learn how to learn”_. Technology changes so quickly these days that to only learn one programming language or technology would be career suicide, not to mention a wildly dull way to spend your professional life.

As a self-proclaimed serial hobbyist, I love the pursuit of knowledge; I love finding something interesting, immersing myself in its culture, and digging into the seemingly endless trove of information available à la Google. I even love the struggle of starting at the bottom, as it allows me to bask in the small victories that it takes to master something. I feel the need to never stop learning and I couldn’t imagine myself doing anything but. As you might have deduced, regardless of my lack of a degree or secondary education, I see myself as a lifelong learner. I spent my late teens and early twenties learning on my own, everything from how to change a timing belt in a 1995 Subaru Legacy using only a toolset from Sears and YouTube to how to use SQL to help build financial models for the programs I now manage. Throughout this information gathering phase of my life, seven years were spent as a member of a pop-punk band. This is where I heard something that made an impact, even if it was aimed at touring musicians:
> “Comfort kills”

At its core, just about everything in life is one form of problem-solving or another; Software development is no different. Software development is problem-solving through the medium of technology. There are hundreds, if not thousands of quotes regarding problem-solving and its many ideologies, but one that I think sums up the idea of software development as a form of problem-solving while simultaneously raising the fact that it is very likely that most of a developers time might not be spent _actually writing code_, is one from Albert Einstein:
> “If I had an hour to solve a problem I’d spend 55 minutes thinking about the problem and five minutes thinking about solutions.”

I have spent much of my life, professional or otherwise, learning different problem-solving frameworks and _thinking_ about how I _think_ about problems. Breaking problems down to their core and coming up with a plan on how to overcome it is something that I get a sick amount of satisfaction from. As a child I took apart every toy I could get my hands on and put together almost as many; As a teen I bought a cheap car that wasn’t in working order and performed thousands of dollars worth of work on it to bring it back to life with no prior working knowledge of vehicle repair. A good puzzle or temple in Zelda have kept me up longer than is reasonable too many times to count, but I welcome the challenge and plan to use this love of the difficult to fuel my growing love of software development.

  
All in all, my core values as a person line up pretty well with everything I have learned about software development and what it means to be a software developer. Two common notions are people either live to work or work to live. I believe there is a middle ground in which there is a higher possibility of satisfaction in life: **Align what you do with who you are.** This differs slightly from the _do what you love and you’ll never work a day in your life_ school of thought in that you are not attempting to find a job that is your sole passion in life, but one that allows you to practice the core concepts that mean the most to you. Here is where I am supposed to say that I am excited to begin this journey, but I would argue that I have been on this trajectory long before I ever wrote my first piece of code and I cannot wait to see where this takes me.