Is Programming Hard? Here’s What You Need to Know

Is programming hard?

This is a question many non-programmers ask me.  This makes it rank up there with questions like, “do programmers work from home” and “what kind of education do you need to be a programmer?”  Inquiring minds want to know.

But unlike some of those questions, this one is actually pretty tough.  It’s a simple question, but the answer is very nuanced.

So let’s dive into it, in detail, and help you understand whether programming is difficult or not.

Is Programming Hard?  The Short Answer

So first off, let’s tackle the question with a short and direct answer.  This will set the stage for the remainder of the post.

Is programming hard?

Well, as consultants like to say, “it depends.”  Whether programming is hard or not depends on many factors, such as the specific type of programming and how you, as an individual, think.  So the short answer is that programming really runs the gamut from surprisingly easy to insanely difficult.

Think of this way.  Try answering some of these questions based on your experience:

  • Is playing basketball difficult?
  • Is speaking Portuguese hard?
  • What about driving a car?  Is that tough?

You can see why I’m hedging and saying, “ehhh… it depends.”

People Tend to Be Overly Intimidated by Programming

I will, however, offer a bit of a qualifying opinion.  Specifically, I think non-programmers tend to dramatically overestimate how hard programming is.

Ever hear someone say something like this:

Oh, I’m just really not a math person!

Well, I hear that a lot.  But I hear the same thing about programming more.  And I consider this ironic because, while some areas of programming truly do require math, many do not.  Programming, in my opinion, is a much more diverse set of concerns than “math.”

I truly believe that a lot of people assume they’d never make it as a programmer, but they’re completely wrong.  It’s a much more approachable subject than the wide world seems to believe.

Let’s Dispel Some Programming Myths, Beyond the Math One

To really drive the point home, let’s look at some additional misconceptions about programming, beyond the myth that programmers have to be really good at math.

Misconception 1: Programmers Are Elite Hackers, Like the Guy in Mr. Robot

Regardless of your age, there’s some movie out there from your heyday casting programmers as Bond-like (or Bond-villain-like) hackers.  Growing up for me, it was the movie Sneakers.  If you grew up a little later than me, you might have been unfortunate enough to encounter Hackers or Swordfish.  These days, the genre has improved, and you might enjoy Mr. Robot.

But whether the movie is awesome, like Sneakers, or terrible, like Hackers, you still have hacker protagonists and hacker antagonists that seems to both be quasi-sociopathic and incredibly brilliant programmers.

This is not real life.  It’s not even real hacking, let alone workaday programming.   So don’t assume that programming requires you to move cubes around a screen, or whatever Hugh Jackman is doing in Swordfish.  Usually, it just requires a lot of Googling.

Misconception 2: You Need a Computer Science Degree

We’ve covered this in a lot of detail, so I won’t belabor the point here.  But no, you don’t need a computer science degree to program.  You don’t need a trade degree, and you might not even need to attend a bootcamp.

Those things will all make it easier to get that first job, but they aren’t required.  So when you’re wondering, “is programming hard,” you’re probably conflating the hoops you need to jump through with the activity.  There are no prerequisites to programming beyond a Notepad and downloading a single interpreter or compiler.

Misconception 3: Programmers Have Terrible Social Skills

This one might make you scratch your head a bit.  You’re probably thinking, “What does the idea of programmers having terrible social skills have to do with me, or with why programming is hard?”

Well, it’s subtle, but real.  The world watches TV shows and movies where you can identify skilled programmers through their tendency to “geek out.

So the reverse logic creeps in and you think, “If I’m not insanely socially awkward, could I ever be a ‘real’ programmer?”

Yes.  Yes, you can.  Programmers attend lots of conferences and meetups, give talks, form communities, and have great, normal social lives.

Misconception 4: Programmers Are Immediately Good at All Things Computers

I personally got a computer science degree, and then a job programming.  And, when I did that, everyone immediately assumed I was an expert in all things computers.

  • Erik, my computer is making this weird sound—what do you think is wrong?
  • Hey, I’m getting Error #90314 when I try to close MS Word.  What does that mean?
  • Which one of these video cards is the best?

All of these were the sorts of questions I’d hear.  And basically, I’d just google the answer (if not saying, “wow, I really don’t know.”).  I made my living writing software, but that didn’t mean I knew everything and anything about computers.

I mention this because you shouldn’t think that you need to know anything and everything about computers to be a programmer.

There’s a Lot of Variety in Programming

