My Response To “Programming Isn’t Hard — But It’s Frustrating”

Or “How To Learn To Program Without Throwing Your Computer Against The Wall And Crying”

Evan SooHoo
6 min readJun 13, 2023
Photo by Pakata Goh on Unsplash. Obligatory picture of code with no human in it. Who wrote the code? Probably Skynet.

I read a post called “Programming Is Not Hard,” by Andrew Zuo, and I was not a fan. He argues that programming is not hard because “any programming problem can be solved with trial-and-error, divide-and-conquer, and dynamic programming,” which I think is a little bit like arguing that “professional basketball is not hard because all you need to do is shoot, pass, and dribble.” This statement would not only be reductive, but inaccurate as well.

I do have him to thank, though — he references an excellent post by Clive Thompson. I would encourage everyone to read it. It is so good that I tried to borrow Clive Thompson’s book.

#1 hold on 0 copies…wow, I am sure I will get that book soon.

“Programming Isn’t Hard”

As the author Brett A. Becker notes, you frequently hear — from educators, tech firms, and some software developers themselves — that coding is incredibly hard. Yet as Becker points out, there’s no strong evidence that programming is harder than other difficult activities. We don’t have any solid data showing that being good at programming is harder than being good at, say, being an ER nurse, or a trial lawyer, or a chef — in part because “hard” is a weirdly ambiguous word.
Source, emphasis mine

The one thing I disagree with is half of the title; the body of the original article states that “it’s not so much that programming is hard.” The article never explicitly calls programming hard or easy because the term is difficult to define. This ties to a much more interesting point, one that I do not believe anyone has answered in definitive terms: Is programming like math, or linguistics?

A five-second Google search would say “neither,” and SciShow has a more nuanced response, but here is a related question: Who is more inclined to be proficient at programming, a linguistics expert, or a math expert? When learning a foreign language, a person might start by learning definitions, then study a grammar, then craft original sentences. Through immersion, he/she would gain the ability to communicate. In math, a person follows set rules and uses logic in order to arrive at a solution.

Clive continues by outlining stories from 200 programmers he interviewed to write his book. Frustration tolerance, it seems, is much more useful a skill in programming than raw intelligence. Clive tells an anecdote of his own experience dealing with frustration as a journalist, and working with problems researching and writing, as opposed to a problem he has as a hobbyist programmer. Programming, he feels, is much more frustrating — in contrast to journalism, it is more linear and getting stuck on something feels to him like a personal failure.

Programming is not necessarily harder than nursing, or professional cooking, or practicing law, but at no point does Thompson argue that programming is not hard.

Problem Spaces

If TikTok gets banned, all of you will simply be staring at a blank box with this caption

To call debugging frustrating is subjective, but on a spectrum it is probably less straightforward and predictable than your average problem as a plumber or mechanic, but several orders of magnitude less complex than the problems doctors face as they diagnose and treat their patients.

Let us compare problem-solving in programming to problem-solving in other disciplines. In writing something like Thompson’s book or this blog post, for example, there are virtually infinite solutions. Research can take different turns. Even an essay thesis can be modified and re-worked.

In a college math class, there may just be one solution. In Chess, there are many solutions but finding one is time-bound, so failing to find an adequate solution results in a game loss. In most coding problems, there are generally at least two: The “correct” one, and the “hacky” one. An extreme example of this would be Theranos’ “solution” to fake a demo by writing code to simply output bogus numbers that looked correct. A less extreme example is to use a hard-coded number instead of a configurable one.

The Solution: A Positive Mindset

The unfortunate thing is that Clive Thompson’s post makes no attempt at a solution. He writes that he got stuck on a programming problem, felt frustrated, and that journalism is not so frustrating for him.

Thankfully, one person wrote a helpful comment.

I like debugging as much and possibly more than I like programming.
I have been programming computers for over 56 years. I can be that precise because I first put my hands on a computer on Super Bowl Sunday #1.
In all those years, I think successfully debugging software has given me more pleasure than writing software.

As will come as little surprise, I adore detective or whodunit novels. However, somewhat contradictorily I dislike solving puzzles because solving a set puzzle seems pointless compared to debugging software, and thereby making it work…

This is remarkably like the concept of the “abstract other” described in psychotherapy. As you externalize your thoughts by talking to another person, in fact, any OTHER person then it allows you to see the problem or issue from a perspective outside of your own. I will leave any reference to Rabbie Burns for others to make.

This aspect of programming resembles an aspect of writing when you think you have a wonderful idea, but as you try to write it own it just comes apart at the seams and dissolves into nothing.

Source, emphasis mine

The above can be characterized as a “detective mindset.” Taken together with this comment, Clive Thompson moves the focus away from programming as a “pursuit for the intellectually superior,” and towards an accessible place that others can reach. As stated, the primary trait required is not intelligence, but frustration tolerance. There is no need for gatekeeping. Anyone with patience and persistence can learn to program.

A positive attitude here is like a voice in your head that says: Yes, maybe this is frustrating, but I am genuinely curious to see what the solution is.

Closing Thoughts

I generally find that people who are amazing at things spend more time looking up to those who are better than they do looking down at those who are worse. Programming tends to be represented in one of two ways. First is glorification: People inspire others with sleek film-making and interviews with the world’s best programmers, but they do so by focusing solely on things like office perks instead of what programming really is.

The second is gatekeeping: People advertise programming salaries and inflate their importance over the “ordinary.”

The third approach is in-between: A simple, accurate portrayal of what programming is and what it generally looks like. I wish I could link it because now the end is anti-climactic: It was a video Mayuko deleted of herself solving a bug in a mobile application. She was up at midnight, problem-solving it with her husband, when she finally had the idea to re-construct a much smaller component from scratch that contained the pertinent lines of code. In doing so, she realized exactly what call she was making was failing. If I remember correctly, the library itself she was using was wrong and not her code, but she found a workaround.

For the time being, this will have to do.

--

--

Evan SooHoo
Evan SooHoo

Written by Evan SooHoo

I never use paywalls (anymore) because I would get stuck behind them.

No responses yet