DEV Community

Cover image for Is Programming Actually Hard?
Dani Amsalem
Dani Amsalem

Posted on

Is Programming Actually Hard?

Not in the way you think it is…

In September of 2018, I began my first of 90 days of software developer bootcamp. I had just recently turned 28 and recent events in my life helped me decide to quit my job (as an e-commerce brand manager) and pivot into being a dev.

My only regret? I wish I had done it sooner.

When I was a kid, I used to think becoming a developer was hard. I thought it required lots and lots of effort to learn. I imagined forcing myself to read technical manuals and documentation. I had visions of studying math and formulas to develop superior thinking skills.

Fortunately, I couldn't be more wrong.

Recently, I reviewed my preconceptions and recognized them as fundamentally flawed thinking. It isn't hard, it shouldn't be complex, and it doesn't require superior mental powers.

I've found 3 requirements to becoming a developer:

  1. Understand the words and symbols (there are a few of these).
  2. Understand the grammar (developers call this "syntax" and it's the way words are put together to communicate ideas).
  3. Understand how to Google what you don't know (so, so important)

Mac Pro, Do More

Bootcamp

I attended a really interesting bootcamp in Portland, Oregon. What made it interesting wasn't the variety of courses, but rather the first course every program began with.

The first course you did defined every word and symbol fundamental to programming.

Everything from the symbols used in links (URLs), to the fundamental words like "computer" and "developer", as well as deeper technical terms, all were defined.

As I continued through the bootcamp's courses, I began to learn more about the grammar that is used. Fortunately, many languages use a similar grammar (aka syntax) and eventually this becomes second nature.

One of the things the bootcamp stressed was being able to do your own research.

At first sorting out my own confusions was very tough. As I pressed on, I found that using my new vocabulary had a major, positive impact on how I conducted my research.

I began using certain key words and phrases that other developers also used when trying to solve similar problems as me.

At some point, I realized I knew how to Google my coding questions.

Ultimately, what I got from bootcamp was belief in myself.

I knew how to code, I knew how to continue learning and growing, and I knew how to dig myself out of pretty much any confusion.

Hello World

My First Job

After many hundreds of applications, many phone interviews (and rejections), as well as several coding challenges, I landed my first job as a web developer at an agency in NYC.

The pay wasn't great, the work was challenging, but I loved it.

I was constantly studying and researching because my role as a WordPress developer meant I had a new language to study. Not only that, but I still had so much to learn when it came to fundamentals of web development.

Fortunately, I had all the tools I needed:

  1. An understanding of common terms and symbols.
  2. An understanding of the grammar (syntax).
  3. The ability to research and solve my own problems.

When you have a job, it's so much easier to learn and retain what you've learned.

When programming is your job, by necessity, you must learn new ways to do things.

When you work with other developers, naturally your understanding of development grows. Every developer has a different point of view as far as grammar (syntax), tools to use, and the process (any process) should be started.

Programming is less about repetitively solving the same problem, and more about finding new and better ways to solve the problem.

For example:

  • You can start a puzzle by finding all the edges and corners and assembling from there. Or you can start from the main point of interest, and build your way out.
  • You can start a video game by discovering what kills you, or you can explore the map, or even by reading the forums.
  • You can write a short story from the hero's perspective, from the narrator's perspective, or from a friend's perspective.

As many ways as there are of solving puzzles, video games, and challenges in life, similarly, you will find many ways to code things.

Developer Coding

In Summary

So to sum it up, more than a year and a half into my career as a web developer I've recognized a few things that I wish my younger, twenty-something self had known:

  1. Programming isn't hard, at least not like you might expect. All it requires are good study materials, and enough persistence to keep at it every day, even if it's only for an hour.
  2. Programming shouldn't be complex, the more I read and study - and I do that daily - the more I find that all senior developers and experts advise us to write simple, human-readable code.
  3. Programming shouldn't be avoided, just because you don't understand it. It's actually far simpler than it looks. All you have to do is break it down into single, simple components.

If you want to become a software developer or some other sort of specialist, don't become discouraged by how "hard" it all looks, or the appearance of complexity.

More often than not, the complexities are just a result of misunderstanding the words, symbols and grammar.

If you have those fundamentals in, and have some guidance for doing your own research, I believe any subject can be conquered, with a little persistence.


References

If you want to know what bootcamp I went to, or what study materials I recommend, check these out:

  1. I attended The Tech Academy Bootcamp, they have online and in-person classes and you can find them at learncodinganywhere.com (if you tell them I recommended you I may earn a small commission).
  2. The Tech Academy also published a tech dictionary with the simplest, best definitions ever. You can find the dictionary on Amazon.
  3. After completing the bootcamp, I went through most of FreeCodeCamp's curriculum. While they don't cover words and symbols you need to know, they do have a lot of information and best of all, it's free. Learn more at freecodecamp.org
  4. If you're struggling with computer studies in general, I can't speak highly enough about Study Technology by Applied Scholastics. Here's a quote:

The basic fact is that students fail to learn because no one ever taught them how to learn - that is, how to identify the barriers to learning and how to overcome those barriers.


If you have any questions or feedback, please share your thoughts below.

Oldest comments (30)

Collapse
 
pavelloz profile image
Paweł Kowalski • Edited

It is like chess, easy to learn, hard to master.

Collapse
 
damsalem profile image
Dani Amsalem

Great analogy Pawel. Every time I think I have worked out an optimum solution to something, I'll revisit my code after several weeks or months and consider:

What was I thinking? I should have done X instead of Y!

Anyway, thanks for reading!

Collapse
 
grenmath profile image
Mathieu Grenier

Once you mastered, y'll always learn new stuff. That mean, Yoda dont know all stuff ;)

Collapse
 
v6 profile image
🦄N B🛡

Moving the pieces according to the rules is easy.

But it's hard to compete effectively.

Collapse
 
nataliedeweerd profile image
𝐍𝐚𝐭𝐚𝐥𝐢𝐞 𝐝𝐞 𝐖𝐞𝐞𝐫𝐝

The hardest thing about webdev, is breaking down the problem into logical steps. Small chunks are manageable and easy to build, but the whole project can feel daunting and terrifyingly complex.

Collapse
 
damsalem profile image
Dani Amsalem

Yes agreed! Once you've found that one step which can be solved, the rest tend to fall into place like dominoes.

Collapse
 
tadman profile image
Scott Tadman

The easy part is that you can make it hard if you're not paying attention to what you're doing. The hard part is making it easy.

Collapse
 
radkin profile image
Noel Miller

Totally agree with your statement about someone teaching you "how to learn".

I prefer to look at "Is programming hard" like this:

Getting the basics of programming is like learning a foreign language "syntax", "grammer", "parts of speech", are all pretty easy. Answering questions like:

  • What is the desired end result?
  • What is the best approach to reach our goal?
  • Has anyone done this before and if not what is the best way to do it?

Knowing the correct approach is the hard part and once you have learned it, it seems easy and I suspect you will quickly forget how difficult it was to master.

Your post is heuristic and I appreciate that. Thanks ;)

