How programming slowly took over my life
In a good way
The Early Days
I was introduced to computers at the early age of 7 (OK, fine, maybe early for 90’s kids).
My family was gifted a “broken” computer that only came with a keyboard, and had no other interface other than a MS-DOS command-line terminal.
My brother and I played around in the terminal with commands. I don’t remember how we figured out what commands to use, but it was probably a lot of trial and error.
“I picked things up, just in proximity to it all.”
I want to emphasize that I wasn’t the computer kid; my brother was. As siblings often do, we naturally partitioned ourselves into areas of talent. I was the sporty / artsy one, while my brother took the title of computer geek (sorry, bro). And rightfully so.
Throughout the next 10 years or so, he spent way more time learning and building things out at the computer, while I wasn’t as interested. Still, though, in this environment, I picked things up, just in proximity to it all.
In middle and high school, my brother built websites from scratch. I’d sit with him and watch him adjust CSS / HTML, and took mental note of how the syntax worked, at a high level.
But even then, I never thought of programming as an actual job. I don’t think the school system thought so either. On my elementary school career quiz, I matched with “aerospace engineer”. Software engineer wasn’t even on the list (btw, right now, there are 14x more software engineers than aerospace engineers).
By the time college rolled around, I still didn’t know how to get airplane off the ground (and yes, I tried to build one multiple times), but I could already play Bach pretty well (I practiced a LOT). So, I took the obvious route and went to college for music.
In my junior year, I lost interest in pursuing music. But since I had a sizable music scholarship and was so close to completing a degree anyway, I decided to keep pushing on while exploring other things.
I didn’t get it. How do functions actually work? It was frustrating, but I kept on trying.
“The turning point for me was realizing that, with a bit of research, I could learn how to do just about anything.”
Later in my senior year, I found a part-time gig managing client accounts, as well as helping to build websites. I learned how to use things like a code editor and version control. I still didn’t do much actual programming at the time, but the basics behind web development were becoming more familiar to me.
My colleague I worked with was very hands-off, and because it was a small company, I wore many hats. I was single-handedly responsible for some pretty large deliverables, and one-on-ones with clients.
I was given problems, but never the way to go about solving or implementing solutions. This approach was challenging, yet triggered a huge amount of growth for me.
The turning point for me was realizing that, with a bit of research, I could learn how to do just about anything.
I graduated with a music degree that year.
A Minor Set-back
After graduating, I looked around for a what I thought was a “real” job. After countless rejections, I found a job description that mentioned working with HTML, so I applied and got the job.
This job was at a large communications company, making pre-determined edits to healthcare documents, while sitting in a small, padded cubicle with florescent lighting.
It was soul-crushing.
I quickly became way more interested in what the programmers there were doing than what I was tasked with. But, I was met with some backlash for my curiosity, from both the programmers and my manager.
After three months, I decided to quit and go back home to live with my parents.
It was probably the scariest yet best decision I’d ever made.
Basic Programming Concepts
While home, I was determined to get out in the real world ASAP. I don’t know how I decided on learning R (the statistical programming language), but I’m pretty sure I thought it might be useful as a way to support my data analytics expertise.
“It wasn’t the particular programming language that mattered; it was the fact that I had begun to think about basic programming concepts.”
Thus, I spent each day in bed, with my laptop, studying R and writing blog posts about what I learned. I got thinking about data formats and data structures. When I went out of the house, I would bring reading materials detailing ways to transform data using R.
That was my life for 2 months. I suppose you could call it a bootcamp.
Looking back to this moment, I realize it wasn’t the particular programming language that mattered; it was the fact that I had begun to think about basic programming concepts.
I eventually applied to a data analyst position at a marketing agency.
I got the job!
Building out my portfolio
As a data analyst, writing code wasn’t part of my job responsibilities, but I found ways to keep at it.
Our data visualization tool provided an all-inclusive way to extract and visualize data, but because of this, it had no version control and little flexibility.
I ended up using Python or R to extract, transform, and — when I wanted an extra challenge — even visualize the data, since I found the programmatic approach to be more debuggable, replicable, and transferrable to other industries and jobs.
At the same time, I tried taking online courses in Applied Stats and Data Management. I had my head set on later applying to a masters program in data science or analytics.
Well, the course was awful.
We had to program in SAS, a compiled language that is used for statistical analysis. The lectures were slow-paced and the content wasn’t interesting.
I dropped out after a couple weeks.
But, I continued working at the marketing company, and ended up building a couple tools that made other people’s lives easier at the company.
During that time, I also started dating — and am still dating — an experienced software engineer, who was inspiring and able to offer a helping hand when I got stuck.
Having a mentor on the sidelines was invaluable during this stage of learning.
Three key things I learned from this time:
- Effective debugging: how to use dev tools to verify expectations, at various points in the code.
- Scope: how variables are accessible globally and within functions.
- Refactoring: how to write the exact same functionality in a cleaner and more reusable way.
I made my first web app and developed a couple reusable Python scripts. I was able to put these tools in my personal GitHub account as part of my portfolio.
“I could make real people’s lives better with writing code.”
It was at this time that I really felt the direct connection between something I built and how that affected other people.
I was addicted. I discovered that I could make real people’s lives better with writing code.
As I built these tools, the dev team began to take notice. I was shifted into a hybrid analyst/dev role, which meant that I helped out with writing jQuery to set up rules in our tag manager.
In the end, I found that I enjoyed creating tools and writing code more than I enjoyed analyzing data retrospectively.
Thus began my hunt for a programming job.
Filling in the gaps
As I applied to jobs, I did self-guided learning on how computers and the web infrastructure actually worked. I felt that I was missing a lot of this foundation, since I didn’t go to school for CS.
I ended up reading CODE, which takes a bottom-up approach to how computers work, navigating from binary and logic gates, to assemblers, compilers, and higher-level programming languages.
Alongside this, I did independent research on topics of interest, like ‘how to get a web page without using a browser at all?’, or ‘how does a DNS work?’, or using tools like ping and traceroute and what it all means. Basically, as I stumbled across terms or tools that sounded interesting, I dug in and learned about it.
Familiarity with these topics helped me become more comfortable talking about computer concepts with others (looking at you, interviews), as well as gave me a foundation to better understand higher-level web development concepts. It all began to make more sense.
After a couple months — and lots of rejections — I found a company that was willing to take a chance on me, as someone with little to no professional programming experience, but with a small portfolio and blog that showed I had potential and interest.
That was 2 years ago, and I haven’t stopped learning.