The Prize Is Not Given; You Have To Win It: How I Became a Self-Taught Developer

My four-year story from changing oil to being a software engineer

Michael Henderson
Dec 6, 2019 · 16 min read
Photo by Japheth Mast on Unsplash

Right now, somewhere in the world, a person has found something so encouraging that it makes them change their way of life in order to achieve what they want. Their life is forever changed by one peak of interest.

This life-changing experience could have been a conversation, book, quote, or personal experience. In your case, I hope it is this article.

As I continue to grow and achieve my goals, I realize that a lot of you are starting from the bottom just as I did. I want to share my story in hopes of encouraging you to never give up.

I promise, whether you are about to start, in the middle of starting, or have finished the long journey of achieving something from nothing, you will find this read worthwhile.

The Journey Begins

Four years ago, I had no idea where I was going in life. I had a goal but didn’t know how to reach it because I was always told to get student loans and go to college, then everything would somehow work itself out and be okay.

I couldn’t get student loans because I didn’t have enough income. Looking back, I am thankful because debt is a catastrophe, and I wouldn’t wish it upon anyone.

Here I am, fresh out of high school, stuck in a small town worried about money for food and if I was going to be able to provide the cash for next month’s rent. Meanwhile, all of my friends are at college getting a degree and going to parties.

All I know is I wanted to become a programmer, and it felt like that was impossible.

It is weird being stuck in a position of wanting something but not knowing how to achieve it. There is a vision and a place that you see yourself at, but you’re not sure how to get there.

For me, the vision was so vivid. I could smell the coffee brewing in the kitchen where the developers make coffee in the morning, I could see the whiteboard in the conference room that has the CI/CD process written in a nice, neat, flowable manner.

I remember having this daydream as I was sticking my arm down into a 1996 Ford f150 to change the oil. I’m not sure if the smell of the old engine or the burn of the motor was what woke me out of my state of bliss. I just remember wanting to be a programmer.

That’s right, I was changing oil right out of high school … it sucked!

Where I come from, the town is small and so is the pay. The days are long, hot, and humid. If you are lucky enough to be born into wealth here, then you go off to college after high school with a full ride and no care in the world.

If you’re average or below, you get a job making low pay and live paycheck to paycheck until you retire. Then, when you retire, you rely on the government to pay your social security to have the basic necessities of life.

Needless to say, being a programmer is weird here. There are no code meetups or similar people who you hang out with who enjoy writing code and building startups. Matter of fact, the people like that have moved on to a better place and left this small town.

I was a misfit with a dream, a dream of becoming a programmer. Not because they make good money, but because I found it truly interesting. The interest and curiosity were driving me.

After a year of changing oil, I decided to get into the IT field. I didn’t care if it was cleaning rat poop out behind the server or if it was dusting the fans in those old Dell desktop towers … it didn’t matter. If I could put IT on my resume, I was going to do the job and get it done.

I looked for a job, anything related to IT but couldn’t find anything. The search was endless as daylight came and went. Plus, what was I going to do if I actually found a place that was hiring for someone in IT? It’s not like I had a resume with impressive past IT jobs. Well, I did, but the only thing on it was my oil changing career and those measly moments spent at high school, but we all know that doesn’t count as work.

As my goal of becoming a developer slowly sailed away into the sunset I began to panic. I figured if I couldn’t get a job in IT, I would just learn to code from home.

I joined coding communities online, did those boring hello world web apps with nothing but HTML, and even played around with some old computers I had found. I am so thankful I didn’t find an IT job because it drove me to learn on my own.

I learned a lot building websites at home and using online resources to learn different technologies. I spent so much time researching, practicing, and breaking things that I had to slow down; I was showing up late to work and was obviously tired during my day job. Needless to say, my changing oil capabilities were going down and my coding skills were going up.

The Job Search

Image by Gerd Altmann from Pixabay

I remember saving many paychecks and putting in about 50 hours a week. 1,000 oil changes later I was able to purchase my own server. Of course, I could have used Digital Ocean or Amazon Web Services, but what fun would that be? I wanted to learn, and the best way to do that was hands-on.

