Start a personal dev blog on your domain for free with Hashnode and grow your readership.

What was the hardest programming concept for you to grasp when you got started with programming?

I still remember my 12th Grade! Pointers in C was like a nightmare for me. 😄

What were the hardest concepts for you, and how did you approach them?

Denny Trebbin's photo

Lead Developer. Experimenting with bleeding-edge tech. Irregularly DJ. Hobby drone pilot. Amateur photographer.

In the beginning, to me, it was fluent API's; especially in Java. Writing REST API's was a pain with all those chains. And each Object had its variety or allowed only certain chains to appear in particular order. Defining a Response-header, the content type, the body and HTTP state was always a pain when I was forced to use fluent API's.

  someone("me").can(new Task(Magic.class)).do("magic").stuff(new CardTrick("Know the number"));

"How can one know all the chains?"

Or

"It's impossible to write such by me!".

Then I got curious about Node.js and thankfully, some crazy genius people created the concept of 'then' - the later so-called 'Promise A+' spec. I read the documentation, and it did the trick to me.

Rajkumar's photo

Fullstack Developer.

What a coincidence, the same pointers in C is what made me fall in love with Java. It was so hard for me to get into, I immediately started breaking up with C. All I did was, learn other concepts, pass the exam, do some small programs for understanding. Once that's done, I was off to Java land and till today sticking to it!

Cliff Rowley's photo

Thinker, Tinkererer, Dork.

When I first started way back in 1984 with my Acorn Electron, programming itself was the challenge! There was nothing to lean on except INPUT magazine and the occasional snippet or two in the few books I could get my hands on and I knew just 1 other person with a computer but they weren't even aware that programming was a thing xD

Mario Giambanco's photo

Director of User Experience Development

Form method get and post, haha -

This was back in the mid 90s / mid teens - documentation was garbage obviously - I knew how to create a form and input fields but it took forever to realize that data had to post to some sort of language NOT html in order to do anything with it.

Which is why I probably fell in love with PHP. Compared to the only real alternative - CGI-Bin - PHP made it really easy to process that form request.

Marco Alka's photo

Software Engineer, Technical Consultant & Mentor

Wow, people always talk about pointers and OOP when asked about what was the hardest thing for them to grasp. But I grew up with OOP in Delphi and pointers are just that: pointers. In Delphi, you have to explicitely announce that you want to to use a pointer, else everything is auto-deduced, so I had an easy start into pointers by explicitely using them where I wanted instead of where needed.

Yeah, I never really had problems with them. My teacher at the time was awesome and explained to me, how a simple int-sized pointer could reference an array or any other structure in memory, so it was clear and easy.

So, thinking back, the hardest part about programming was finding the motivation. It took me nearly a year to find the motivation and the concept of "always learn" (or "never settle", to quote OnePlus). After that, I went on a programming spree, and never stopped, finding interest even in difficult principles (like Rust's Composition instead of Inheritance).

Fazle Rahman's photo

Absolutely! @maruru I had zero motivation when I was introduced to BlueJ Java in my 9th grade... Having a good teacher always helps. Somewhere, I think there's a huge flaw in the way programming is introduced in schools in most of the countries.

Things like:

  • What is programming?
  • Why programming?
  • What you can do with it?
  • What are the popular things built using programming?

...are not explained properly. :)

Marco Alka's photo

@fazlerocks yeah. At my school, computer science was optional. There were twenty people in the course, but 15 just wanted to improve their overall grades and thought "hey, I know how to computer, so this will be easy". Boy, never could they have been more wrong! I was one of those who was sincerely interested and added a second year with the other four guys.

Unfortunately, the teacher was awesome at explaining things, but wasn't able to motivate us in a way which would have made everyone want to learn more about computing. As you can read in my story, I learned programming because of other,quite selfish reasons :D

Taking a look at our school system, we still have to learn how to interpret poems, somthing which is nice to know, but I would rather have that optional and instead have schools teach general computer science. There is nearly no "higher" job which does not need you to handle a computer. Even if you just sit there and fill out forms for other people, you probably have to do that on a computer.

Emil Moe's photo

Senior Data Engineer

Pointers indeed, but also arrays was complex for me to understand. Also I remember how it was hard to understand the process of an HTML input going to the backend :D

Iris Bridge's photo

Software Engineer

When I was still in school I struggled with pointers in C. I understood the higher level concept but struggled with the implementation. Other difficult concepts to grasp have been recursion and analyzing performance of an algorithm and representing it with Big O.

Stian Bakken's photo

Full stack development with NodeJS/Aurelia

Callbacks. For me they were so hard to grasp.

Marcus's photo

Full Stack Developer

I would have to say the concept of memory, like Java's garbage collection, and virtual memory. Really less about the concepts of the language but the underlying architecture they never teach you about in college.

Mev-Rael's photo

Executive Product Leader & Mentor for High-End Influencers and Brands @ mevrael.com

  • When you start programming
  • You don't know anything: principles, patterns, libraries, frameworks, terminology
  • And because of that you write everything from scrath yourself
  • Years laters you figure out that all your "cool ideas", "algorithms", another "frameworks" and "problems" have been already solved in some cases tens of years ago.
  • Or you have been searching but had no idea how it is called.

So the hardest part, which is not related to programming only, is to know that something already exists and all the terminology.

As a professional you never know everything, you only must know where to find.

mukhtar's photo

web developments

I'm still newbie :) what I'm struggling with it now is recursion i got the concept but when it come to implementation i get dizzy so quick

ogochukwu joseph's photo

What language is that

Jon's photo

ClojureScript Developer.

Monad.

Since I was at first learning by myself, I tried a lot of languages. I tried Haskell too, but Monad is very abstract. Sometimes people say it's in jQuery, sometimes people say it's in Promise, sometimes call it flatMap, sometimes in Category Theory. They are very confusing words. And Monad is never something so real that we can learn from the real world.

I read tens of posts on it after I read the guide(Learn you a Haskell). And years after I read the guide again and began to know it's a structure for computation defined with abstract data types that is common used. Turned out to be simple, it's from Math. However, took me so much time to understand the abstraction from so many facts I see during the years.

And even I have known it, I still can't write code very easily with it.

Benjamin Zaslavsky's photo

Backend web developer

I have to admit, I'm still junior, but the thing that gave me most problems and still gives me some is the passage by reference.

I code mostly (almost exclusively) in PHP, and this concept is really the dumbest thing that gives me proble. I mean like "some vars are passed by reference by default, some aren't, but you can add & before some to force passing by reference" bla bla bla.

So in the end, I avoid using passing by reference and find other solutions.

j's photo

the concept you describe is the one used by java and many other languages :D and it's about memory, space and the GC. Basically every Object is a reference. we could argue about that there is no stack in PHP and why the memory handling - hence - is rather difficult and how the GC works but the logic is pretty common that objects are references since copies are costly in space and time :)

Benjamin Zaslavsky's photo

I know, I just get confused everytime I have to use it, and every time I see it in tests. Most of the time I get the answers wrong on this subject. I can answer pretty much everything else, I got good grades, and good results with my devs, everything is working fine. Except reference.

Samuel Muwakanya's photo

For me it was C++ - pointers and STL/Templates. The most complicated feature of C++ is templates, because of their power and awkward syntax. It isn't hard to use pre-written ones, and it isn't hard to write a simple templated class or function.

Enguerran's photo

I craft softwares

I have to take one step backward and say "Turing machine" and how we can perform a simple addition with this not that simple machine.

https://www.youtube.com/watch?v=FTSAiF9AHN4

(https://en.wikipedia.org/wiki/Turing_machine)

Marlen Garcia's photo

Web Designer and Blogger

Object oriented programming in Java and VB.Net

It was a horrible experience. I have to import a lot of libraries just to accomplish a simple OOP-Java task. Then followed by OOP-VB.Net. Those two subjects almost stopped me from graduating because 6 months for those two to master is too short in my own opinion. And the worst part, I can't rely to my professor because even my professor doesn't know much about it. I cant believe she is my professor because she dont know much about coding and sometimes ask me what to do after that on our finals project, they ask me to create a system in VB.Net and a simple java drawing.

So I have to indulge myself to a lot of web tutorials to learn and to pass the finals project. It was so frustrating but glad I passed.