My pivot to software engineering
Making the switch years after graduating with an Economics degree
Hello and nice to meet you!
This is a long story about how I transitioned slowly but surely into a software engineering role. You don't have to read it. I'd probably skim it if I were you. After all, it is a long journey. But maybe somebody will find it useful to understand the how. But first, I am going to provide a bit of history so that there is context and you can understand a bit more about how I did this and what sorts of things enabled me to do so. I didn't always know what I wanted to do and it took a lot of searching to find out what that was. Mine is just one path. There are, no doubt, dozens of paths that could lead people into a career in software.
Some background
I have always had an acute interest in tech growing up. From around the age of 14, I had my parents buy me one of those giant books on HTML that people used to read back before Udemy and bootcamps existed. I would go through the pages slowly recreating examples and marveling at the fact that this baroque text could render into something that looked amazing. This was when <marquee>
was, IMO, a very hot design trend!
I eventually got into programming classes in high school. I was lucky enough to attend a school that offered courses in Visual Basic and C. After taking both of them I started to think that this was something I could be interested in.
Then comes college. My major was Computer Science...for about a year. Unfortunately I was scared off by a combination of the advanced Calculus classes and the poor instruction I received from my Java instructors which left me simply rushing to memorize vs actually understanding. So I switched majors to Economics since, as a nerd, I enjoyed debates on monetary policy and never looked back.
Work after school
After graduating I realized after job searching that very few companies hire "Economists" unless you have an advanced degree. So I took the first job I could find which was at a web design firm. I parlayed my (now 8 years deprecated) HTML knowledge into an entry level job where I had no clue what I was doing. I switched into SEO once I was in since that required less of a skill I had no idea of, and more that they were willing to teach on-the-job.
This led to a years-long sting in marketing which was absolutely soul crushing. I was bored nearly every day and couldn't imagine that all adults had to do menial work 8-10 hours a day only to come home to scant hours of free time before repeating it all over again.
A slow realization
In my marketing roles, I took it upon myself to start trying to create tools to help out the teams I was on. I started with VBA and started automating certain types of audit sheets that we had to perform that did a lot of work by scraping web content and stuffing it into columns.
When I was doing this, time seemed to fly by. I no longer hated my day!
I started looking for every opportunity at work to automate things. Google searches for "how to do [task] in vba" frequently brought me to StackOverflow where I saw people suggest trying to do things in other languages as well. I thought, "Wow, I remember I used to be into coding...maybe I'll try again!" So I picked up some material on Ruby on Rails so that I could web base my tools for my team.
Because my tools were web based, I needed to have a way for other team members to access them. I needed to maintain state. So I started reading about the ORM that Ruby on Rails provides to create and update databases.
Enter Python
I don't remember what exactly it was but (I'm sure it was a StackOverflow post) I started to try to pivot into using Python as a way of interacting with, and manipulating data that we were getting from marketing. The switch from Excel to Python for manipulating data, at first, completely twisted my mind. Excel tables are so flat and easy after all!
I went to datacamp.com and started using their Python courses for data science. This led me down some very interesting roads for how to use Python to start interacting with data. After drilling through DataCamp endlessly, I thought that a job in data science sounded interesting. Maybe I could parlay my Econ degree plus my newfound python knowledge into a job? I drilled ARIMA forecasting and plotting in Python over and over until I could speak coherently about them and describe how I would approach certain problems.
And then I interviewed.
My first quasi-tech role
I got a job as an analytics manager! I used my toolset built up from coding tools for my previous job as well as my drilling DataCamp to get into an agency doing data analytics. This involved some light ETL, some light modeling, and light coding. Basically you didn't need to be a software engineer, but you needed to be able to use the tools of a software engineer. This was the kickstart I needed.
This job started to me interested in work. I learned from so many smart people. Some people on my team came from comp sci backgrounds and some came from stats backgrounds. I borrowed code base templates for ETL and edited them to fit my needs. I ran my own statistical tests with the tools I learned from DataCamp and came up with new ideas for how we could run tests or analyze data for clients.
Is this really what I want?
Eventually I started to learn that I really love the backend work of building the load jobs, editing code and creating end-to-end processes. And I absolutely hated having to convince clients that some program did or did not work, or this campaign is worth doing or this is not worth doing. I just did not care for the business side politics of my role.
So I asked the infrastructure lead about potentially working with them. They replied asking me how familiar I was with Docker or Kubernetes. And I replied kuberwhat?
So again to the grindstone. I started taking my shoddy scripts that I had built and tried to make them more robust and containerize them so they could be easily deployed. I got more serious about learning about cloud environments (we were on GCP) rather than running everything on a bare metal cron which I had been doing.
Eventually I got pulled in to help out with building backend processes for a report that a team needed since none of the real engineers wanted to deal with something completely outside their scope of work.
After working with the business stakeholder to gather requirements I stood up a Python job that connected to MySQL db and performed a number of contortions to the data and output CSVs that were ready for the stakeholders.
Since I created this report, I was the defacto maintainer of it which kept me one-foot-in the world of the rest of the engineering team.
Eventually after being the go-to guy for getting those types of "bring data from this spot and push it to this spot" jobs I fancied myself something of an ETL developer. But as I continued to get more into containerization, cloud, and building up a data warehouse to consolidate all these things, the notion of Data Engineer sounded like it was something that I could do.
The switch
After a year or so of doing this role I eventually got a message from the infrastructure lead that I noted my interest to a while back, asking if I was interested in being on a new team dedicated to maintaining these sorts of jobs I was working on! As the demand scaled up for these types of activities, the powers that be deemed it necessary to make it somewhat official.
Of course I am interested! Once on the team we were stocked with a senior engineering lead from another internal department to guide the newbs on our path. This led to exposure to Kubernetes, CI/CD pipelines for maintaining and deploying our code, properly managing secrets, procuring infrastructure with Terraform and working with a team for code reviews.
Finally I feel like I am doing what I wanted to do!
Takeaways
- There is no one set path to getting into tech.
- Self teaching is invaluable. If I just waited for things to come I would never have gotten anywhere. Read books and do work then don't be afraid to apply for jobs.
- Convey your interests! If I had not let a senior colleague know what I wanted, they would never have pulled me in. Specifically, don't just convey your interests to your boss. Let people on the team you want to be on know.
- Don't give up. Do I wish I had just stuck it out in Comp Sci in college? Yes. I probably would have gotten to where I am years ago.