Learning how to code is something I’ve thought about doing for some time but always found an excuse for putting it off. Then the pandemic happened, flipping my schedule upside-down. If I was serious about wanting to learn, then this was the perfect opportunity. It was time for my next 30-day challenge.

In 30 days, I went from being a complete beginner who didn't know what a programming language was to a budding developer who was getting comfortable with building landing pages using HTML, CSS, and JavaScript. I summarized my learn-to-code journey with the following tweet.

Defining My Why

So why did I choose to spend a full month learning how to code? While some people are motivated to learn programming to “get rich”, there are other reasons why I or anyone else would want to learn how to code. Some popular reasons include:

  • Finding a job as a developer
  • Launching your own products
  • Working more efficiently by automating tasks

But I chose to learn how to code for a different reason. I wanted to improve my ability to think logically. And at its core, that's all programming really is: learning how to think logically. A program is designed to check whether something is true or false; there is no subjectivity. Either your program works as intended, or it doesn’t.

I also wanted to learn a skill that would benefit me in other areas of my life. If learning how to code could rewire my brain to think more logically, then it could probably improve my ability to solve problems outside of the digital world.

Overcoming Self-Doubt

“Approach learning without preconceived notions, prior judgment, or a fixed viewpoint. See things exactly as they are—just as a child would.”

—Andy Hunt

Learning how to code has been something that has interested me for the better part of a year, but I kept putting it off. Every time I thought now was a good time to start, the voices in my head would feed me a new excuse. The excuses varied in reasoning, but they all pointed back to one thing: me.

What got me to finally take action was acknowledging the voices in my head for what they actually were: mere excuses. I took some time to confront each one until I had no choice but to get started. Here's how I did it, so you don’t have to make the same mistake.

Excuse #1: Programming Looks too Difficult to Learn

Although I have a degree in mechanical engineering, every time I saw a line of code, I thought I might as well be reading something in Chinese. I just couldn't make heads or tails of what I was looking at. I felt even more guilty since I thought of myself as "the engineer who didn't know how to program."

Visual Studio Code Editor
Confronting a wall of code like this immediately filled me with a sense of overwhelm.

It wasn’t until I paused to ask why I thought programming looked too difficult to learn that made me realize my true concern. I already knew that the logic would take some time to figure out, but what actually overwhelmed me was not knowing the syntax.

The syntax, or specific set of rules and characters, are the building blocks for learning any new skill. You can't expect to know how to write an essay until you first learn the alphabet. And you can't solve algebraic equations until you know the meaning of it's basic operations: addition, subtraction, multiplication, and division.

I felt overwhelmed because I had never been exposed to the language of code before. I didn't know what a script tag did or what a div tag represented. It looked difficult because I hadn't pushed through the first learning curve: familiarizing myself with the syntax.

Thankfully, Google is a developer’s best friend when it comes to learning syntax. Instead of spending weeks, months, or even years trying to memorize the rules and special cases of multiple programming languages, I just needed to learn enough to know the right questions to ask Google.

Excuse #2: How Do I Choose What Language(s) to Learn

There are about 700 notable programming languages in existence, both in current use and historical. While some languages are more popular than others, it’s overwhelming to a beginner who doesn’t know the popularity and capability of each one. You could easily spend hours watching YouTube videos and reading blog posts to figure out what is the perfect language stack to learn.

But the reality is deciding what to learn isn't nearly as important as choosing to get started. Once you start, you will soon discover if programming is even something you enjoy doing. Trying to optimize before you begin is like trying to learn how to throw a curve ball before you ever play a game of baseball. You need to go play first to see if it's even something you enjoy doing.

Getting over my decision paralysis was easily solved by turning my decision-making over to the experts. Instead of spending hours researching what I should learn, I just signed up for a coding course that taught a popular coding stack for those interested in web design. I was already interested in learning how to modify the layout of my blog, so that was the only reason I needed to get started.

Excuse #3: It’s Too Late to Get Started

Learning how to program never crossed my mind when I was in school. In fact, I think the closest I ever came to programming was creating a pivot table in Excel. By the time I became interested in learning how to code, I was already four years removed from academia and afraid that the ship for learning had already sailed.

I also assumed that programming's rise in popularity meant that the market was already over-saturated with a bunch of 19-year-old kids who started learning how to program video games when they were 11. There just wasn't a chance for somebody like me who already had a career to learn a new skill well enough to become competitive.

But the reality is that the number of opportunities available for developers greatly outnumbers the number of people capable of doing the job. Being a programmer is still a relatively new occupation compared to most of the jobs that make up the workforce. While you may think you're too old to get started, you're definitely not too late for building a career in this space.

Actually, you would be ahead of the curve.

Diffusion of innovation curve
Learning how to code would put you somewhere in the innovator and early adopter stages.

Excuse #4: I Don’t Have Enough Time

Most of the time, when I say I don’t have enough time to do something, what I’m really saying is that it’s not a priority. I always find time to do things that matter to me, so what really needed to be asked was whether or not this also mattered. Is learning how to code worth the opportunity cost of not being able to do something else?

Framing my decision this way made me realize it was worth pursuing. While I may not take it far enough to make a career out of it, I knew learning the skill would have multiple benefits. Off the top of my head, learning how to program would improve my thinking, keep me organized, and make me comfortable with figuring things out on my own.