Collapse
 
damsalem profile image
Dani Amsalem

Haha yes Noel, I fully agree with you! In hindsight, the approach sure doesn't seem too difficult, but at first glance it might appear insurmountable.

Thanks for your kind words.

Collapse
 
coderija profile image
coderija

Insightful article! thank you for sharing it with us.
Indeed programming is easy it just requires a lot of practice, and keep building small projects to understand how things are working.

Collapse
 
damsalem profile image
Dani Amsalem

You're welcome!

Yes, I very much agree. Practice, build, practice, build, and then practice some more.

Collapse
 
muhimen123 profile image
Muhimen

Programming was never hard. The problems you solve with it are sometimes tough.

Collapse
 
damsalem profile image
Dani Amsalem

I appreciate the kind words Sebastian! I really enjoyed what you said here:

Your job is to make complexity manageable.

That rings quite true for me as well.

Collapse
 
imtiyaz profile image
Mohammed Imtiyaz

Good write.

The thing is being a Programmer, you should not stop learning.

Learn Like You Breathe.

Collapse
 
damsalem profile image
Dani Amsalem

Yes, yes! That rings true for me as well.

Collapse
 
rossdrew profile image
Ross

The hardest thing about programming is not programming and having to figure out other peoples code.

Collapse
 
damsalem profile image
Dani Amsalem

Yes, but don't you love that challenge? I know I do.

Collapse
 
rossdrew profile image
Ross

I enjoy reading peoples code. I love PR's. I don't love trying to decide whether it should be completely rewritten or shoehorn in some good code between some bad code.

Thread Thread
 
damsalem profile image
Dani Amsalem • Edited

Ha that's a funny predicament you've brought up. You're making a decision between "is this good code" or "is this code good enough".

Collapse
 
mooktakim profile image
Mooktakim Ahmed

The way I have described to non-coders is the difference between learning to read/write a new language and learning to write poetry in the new language.

Collapse
 
damsalem profile image
Dani Amsalem

That's an interesting analogy! My language skills beyond English are pretty weak (Hebrew/Spanish) so I suppose I don't share the full understanding you might have. But I can definitely see your point.