If you don’t have twenty minutes to go through this article or you prefer to not consume word vomit filled with technical jargon, the short answer is — it depends.
Notice that I said programming in the title; I’m not just referring to coding.
I’m talking about the various ways of constructing computer programs, which may or may not involve typing in various characters into your computer (see: physical programming of Dynamicland, or visual programming of Scratch). The image of a person typing frantically in front of a screen is what comes into lay people’s mind when you talk about programming. They don’t think of logic and procedures; they think of lines of indecipherable alien language.
Programming is about writing codes as much as Italian cooking is about making pasta: coding is a major part of the discipline, but it’s far from the only component.
In this context, we are referring to this term as “the use of any means to design or build a computer program”. One can technically “program” on the back of an envelope by using diagrams to illustrate the process — though it just won’t do anything on its own if you don’t implement it in a development tool.
The paragraph above contains a key idea: programming refers to both the conceptualization and the implementation of a software program. To distinguish this from the specific action of “coding” (writing codes using programming languages in development tools), I will use “programming” to refer to the field overall.
How does the ramble above relate to the question “should I learn programming”?
Presumably, you’ve had some exposure to this topic and you’re interested in learning more, but you don’t have much knowledge about it (or else you wouldn’t be asking this question). Or, perhaps, you are at a career crossroad that forces you to search for an answer, which is that you want to...
Communicate better with technical colleagues.
Expand your career options.
Remain competitive in the job market.
Understand your work tools more thoroughly.
Stay informed with technology trends.
Start a side project that generates passive income.
Now, I’m going to be honest with you that I don’t have a clear answer for any of the topics above (especially the last one, writing blog posts costs me quite a bit of time and has made me 0 dollars so far). My hope is that, as you read through this article, you will have a clearer understanding of what you can achieve with programming and why it will be beneficial to learn it. And if you don’t find a satisfactory answer, at least you will have narrowed down your scope.
Why do all this mental work upfront? Because programming is hard. It isn’t easy to learn or do, so don’t let anyone tell you otherwise. I hit that wall every time when I’m trying to get back into learning a new topic.
Let’s see if I can help you unwrap that motivation (or kindle a new passion for you).
When it comes to technical literacy — like social skills — people depart from different starting lines. Some were born into a family of highly educated professionals and have always toyed with tech gadgets and advanced software programs while growing up; some from an entirely opposite background and are just beginning to take their first baby steps into their adulthood. (And FYI, I belong to the latter category.)
Naturally, these two groups go through an entirely different experience when it comes to picking up new skills.
If you find yourself having a hard time learning any of this stuff, don’t be too harsh on yourself. You simply have more to catch up in a much narrower window. What you need to do is to start with a plan, be patient, and take it one step at a time.
Just to emphasize it once more: when talking about programming, coding is what most people think of. It’s indeed the most common manifestation of this discipline in the world today, usually used for developing software. And if you haven’t been living under a rock, you must have likely noticed that there are advertisements everywhere for coding education resources.
One of the consequences of this phenomenon is when people think of programming, they immediately think of using code to create any kind software, whether it’s a mobile game or an interactive website.
So, my guess is that some of you have thought of picking up programming because you like the idea of landing a comfy and high-paying software developer job.
If maximizing income is your ultimate goal and you are willing to work hard, there are other jobs that can earn you more money than becoming a programmer (in developed countries, generally speaking). Management consultants or technical sales are two examples that come to mind.
Even if you genuinely enjoy coding, doing it in your own time for fun is very different from doing it full-time for work. You have to sweat on projects that you have little interest in, that are poorly managed, and have ever-changing deadlines. As a matter of fact, it’s quite common that people who loved programming at a younger age end up losing their passion as they enter the workforce.
(Really — working as a professional programmer isn’t as comfortable as you may think, even when compared to some physical labor jobs. Having collaborated with many developers and worked briefly in a junior role before, there’s nothing comfortable about pulling an all-nighter to fix a critical software bug, no matter how cozy your office setup is or how much free artisanal coffee you can drink.
I’m not saying “programming is a terrible job”. As with all professions, there are pros and cons that come with the job and the circumstances can vary greatly depending on the employer you work for; I just didn’t want to paint a rosy picture and not talk about the downsides.)
Now that the part about “I want to learn how to program because I want to get a job as a software developer” is out of the way, let’s move onto the more informative discussions about why it will be good for you to learn to program.
More practically speaking, because of how much of the modern lifestyle is intertwined with computer and software use, one of the outcomes when you dig into programming is the many paths that open up for you as you make progress. This is true regardless of whether you commit to work on your coding proficiency or to just focus more on gaining a conceptual understanding.
If you choose tackle this topic, and assuming you are open-minded about taking in new information, it’s a matter of time before you branch out to explore other relevant areas — whether it’s the cybersecurity or artificial intelligence. That’s one of the upsides (and downsides) of working with modern day technology: you can start from anywhere and traverse to all kinds of places if you just keep on going. You don’t need much to build up this foundation; only as little as half an hour of focused time everyday, as long as you keep at it and don’t cut corners.
With that said, we will dedicate the remainder of this article to talk about “why learning programming will improve both your personal and professional life”.
Let’s go back to coding briefly — while I did say that you might not want to code for a living in the earlier section, there are also pragmatic reasons to pick up the skill so you can do certain things more efficiently (and save yourself from developing carpal tunnel). One great example is automating a similar set of actions that you need to repeat a few dozen times. This is common when it comes to clerical work and you will begin to notice them a lot if you pay attention to the “do X for several times” activities.
(To use an analogy to illustrate the value of becoming a “part-time coder”: while you might not want to learn the culinary arts to become a professional chef, you can still greatly improve the quality of your day-to-day life by knowing how to prepare simple and delicious dishes on a modest budget. You end up saving a lot of money long term with cooking, as you do by saving time when it comes to coding.
The main lesson I want to hammer home is the idea of self-reliance. If you are willing to put in the hard work, there is a surprisingly long list of things in the world that you could teach yourself to do.)
The following section are some of the most practical use cases I can think of in my few years of dabbling into programming. All of them have repeatedly proven to be helpful in both my personal life and at work. These are subjectively ranked from easy to hard in how accessible they are to complete beginners.
(And for those of you who are experienced — yes, I’m using a loose definition of “coding” for these suggestions.)
Manage and process data in spreadsheets. More specifically, I’m referring to using Microsoft Excel, since it does have exclusive features compared to its alternatives and it often comes preinstalled on work computers. It is probably the most widely available “programming” software out there; you must have used it at some point in the past to store data or complete simple calculations, but you could use it to do many advanced things. And I’m definitely not joking when I say that a large chunk of this world runs on Excel — ask any financial sector workers and they will give you this answer. Excel is extremely powerful and most of us are barely using 5% of its total capability, so if you have take one thing away from this post, just know that this is the tool that will always be relevant for as long as you are working as a knowledge professional (except one major caveat: you may not want your coworkers to know). Here’s a good collection of beginner-friendly Excel resources to help you get started.
Replace texts with regex (regular expressions). To put it briefly, regex is used for searching text patterns, similar to the “search and replace keyword” in text applications, but way more robust. Let’s say you have a text file containing a hundred thousand words that are separated by any number of blank spaces, and you wanted to replace the spaces with a comma in between each word. What would you do? No, the answer is not deleting the spaces one by one and adding a comma; that’s insane. With regex, you could specify a pattern that says something like “find all instances of spaces preceding any non-space characters”, then replace the matching results with a comma. Note that regex is more of an add-on rather than a tool in itself, so you could use it in a variety of applications that support it — including Microsoft Word and Excel, with some workarounds. Here is a great introductory video to the topic and an interactive playground that you can use to test your regex patterns.
Change the look and feel of websites (in your own browser). This comes in particularly handy if there are websites that you find difficult to read or have too many things cluttering the page; you can change the font styles or remove visual elements to better fit your need. By learning how to edit CSS (Cascading Style Sheets) codes, you will be able to overhaul the look of a website permanently in your web browser. Additionally, CSS is also one of the three pillars of front-end web development, alongside with HTML (Hypertext Markup Language) and JS (JavaScript), so picking up CSS is a natural pathway to help you navigate into the other two areas if you happen to enjoy web development. You do need to learn enough HTML to be able to use CSS, though thankfully, HTML is the easiest subject among them; JS is entirely optional in this case. Here is a HTML & CSS tutorial for complete beginners.
(Do exercise caution for the next two below, as they are advanced topics that could expose you to security risks if you aren’t careful enough. It’s best that you don’t jump into these ones until you’ve attained some proficiency with programming in general. I recommend to only follow trustworthy guides, such as the ones I linked, and do not copy codes from online unless you can confidently tell what they are supposed to do.)
Add new functions to websites with user scripts (in your own browser). This is where JS becomes relevant: user scripts are basically browser add-ons to provide new features that aren’t originally available on a given website. They are written in JS and are somewhat similar to web browser extensions. Though, unlike browser extensions, user scripts tend to be more flexible and can be edited more easily. For instance, a user script could add a button on YouTube for downloading videos, or it could show a warning upon entering certain websites to stop you from procrastinating. The most direct way to dig into user script is to look at the ones that other people have created and shared online.
Navigate and operate your system using the CLI (command-line interface). You know those black-green or white-green text screens from TV shows and films? You are most likely looking at a CLI. Every desktop operating system comes with at least one of these programs installed: Command Prompt and PowerShell in Windows or Terminal in macOS and Linux. While there are many technical details that differentiate them, they all serve a common purpose of commanding the system. You can perform many actions by using specific text commands in the CLI as you do with the mouse pointer in the visual side of the GUI (graphical user interface), such as move between folders and view files. In fact, some of the advanced operations are only achievable through CLI. You can also code or import programs on the fly to do things that weren’t available by default. Suffice to say, you do want to be extra careful when you are in CLI — things can go south quickly if you just carelessly enter random commands. This is powerful knowledge to equip yourself with if you wish to understand and unlock the underlying capabilities of your system, and even more so if you ever have to set foot in the Linux space. To wrap this section up, here is a fittingly advanced guide for the most complex topic in the list.
All that being said, there are thousands of other projects that you can pick from, but it is your own motivation that counts — you will much more likely keep on learning if you work on something you truly care about or solve a pain point that’s really impacting your life.
You can’t expect to finish a marathon if you aren’t driven to reach the finish line.
Speaking broadly beyond programming itself: for people who have a hand in software development, it’s invaluable to get a better sense of how applications are built and how they actually function — learning enough programming will expose you to that knowledge. Most importantly, you will have an easier time communicating with developers and understand why certain tasks are prioritized over others, both of which are likely to reduce the frustrations that will crop up during collaborations.
I view programming as an essential instrument in the a designer’s toolkit. Because, more often than not, when it comes to designing for software — whether it’s the workflows, interface controls, or visual elements — my decisions directly impact the ease of use of the final product.
In case you are a designer reading this... am I saying that you need to know how to code an app from scratch? No, not at all, but it will be helpful to know more. It is definitely beneficial to have a coherent mental model of how your design will influence the development of the digital interface, which will determine what the end user experience turns out to be.
An important middle-ground that you could strive for is understanding what technical decisions will influence people’s perception and experience, such as how the application will behave in different circumstances and how accessible the interface controls are for various demographics. While some software developers are educated about these matters, they are usually operate from a technical standpoint rather than the from end user’s perspective.
(The three biggest “sins” a professional designer can commit is to design without knowing the user’s needs, the technical constraints, or the business requirements. Although, it’s unfortunate that we are frequently forced to compromise.)
While there’s no guarantee that becoming more knowledgeable about the domain will eliminate all these pitfalls, the goal is that you will progressively make more conscious trade-offs as well as fewer naive mistakes over time. That alone goes a long way in distinguishing you from the folks who refuse to keep on learning.
How should you do it as a designer? Pick a simple project you’ve created and try to build it out into a functional version — using whatever programming tool of your choosing. You just gotta start somewhere.
As a parting gift, here’s an excerpt from Bret Victor’s talk, “Inventing on Principle”:
There are many ways to live your life. That’s maybe the most important thing you can realize in your life, is that every aspect of your life is a choice. But there are default choices. You can choose to sleepwalk through your life and accept the path that’s been laid out for you. You can choose to accept the world as it is. But you don’t have to...