Using a 30-day challenge to learn the skill also gave me a predetermined out if I decided later that it wasn't for me. But until those 30 days were up, I would make learning how to code my top priority. If I just so happened to enjoy the learning process, I could maintain the daily habit even after the challenge ended.

What Did I Learn?

After overcoming my self-doubt, I turned my attention to what I would be learning for the next 30 days. I chose a guided course so I could focus all of my attention on coding instead of wasting time trying to decide what to learn next. After some initial research and talking with a friend, I chose the Codecademy Web Development course.

The Web Development course was perfect for a complete beginner like me since it started with the fundamentals of programming: HTML, CSS, and JavaScript. The course exposed me to the world of programming while teaching the skills for becoming either a front-end or back-end developer.

Codecademy Web Development course page
From the Codecademy Web Development course page

Learning HTML

I spent the first three days of the challenge learning the basics of HTML. For those who may not be familiar, HTML stands for Hypertext Markup Language. It's the most basic building block of the Web. It defines the meaning and structure of the content you read when visiting any website or app.

HTML uses "markup" to annotate text, images, and other content that's displayed in a Web browser. HTML markup includes special "elements" such as <head>, <title>, <body>, <header>, <footer>, <p>, <div>, <img>, <ul> and many others. An HTML element is defined by it’s "tags", which consist of the element name surrounded by < and >.

HTML is foundational in large part due to it's hypertext function. Hypertext refers to the clickable links that connect Web pages to one another, either within a website or between websites. Linking content is easy to overlook, but it's one of the fundamental building blocks of the Web. It’s hard to imagine a Web where the only way to navigate to different content was having to search for it directly in the search bar.

If a Web page, like this blog post, was represented by a house, then HTML would be it’s foundation and wood frame. It provides the house it’s structure and determines other properties such as its size and shape. While most people would look at a wood frame and immediately recognize it as a house, in this modern age, it is far from being complete. The house is missing the materials that make it unique.

Learning CSS

After spending the first three days learning HTML, I spent the next three learning the basics of CSS or Cascading Style Sheets. CSS is used to style your website by selectively styling individual HTML elements. Typical uses of CSS include modifying text and changing the layout of the web page content.

Styling text is done through changing its properties: font type, size, color, boldness, italics, line and letter spacing, drop shadows, and other features. The video below shows me modifying the color and size of the header I wrote in the first video.

CSS also lets you modify the layout of your web page. To understand how CSS can edit a web page, you must first know that each HTML element is contained in a box called the “box model." Each box consists of margins, borders, padding, and the actual content, which can all be modified to your liking.

Box Model
CSS Box Model [Source: khanacademy.org]

To continue with the house metaphor, CSS is the materials that give a house it’s style, such as the choice of paint color, type of flooring used, and the trees and shrubs planted in the front yard. While you technically don’t need these things to have a house, it wouldn't be very appealing compared to all of the other houses in the neighborhood.

Learning JavaScript

After learning the fundamentals of HTML and CSS, I spent the remainder of my challenge learning JavaScript and incorporating it with the other two languages. JavaScript is an actual programming language (HTML and CSS are considered to be a markup and styling language, respectively) that can make your website interactive.

JavaScript lets you build a lot of things such as browser games, web servers, add animations to images, and much more. It works by letting you store useful values inside variables, perform operations on pieces of text (known as strings), and run code in response to particular events (mouse click, mouse scroll, etc.).

It wasn’t until I started learning the fundamentals of JavaScript that I began to appreciate what all could be achieved with knowing how to code. It was also the first time I struggled with picking up some of the concepts. I hit my second learning curve: learning how to think logically.

While HTML and CSS were easy to understand once I knew the syntax, JavaScript required knowing both it's syntax and logic to solve a problem. It's about deciding whether something is true or false and how to arrive at a solution with the least amount of steps possible.

Finishing off the house metaphor, JavaScript would be the “guts” of the house that gives it it’s functionality. It would be the electrical, HVAC, and plumbing systems that make modern living comfortable. Without it, you would still have a pretty house, but you wouldn't have A/C, couldn't take a shower, or even wash the dishes. The house would just be a "dumb" structure lacking functionality.

Finding Motivation to Get Started

I'll be honest, learning how to program, like learning how to speak Spanish or play an instrument, takes serious work and requires going through a bit of pain before it gets fun and potentially profitable. But going through life always trying to avoid pain is futile. You will either suffer the short-term pain of imposed discipline or suffer the long-term pain of regret and disappointment.

I say all of that because if learning how to code is something you’ve been thinking about but have kept putting it off as I did, then you need to find a way to get started. I recommend you start with a 30-day challenge to break down the seemingly large task into something manageable. If by the end of the 30 days you realize it’s not for you, well, you can at least rest easy knowing you finally gave it a try.

While a 30-day challenge is great for committing yourself to learn something new, you also need to have realistic expectations. If you’re starting from the point of an absolute beginner like I did, you cannot expect to be a full-stack developer by the end of the month. Learning how to program is challenging and will take time. But if you use those 30 days to soak up as much as you can and build a daily coding habit, then success is inevitable.

If you’re ready to get started but still unsure where to begin, I recommend you check out the Codecademy Web Development course. It’s perfect for exposing you to the world of programming while also teaching you the skills for designing your own development path. To make it even easier to get started on your coding journey, you can get your first month of Codecademy Pro for free.

Happy coding.