After many months of practicing my programming and server skills during my free time, I decided to search in my area for IT-related jobs. For once in my early career, I felt like I had some skills that would be useful to this booming industry. I knew how to set up a DHCP server, run and host a website, build a website, and ya know, all the basic stuff that can be learned by yourself.

Still nothing. No one was hiring for any type of IT position. I felt like it would never change, and I was getting impatient. If I was going to become a software developer, I had to make something happen.

I began to ask questions and network with people. Of course, this networking was nothing professional and merely consisted of me sending a message to old friends on Facebook and asking if they knew anyone who was hiring. One old friend actually replied and said he could probably get me an interview at a trucking company here in town.

The job was labeled “Tire Technician.” I had no earthly idea what that was, but I said OK because it had the word technician in the job title. Tire tech was better than what was currently on my resume, “Oil Changer.”

I went in for an interview, and the questions were basic. They wanted to see my high school diploma, and that was pretty much it. I asked what the job was and how many hours a week and man did it sound like it sucked. The job was checking truck tire pressures all day.

You see, trucking companies have a huge area of land that they park the trucks and trailers on. My job was to carry a huge air compressor to each one of them and check the tire pressure. The requirement was to do this from 6:00 a.m. to 5:00 p.m. Monday through Friday. Boy did it sound like hell. There was no way I was about to do this. I would just stick to changing oil.

As I was about to walk out of the door I asked the guy interviewing me if they had an IT department. The guy replied yes. To him, it was a random question, but for me, it was an opportunity. If I could not join the IT department directly, at least I would work for a company that had one.

So, I took the tedious tire checking job. I knew it was going to be harder than changing oil because it was outside in the Alabama heat all day, but hey, I got my foot in the door.

Ahhh, the memories are flooding in. Looking back, I don’t know how I stuck with this job, but it ended up being one of the major turning points that got me to where I am today.

The Breakthrough

Throughout this time of checking tire pressure for a living, I continued to practice coding and becoming involved in the online coding community. I even began writing Medium articles about coding. approached me about becoming an admin of their forum. Basically, my job was to oversee conversation, help people with any questions they have, and give good genuine guidance.

It was weird because the imposter syndrome was real even though I didn’t know what it was then. Some guy who loves to code in his free time and checks tire pressure for a living becoming the administrator of a forum that drives one of the most productive online coding curricula our generation has ever seen … yeah right.

As I earned the title “product owner” of the Free Code Camp forum, I continued to check tire pressure at my day job.

Just to put it in context, I worked around people who were 25–40 years older than me. I knew I didn’t have a future checking tire pressure in the maintenance department. I had to make my move and do what needed to be done to get into the IT department of that company.

I was checking tire pressure one day, and my boss approached me. As I said, I was the youngest in the maintenance department, so if there was anything that had to do with computers I was their go-to person. You know how older people are; they think we know everything.

There were these new computers that the freight trucks were getting for the first time. These puppies were full onboard computers that did all kinds of cool stuff. They recorded tire pressure and engine diagnostics; it was awesome.

Anyway, my boss said he needed me to handle the installation of those bad boys in all of the trucks. Was this my big break? Was this me finally slithering my way into the IT department?

I accepted the challenge and was officially known as the “computer guy” in the maintenance shop. I wore a blue mechanic jumpsuit every day and installed as well as diagnosed problems in these onboard computers.

Working with these computers led me to make trips to other departments in the company to get parts whenever we were out. I remember always having to go to the supply department because the little ball joint that helps the truck computer stick to the dash would almost always wear out.

On my first trip to the supply department, I got lost. You see, there was this big room full of cubicles before you hit the supply department. This room was pretty big, and I was out of my comfort zone. I was the only one in the room wearing a mechanic uniform, and people were looking at me like I was lost. Well, I was lost.

I needed help finding the supply department, so I asked the guy nearest me, “Hey, man, do you know where I can find the supply department?”

He began to answer, but I didn’t hear any of it. I was too distracted by the IDE that was showing on all three of his screens.

