Dennis Hackethal’s Blog

My blog about coding, philosophy, and anything else that interests me.

Anyone Can Become a Developer — Here’s How I Did It

Photo by Joshua Aragon on Unsplash

I happened upon coding through nothing more than a happy accident. It was in late 2010 that I wrote my very first line of code during an internship. That internship was at a bank, in a field not at all related to software engineering. At the time, I didn’t even know I would be interested in coding. I was interested in finance. But my manager showed me some tricks to automate workflows in Excel and Outlook using what’s called a macro. Macros are small programs you write an embed in your spreadsheet or email client to make your life a little easier. I believe the very first macro I wrote must have been roughly ten lines of code. It merely added a button to my manager’s Outlook interface to move the selected emails to a predetermined folder. In the words of Jamie Foxx: “It was easy, it was simple, it was cool.”

Writing the macro and seeing my manager use it were both magical for me. I had built something with my hands, and it helped someone. I could instruct a computer to do stuff for me! I realized that if I learned how to write more such code, there would be no limit to how much I could achieve. It felt like a superpower. A few weeks later, while my manager was on vacation, I found myself browsing the company’s books24x7 account. (I’m pleased to discover that their login page hasn’t changed in all these years!) It was there that I stumbled upon the book HTML For Dummies. This book was my first real step into the world of programming. Something I especially liked about learning HTML was that I could see visible results on my screen. It was learning by doing, and there was immediate feedback to see the changes I was making. It allowed for rapid error correction and thereby made learning faster and easier.

I was hooked. There I was, making real progress, quickly, by myself, on my own time. That progress did not depend on what any supervisor let me do. It was completely self-determined. First, I learned about the different HTML elements, how to put them together in a hierarchy, how to generate a webpage’s layout, and how to put text on a screen. Next, I wanted to make things prettier, so I learned about a language called CSS. Then I wanted things to happen programmatically on the page, so I learned about JavaScript. Then I wanted to know how to build servers, so I learned PHP. I took baby steps, but I took them rapidly. My process was guided by the problems I encountered, and as I solved them, my knowledge grew. Everything I needed was right there in front of me. It all happened organically, and I was in flow. It was easy, it was simple, it was cool.

After my internship was over, though I was still interested in finance, I also wanted to keep learning how to code. I thought college could help me with both, so I enrolled in a finance and computer science degree. I was wrong. College was probably among the least creative times in my life. Instead of working on the problems I was interested in, I was told which problems to work on. One cannot learn in such an environment. I kept teaching myself how to code on the side. A friend of mine was starting an ebook-publishing company and needed an online e-reader page. He and his co-founder hired me to build it for some $500. I think that was in early 2012. It was my very first gig as a programmer, and I cannot describe how empowering it was having made money from a skill I had taught myself.

After a few months, I googled “freelancing online” on a whim and found a site called elance.com (now upwork.com). I signed up and quickly found my first clients. We built rapport, and some of them became repeat clients. Within a few months, I made enough to pay the bills. A couple of months after that, I was able to put money aside into a savings account. There was no end in sight. If college was meant to teach me the skills I needed to make money, and I had already learned those skills, what did I need college for? Why should I wait for another three years before I could make money doing what I already loved doing? And why on Earth would I wait for someone else to approve of my skills by handing me a certificate? I already knew I could do the job.

Almost everyone at the time discouraged me from dropping out, but I did so anyway. I haven’t looked back. I lasted two semesters, and I should have dropped out after the first one.

One of the secrets to my financial success was that I lived well below what I could afford. You don’t always have a steady income as a freelancer, so you need to be prepared for less busy times. I shared an apartment with two roommates and lived in a tiny room for roughly $300 a month. Adding groceries to that made for maybe $700 of expenses each month. I charged $50 an hour at the time, so I knew I could pay my entire month’s bills as long as I worked a long day or two. That made my business easy to sustain. Except for some slow weeks, I made money almost every day — and on the few days I didn’t, I still spent all day on the computer, learning new things and improving my skills. I discovered an exciting treasure chest of knowledge called StackOverflow. And what was this thing called GitHub? Ruby on Rails? The world of opportunities was infinitely big. I was my boss, and I was on my schedule. I loved working long nights, listening to the Inception soundtrack, fueled by midnight Nutella toast.

I remember trembling with excitement when I first deployed a website I had built using a tool called Heroku. I could create anything I wanted and put it online for free and all the world to see instantaneously! It was easy, it was simple, it was cool.

Within a few months, I was on the Elance homepage, celebrated as one of their most successful freelancers. I attribute part of my success to the following: I never doubted myself. Whenever a prospective client explained what he needed and asked me, “can you build this?”, even when I didn’t quite know yet how to build it, I always emphatically replied, “yes!”. Once I committed, I had to figure out how to do it — and I always figured it out.

Through networking in college — probably the only good thing that came out of college for me — I made some friends who wanted to start a company. I joined them as CTO and co-founder and built the company’s entire tech product and infrastructure from scratch. I had only been writing code for a year and a half at that time — what employer would let you do that? After a couple of years, I left the company and started freelancing again. Fast forward another year or two, a hiring manager from Apple reached out to me on LinkedIn. Two years into the job, in 2017, I was promoted to independent contributor level 4 out of 5. Most people retire at that level.

And the rest is history. I really do believe anyone can be a developer. Contrary to stereotypes, coding doesn’t require genius. It just requires some fascination and tenacity. I’m by no means a genius, I just love the craft.

To recap, if you want to make it as a developer, I suggest the following:

  • Initially, keep your monthly expenses as low as possible without compromising your quality of life. Ideally, you can pay your monthly bills after a day or two of work. This point is especially crucial if you start as a freelancer.
  • Learn, learn, learn. Always keep a beginner mindset. There are infinitely many things to learn in this rapidly evolving industry, and you will always be a beginner.
  • Do not let people dissuade you from pursuing your goals. They will try to convince you to take “the safe route.” But the safe route isn’t safe if it requires giving up on your passions and dreams. Don’t fall for that.
  • Believe in your ability to figure things out. Say yes to jobs and problems you haven’t solved before.

If you have questions about the path to software engineering, if you don’t know where to start, if you want to take the plunge but are nervous about it, or if you just want to chat — don’t hesitate to reach out on Twitter or send me an email (dennis.hackethal@gmail.com)!

If you enjoyed this article, follow me on Twitter for more content like it.


What people are saying

What are your thoughts?

Markdown supported. cmd + enter to submit. You are responsible for what you write.