"Ding!"

I can vividly recall the sound that the computer made when I received a new chat message from a customer. My first job out of college was to work as a live chat agent in customer support for a web hosting company.

I hated that sound.

Not because I hated customer support. I actually found the job to be somewhat enjoyable despite all the negative perceptions about customer support jobs in general. I enjoy helping people and serving others, so the job wasn't a terrible fit.

I hated that ding because it was a constant reminder that I was being paid to sit in that chair, take as many chats as possible, and had no autonomy over what problem I was solving.

I was a cog in a machine, and the company could see no real incentive to help me grow in my career and respond to my personal desire to do something more intellectually challenging.

I tried asking to transition into development on multiple occasions but was met with resistance each time.

I had the realization that no one was going to give me what I wanted unless I did something about it. If I kept at my job, I would end up where some of my coworkers were. Well into their 30s, good at customer support and good at navigating the systems of that company, but not terribly useful outside of that context. Some were addicted to escapes like video games and had to numb their 9-5 experience of a job they hated with freedom on nights and weekends.

That customer support job paid me $35,000/year and had no real future growth potential as pay raises were limited to 10% a year, at best.

No thanks. Not for me.

I wanted to acquire a more in-demand skill that I could leverage to command better pay and a better life. I wanted to be able to afford a better lifestyle when I got married and had kids. I wanted to be doing work that I thoroughly enjoyed and felt challenged by.

I had to take matters into my own hands.

Improved financial stability was my ticket out.

I intuitively knew that if I had the money, I would choose to do something other than customer support. I needed an avenue to guarantee a better pay more than anything else.

One day, my brother pointed me towards a coding bootcamp that he was thinking about attending. It immediately peaked my interest. I had some coding experience already and was actively coding on nights and weekends by automating certain tasks for my customer support job with little scripts here and there.

While there was no real guarantee that I could land a job in software engineering and experience the success as touted by the outcome statistics of these coding bootcamps, I knew that I was good enough and had the baseline skills to eventually succeed as a programmer.

My new mission, while working a customer support job, was to just get better at programming.

Getting better at programming empowered me to change my situation.

I knew that if I could get better at programming, I would be increasing the odds of success in the bootcamp. I would be increasing the odds of success in the job search. And I would ultimately be increasing the odds of success as a professional software engineer.

Getting better at programming meant that there was a future where I would work on more complicated, abstract problems with computer systems rather than that of a customer's immediate service needs. I would be intellectually challenged. I would have more autonomy over my work schedule.

Getting better at programming meant that there was a future where I would be paid better since I was solving complex problems that not everyone could easily solve.

Getting better at programming meant that I wouldn't feel abused by certain unfriendly and unsatisfied customers who had no choice but to take their anger out on customer service reps like myself. I had nothing to with the reason for their anger in the first place, and this was probably the most frustrating part of working in live chat.

Getting better at programming meant I could change my life.

But taking on the challenge of getting better at programming came with other challenges.

The first challenge was to figure out the right strategy for how to get better at programming.

This pursuit of planning can be paralyzing, overwhelming, and down right debilitating if not kept in check. There are tons of resources you can start with online. Different resources hand out different strategies and roadmaps to follow as a new coder.

If you want to start getting better at programming, cut out all the noise surrounding what is the "best" way to start by putting the question aside, at least for now. We can always optimize strategy later.

In reality there is one central piece of advice that cuts across all the different ways you can go about learning to code.

If you want to get better at programming, code every day.

In hindsight, what I did right was to commit to coding everyday right from the beginning of my journey.

You don't need to commit to any one resource, strategy, or roadmap. You just need to commit to the process of sitting down and coding every day.

I learned about a few high quality resources through the help of the coding bootcamp that I wanted to attend, and I committed. I showed up and programmed every day until I could get into that coding bootcamp. I made no excuses.

I focused on the process of coding everyday, not the obsessive planning of an "optimal" strategy.

If there is one thing you can do right now to increase the odds of your success, it's this:

Set aside time for coding consistently.

If not every day, at least on a consistent schedule that you can repeat every week.

What you want is a "sacred" block of time that is yours. You want to protect that time because your future depends on it. You want to carve out a little slice of your life and see it as an investment for your future.

Here's the practical reasons why this advice works:

  • Programming boils down to solving problems in a new language.
  • The act of solving a problem forces you to learn by process: encounter problem -> struggle through problem -> solve problem -> extract lessons / solidify understanding
  • By making time to program, you ensure that you continually encounter new problems and repeatedly learn by process in a loop.

In other words, without making time for coding, you have no guarantee that you will continue to encounter new problems. You have no guarantee that you will get better. Solving one problem won't make you that much better, but solving one problem, one day at a time, for hundreds of days in a row will make you immensely better.

If you consistently encounter problems and make time to solve them, you are consistently participating in the process of learning how to program, and that's the only way you get better.

If you want to get better, start by making time for programming every day. Say no to other things and say yes to coding.

How To Be Empowered By Getting Better At Programming