Holy crap, an actual developer? Was this my first time meeting a developer in person?

Needless to say, we became friends, and I stopped by to ask questions on every trip I made to the supply department. We would talk about all kinds of coding problems and different technologies. For the first time in my life, I had met someone with the same goals and interests as me.

Under my blue collar was a man making progress, hungry to become something better, and on a mission to earn the title “Software Engineer.”

Losing Progress

Photo by Andrew Neel on Unsplash

My developer friend didn’t care I worked in the mechanic shop; he accepted me for who I was and didn’t mind answering questions that I threw his way.

Everything was going good, and I felt like I was on the right track. I was sharing my Medium articles with the manager in the dev department, I was very active in the Free Code Camp community, and I had been in talks with the dev department on getting a job as an entry-level dev and helping with some UI stuff in AngularJS.

There was one catch; I didn’t have a degree. So, I started taking night classes after work at a local community college. I figured “I am currently obtaining my degree” sounded better than “I don’t have a degree.”

At least actively going to school allowed me to put some type of college on my resume and show some type of goal towards getting a degree.

All of this stuff we call life was just starting to make sense to me. My goal was finally reachable, and I could see the light at the end of the tunnel.

I was going to school, making progress at work, building genuine relationships with people in the dev department at my work … and then boom.

The biggest bomb of all the bombs was dropped …

I lost my job.

Yup, everything I had worked for up until this point felt like it was washed down the drain. Everyone always warned me that life would get hard at some point, but I didn’t know they meant it would be like this.

Not to mention, I lost my job because of something stupid. I don’t want to go into too much detail, but at the end of the day, it was my fault.

I felt like my reputation had been crushed along with the progress I had made. When it was all said and done, the only thing that I gained from that company was a great friendship and the title of IT on my resume.

This failure ended up being the best thing that had ever happen to me.

Getting Back Up

My first instinct was to step back and look at the progress I had made and what I had to work with. I was currently in school, so that was a plus, and my resume was looking better than it had two years ago.

I had to continue my journey to become a self-taught developer and put my feet back on the ground. Yup, I faced a pretty bad setback, but the drive and passion for programming drove the ambition inside of me.

I sucked it up and started looking for jobs in IT.

Looking for jobs in IT brought back memories from when I looked before. There was nothing; I think the closest thing I found was an electrician at an old gas station.

Then I came across a job posting for an IT guy online. This job was in a town smaller than the one I was currently living in, about an hour and 20 minutes away.

I was willing to do anything to get into the IT field. I had to build experience for my future endeavors, so I applied. I ended up getting a call about two weeks later with them wanting me to come in for an interview.

I went to the nearest clothing store and found the cheapest button-ups and khaki pants that I could find. I had never done this before, and it was very new to me.

After all, I was used to wearing a blue mechanic’s jumpsuit every day.

All I remember is being very nervous, with so much anxiety that you could hear the shake in my chest when I exhaled. I knew I was way underqualified with what they were asking for, but I was willing to learn.

I drove an hour and some change to the small hospital where I was interviewing and sold the hell out of myself. Every skill, every little thing I had learned while serving as the product owner of the Free Code Camp forum, everything I had learned while running my own server at home; I sold it, and I sold it well.

I knew there was no turning back unless I wanted to change oil for a living. This was my only shot to get into IT. As the hard questions came and the interview slowed to an end, they asked me one last question:

Why should we hire you?

The IT director asked me this. I looked into her eyes and said, “Ma’am, I am not just another employee that is looking for the next job. I am looking for an opportunity. An opportunity to learn, grow, and be the best that I can be. If you hire me, you are investing in someone that is going to do what needs to be done to help your company succeed. I know I don’t have a lot of experience in IT, but I am looking for a break. A break to become something better and to actually learn skills that will last a lifetime. Please, just give me a chance.”

There was a short pause in the room that felt like forever. They ended the interview, and I drove back home.

I won’t go into too much detail and bore you, but I ended up getting that job. For a year straight, I drove over an hour to that job, then would drive back to my home town to continue night classes.

It was hard but worth it.

