DEV Community

Cover image for Is Programming Actually Hard?

Is Programming Actually Hard?

Dani Amsalem on June 04, 2020

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 tu...
Collapse
pavelloz profile image
Paweł Kowalski • Edited on

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

Collapse
damsalem profile image
Dani Amsalem Author

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 Author

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

Collapse
lifelongthinker profile image
Sebastian

Thanks for sharing your experience, Dani. Your analytic skills and talent with words will surely help you a lot in your career. Both are very much needed and appreciated.

You are right, programming in itself is not hard. But as a programmer your job is not just programming. Your job is to make complexity manageable.

That's why programmers try to keep things simple. Any system is naturally becoming more complex as you work on it. The key here is to keep this complexity to a bare minimum.

That is the hard part of programming: managing complexity on a daily basis. And that takes years to learn, decades to understand, a lifetime to master.

Keep it up, and welcome to the field 👏👏

Collapse
damsalem profile image
Dani Amsalem Author

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
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 Author

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
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
muhimen123 profile image
Muhimen

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

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 Author

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 Author • Edited on

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
alexparker profile image
Alex Parker

This is great advice. Learning to contribute in small bite sized chunks helps to avoid feeling the "burden" of the whole project at hand.
Having a mind for logic and critical thinking helps with speed, but doesn't mean its an inherently limiting factor.

Collapse
damsalem profile image
Dani Amsalem Author

Yes, 100% agreed Alex! And thanks for your kind words.

Collapse
haruanm profile image
Haruan Justino

I would like to say that write code is not that hard, but maintain a code that is always evolving is.
The most complicated part is to avoid doing a mess that slows you, and fix the mess that you or someone else did at the same time that you add new features.

Collapse
damsalem profile image
Dani Amsalem Author

Thanks for sharing your perspective Haruan, and I respect it.

I personally enjoy digging into someone else's code, figuring out what they did and opportunities to refactor. I also enjoy doing that to my own code. It's often challenging to write new code, it's always challenging to refactor someone else's!

That said, I differentiate between "hard" and "challenging". I view challenging tasks as games that require lots of looking, testing, and persistence. I view hard tasks as troublesome which require lots of unpleasant effort.

The difference between those two views is sort of what I was trying to communicate in my article.

Collapse
khattak1234 profile image
Nabeel khan

the real motivational nlog for the beginners.....Yes you are right its not as hard as we are expecting it.....The one statement you should highlight that you should break down tasks or components into simple piece of code ..to make it easy and readable.....Learning new framework is tough at the beginning but it becomes so easy when get used to it...

Collapse
damsalem profile image
Dani Amsalem Author

Thanks Nabeel!

That's a great point, and one others have also indicated. It seems we all agree that breaking down large blocks into simple, components one can confront makes for a much better task.

Collapse
martinrojas profile image
martin rojas

Great article and thank you for sharing your experience.

From my experience of learning to program and trying to help others. Everyone can learn to program, but I think the best indicator of whether someone will have a successful and enjoyable career in programming comes down to how they think. If you are able to approach a problem, break it down, and be able to solve that isolated part then moves the next one while keeping the rest of the problem in context then you will probably have a successful career in programming.

I have come to this way off thinking, mostly from seeing many people that have rushed to boot camps because of a career as a programmer will mean jobs with a high salary. Those that normally approach problems in other ways have a much harder time and tend to not want to be part of the constant learning it takes to rise in this field. As a result, they get frustrated with a career they hate just for the money.

Collapse
damsalem profile image
Dani Amsalem Author

Hey Martin, thanks for your kind words, and I respect your perspective.

It's funny, but I always assumed people approached problems in that way (break it down, solve isolated parts, while keeping in mind the whole). Perhaps not everyone does...

If that's not the case, I like to think people can learn newer and better ways of solving problems. I didn't always know how to play chess, but with lots of practice, I got to be pretty good. Chess is one of those games that requires new thinking skills such as being able to see from your opponent's perspective and then predicting his next moves.

I do agree though, there are some folks who don't want to partake in constant learning. And for them, coding might not be the best career option.

Personally, I used to avoid careers which required constant growth (like coding) because I wanted something I could settle into. After finding several jobs with those qualities, I realized that wasn't the right approach. The constant growing and stretching of my mind and capabilities is a heckuva lot more fun than anything else I've seen.

Collapse
v6 profile image
🦄N B🛡

Programming may not be as hard as it once was, but thinking is hard. The Occident used to have an institution, called the University, to help train in that skill.

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 Author

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.

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 Author

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

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 Author

You're welcome!

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