Having busted some myths, let’s look at the reality of programming.  And the reality is that it’s actually quite diverse.  Here’s just a small sampling of the things that people do under the general umbrella of “programming”:

  • Designing the layout and visual properties of a web page.
  • Creating artificial intelligence algorithms.
  • Scripting manual tasks to automate them.
  • Complex statistical modeling.
  • Building simple, repeatable mobile apps.

And that’s just a tiny sampling of the different kinds of programming.  It doesn’t even address all of the different roles you might occupy that contribute in these efforts.

There’s as much variety in “being a programmer” as in “being a business person.”

Some Programming Roles Are More Approachable

Given that variety, I’d like to dig in a little to which roles might seem more approachable.

I’m going to back away a bit from the “easy to hard” spectrum, only because that’s so dependent on what you, as an individual, find difficult.  For instance, I’ve always done very well with math and algorithms, but I’m frankly terrible at design and layout.  You might have opposite proclivities and think I’m ridiculous to say “programming a sorting algorithm is easy” and counter with something I’d find equally ridiculous: “laying out a beautiful web page is easy.”

So understand that I’m not categorically calling things easy or hard.  Instead, I’m pointing out things you might not have considered, if you’d only ever thought of programming as highly mathematical.

  • Some people in programming roles focus largely on layout and user experience.  This means concerning themselves heavily with aesthetics of the application as well as how users interact with it.
  • Other programmers focus largely on data and databases.  Instead of building large pieces of software using complex instructions, they focus a lot more on the actual data and reasoning about that data.
  • Yet another discipline is closer to operations and support.  Some people work a good bit with computers as “power users” and learn to program by learning here and there how to automate and make what they do manually more efficient.

And those are just a few examples.  So understand that, even if programming seems hard to you, there might be roles within it that actually seem more approachable.

Programming is, However, Alien, Which Can Mean That Programming is Hard

At this point, I’d like to switch gears just a little.  I feel as though I’ve spent a good bit of time on the theme “hey, programming isn’t as hard as you think.”  And that’s true.  I think a lot of people would answer the question, “is programming hard” with a “yes” simply because they don’t know what programming involves. 

But I’m going to temper that a bit here.  Programming is hard in the sense that it asks you to think in a way that you’re not used to.

To understand what I mean, think of dealing with Alexa.

Alexa can answer a lot of tactical questions, and she’ll delight and surprise you at times.  But she’s also really frustrating.  Her computer-ish-ness shows through at times as she comically misunderstands basic human interaction.

Now, consider that, as far as computer programs go, Alexa is completely optimized to do her best to understand you.  You need to be extremely precise, literal, and obtuse while talking to her, and she’s there to understand you.

The compiler (the thing that translates your code into action) is like Alexa, but it’s not designed to make your life easy.  It’s designed to maximize utility.  So if you have to be precise in dealing with Alexa, precise doesn’t even begin to describe what the compiler wants.  Mistake a semi-colon for a colon, and you can crash a computer.

So is programming hard?  Yes, in the sense that it requires you to think in a way most people normally don’t think.

Programming the State of the Art is Legitimately Hard

To continue with the theme of “yes, programming is hard,” let’s consider that there are pockets of the programming world that require a lot of skill and practice to enter.  Don’t overthink it.  Sometimes programming is really hard.

Doing advanced things with robotics, block chain, artificial intelligence, trading algorithms, etc. requires a lot of skill, practice, talent, and competitive drive.  Some of the big Silicon Valley firms pay massive salaries to software developers, and they’re not going to do that for anyone that just happens to wander by.

There are specialties in the programming world that require lightning in a bottle, in the sense that you need practice, talent, smarts, and luck.  And beyond that, there are roles, positions, challenges, and situations that not a whole lot of people can adequately fulfill.  Programming can be quite hard.

Like Anything Else, It Runs the Gamut

But, in the end, it really varies.  Think back to what I said early on.

Is basketball hard?  No, if you mean “can anyone pick up a ball and throw it toward a basket?”  Yes, if you mean, “what are the odds that Golden State signs me to play alongside Steph Curry?”

Is it hard to speak Portuguese?  Well, probably not if you were born in Brazil or Portgual.  But probably yes if you’re 70 years old and have never spoken anything but Japanese.

So, is programming hard?  Yes and no.  Yes, it’s hard to do it at an elite level or in a highly specialized and competitive area.  But no, it’s not hard to get started.  And it’s certainly not beyond you.