My title was network specialist, but I did all kinds of stuff. Thankfully, I had a boss who was open to suggestions on improving different types of things throughout the hospital. So, I used my programming skills to build a ticketing system for managing issues throughout the organization. I built it using Angular 2 and ASP.NET Core on the back end for the API. For the first time in my life, I felt like an actual programmer who was making money from programming.

Over the entire year and some change of working for that organization, I had managed and maintained that ticketing system. I kept track of everything I learned and how I improved the processes of the organization.

This was definitely going on my resume.

Becoming a Dev

Photo by Andrew Neel on Unsplash

With the IT and programming experience on my professional track record, I knew it was time for me to step out of my comfort zone.

I knew there was so much more to learn, and I needed to get under some developers who knew what they were doing so they could be somewhat of a mentor. It’s all about levels, and I wanted to reach that next level. For those of you who know me, you know that I am a humble guy. I know that there are people smarter than me, and I want to learn from those people.

I began to apply for jobs that had “Software Developer” in their description. This was crazy, as I felt underqualified and incapable, but I did it anyway.

All the jobs I came across required a bachelor’s degree and two years of experience. I applied anyway because if I didn’t, then I was the one ruling myself out.

That is why I tell people to apply for a job even if you don’t meet the requirements. Most of the time, requirements are put in place to satisfy the shareholders and managers.

If you happen to get a call back, then sell yourself, sell your skill, and be the best that you can be. Don’t worry about getting turned down, just chalk it up as interview practice.

Anyway, I got a call back from the company out of Florida that I applied for, and they hired me as an Angular / .Net Core developer. This was the most money I had ever seen in my life, and I actually had the title of “Software Engineer.”

I worked there for over a year. I was learning so much and was happy with how things were going, but I started to realize a pattern. Most of the companies that I worked for did not have the drive and ambition that I had within me. I doubled down on classes and began to cope with that drive outside of work.

I was putting more hours into side projects than I was putting into projects at work.

I was losing passion in the company’s goals and wanted to tackle bigger and better things.

I was not challenged at work anymore and everything was easy … I knew it was time to move on to something bigger and better. Something more challenging.

You remember the friend I made at the job I lost? Well, I ended up seeing him in town one day. I found out he had been working on his own journey, working for a company that was building tools for the government.

He told me they were looking for someone to come in and build some pretty exciting tools. It seemed like they were doing some interesting stuff, and I had found my next challenge. I applied, got an interview, and got the job.

It is definitely more advanced than any type of coding I had done before, so I know it was a good move. I continue to code and am challenged every day.

Where I Am Today

I continue to work at that organization with my friend. I got caught up in work and have left the Free Code Camp community, but I am so thankful for what it has done for me and the opportunity it gave me to serve others.

At my current job, we do a lot of complicated things, but I know this is just a stepping stone for me. I still have a lot to achieve and more challenges to come.

I make more money in a year than most people my age will ever see; I no longer worry about rent or where my next meal will come from. Every day is a constant learning experience and a constant battle to be better, faster, and stronger. I continue to go to school at night. I don’t have too much longer, and I will have my bachelor’s degree in CS.

I have fought like hell to get to where I am at today. I have struggled with depression, went through some good times and bad, lost a lot of people I thought were friends, all to feed this thing inside of me they call ambition.

Ya know, I wish I was like other people and was okay with working a nine to five the rest of my life, but I am not ready to slow down … I am just getting started.

I know there is more to learn, and I want to work with companies that are building innovative, bleeding-edge technologies.

If you have a goal, don’t give up on achieving it. The road is long, and it is a hard one, but never give up.

You are going to get nervous, and it is going to be a constant cycle of stepping out of your comfort zone.

Always remember … No one is going to give you the prize; you have to win it!

Better Programming

Advice for programmers.

Michael Henderson

Written by

Writer | Software Engineer | Innovator | It’d mean a lot if you’d 👏 and follow me. New articles weekly!

Better Programming

Advice for programmers.

More From Medium

More from Better Programming

More from Better Programming

More from Better Programming

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade