DEV Community

Cover image for What was the hardest concept you had to wrap your head around?
Arika O
Arika O

Posted on • Updated on

What was the hardest concept you had to wrap your head around?

Looking back it sounds silly but I had the hardest time understanding for each loops in Javascript. Mostly because the tutorials I found were't explaining the parameters (value, index, array) of the call back function very well but also because I wasn't very comfortable with callback functions.

What was you Kriptonite while learning how to code?

Source image: Kelly Sikkema/ @kellysikkema

Top comments (43)

Collapse
 
pulakchakraborty profile image
Pulak Chakraborty

VSAM concepts. I worked as a mainframe developer in my first job and I went through a lot of pain trying to learn the basic operations on VSAM using COBOL. It'S been 6 years since I quit my job as a mainframe programmer and I don't have any memory of VSAM anymore (except that I struggled a lot :-D).

Nice to see a fellow Berliner here. Which part do you live in?

Collapse
 
arikaturika profile image
Arika O

Gotta free that memory so it's good you forgot everything about it :D. I live on the East side - Friedrichshain. Thx for your input.

Collapse
 
pulakchakraborty profile image
Pulak Chakraborty

Coolio! I'm from Schöneberg. (:
Nice posts, BTW. Keep 'em coming.

Thread Thread
 
arikaturika profile image
Arika O

Thank you. Enjoy the city :).

Collapse
 
ahferroin7 profile image
Austin S. Hemmelgarn

Odd as it sounds, avoiding premature optimization was my biggest issue when coding. I have a natural tendency to always try for the most performant solution at the expense of readability/maintainability without considering what really is 'good enough'. It's not even just been an issue coding, but with any kind of design or engineering thing, I have the same tendency to optimize long before I should and far more than I should.

Other things that come to mind that I thought were difficult to wrap my head around at the time but now look back on as not being that hard include:

  • Using the command line.
  • 0 indexing of arrays (and lack thereof in languages that are obtuse and don't zero-index their arrays).
  • JSON's super picky syntax rules (it still ticks me off to not be able to use single quotes or trailing commas).
  • Low-level networking.
  • Pointers.
  • Immutability.
  • Assembly language (x86 still is hard IMO, but I have no issues with most RISC ISA's).
Collapse
 
arikaturika profile image
Arika O

Did you use to have the premature optimization "issues" even as a junior? I'm still at that that point whee first I make the code work and maybe at the end I try to refactor it, but I can't really code with optimization in mind. I guess it's an experience thing? And I fell the pain of all the other points except for the last one, cos' I never used assembly language.

Collapse
 
ahferroin7 profile image
Austin S. Hemmelgarn

Actually, yes, I had the same issue even when starting out. I was a bit of an odd case at that point though because I already knew a lot more about the low level operation of computer hardware and the mathematics underpinning theoretical computer science than a vast majority of new developers do.

Collapse
 
marcusatlocalhost profile image
Marcus

I had a hard time understanding and implementing a SOAP service once.
And another very hard time to wrap my head around google firebase authentication and storage without using their libraries...

Collapse
 
arikaturika profile image
Arika O

I see you struggled with some really complicated things while I was there like "Hi, I'm Silvia and I can't understand for each loops".

Collapse
 
ahferroin7 profile image
Austin S. Hemmelgarn

Everybody has to start somewhere, and everybody has their own unique strengths and weaknesses.

One thing you'll definitely learn as you code is that no matter how difficult some thing you've learned seemed at the time, there's always something out there that will challenge you more.

Thread Thread
 
arikaturika profile image
Arika O • Edited

Hopefully we'll never run out of things to learn :). Thank you for your input.

Collapse
 
elmuerte profile image
Michiel Hendriks

I had a hard time understanding and implementing a SOAP service once.

The 'S' in SOAP standards for Simple.
But you had a hard time? Which means you no longer have to deal with SOAP, right?

Collapse
 
marcusatlocalhost profile image
Marcus

I had to consume a SOAP Service to book train tickets, while retrieving data was relatively easy, posting data was weird. It took a while until I understood the whole concept (I didn't write those xml messages myself, but used the php soap client) , and the data structure was very complex, it was hard to focus. At the end it helped me to understand and appreciate REST much more :). And no SOAP anymore, only for washing my hands. :)

Collapse
 
elmuerte profile image
Michiel Hendriks

"Complex" boolean expressions with multiple variables, especially if it contains various not operators.

result = !(a && !b || c)
Enter fullscreen mode Exit fullscreen mode

I always have to spell or write those out to understand when result is true. I always find it best to refactor those things out of a function, into their own. And generally to avoid using double negatives.

Collapse
 
krthr profile image
Wilson Tovar

I'm learning Crystal. So, coming from JavaScript and Python it has been difficult to write code with the limitations that had a typed language. Everytime I will write Crystal code I must think the solution with types in mind.

It is the same with Typescript

I'm still struggling a bit with types D:

Collapse
 
madza profile image
Madza

According to Phil Karlton they are cache invalidation and naming things.

Collapse
 
arikaturika profile image
Arika O

No idea what cache invalidation is but I do struggle with naming things :).

Collapse
 
miketalbot profile image
Mike Talbot ⭐

2 things that get me are:

  • Using functions as first class citizens, returning functions from functions etc
  • When I should curry something (both coding and fridge contents)!
Collapse
 
arikaturika profile image
Arika O

:)) currying, this is a term I didn't see used in a long time. I actually had to go read about it again, and as expected, I still don't understand it 100%.

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt
  • SQL in general
  • profiling
  • Most of DevOps stuff, such as Kubernetes, Load Balancing...
Collapse
 
arikaturika profile image
Arika O

SQL is very tricky in the beginning, especially if the only data-bases you used until then are shopping lists :). Thank you for the input.

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt • Edited

Problems with database in general, actually

  • Relationships and Foreign key constraints
  • Maintenance, updating, altering tables / columns, migrations and changing schemas.
  • Triggers. SQL-native, but not the-other-side-native programming.
Collapse
 
netk profile image
David Quintero 📿

Recursive functions. And let's admit it: RegEx

Collapse
 
arikaturika profile image
Arika O

RegEx is a true pain point in this thread :). Oh, an recursive functions... only reading the definition gives me a headache. Did you manage to get them in the end?

Collapse
 
netk profile image
David Quintero 📿

Yes! Oddly (or not so oddly) enough, when they sporadically presented themselves in my mind as the logical solution to a problem. It was the aha! moment we so often experience... :)

Collapse
 
royalfig profile image
Ryan Feigenbaum

The reduce() method! I could understand the simple examples like summing an array of numbers, but it took some time to see how it could transform arrays. Now I use it all the time to transform data. Super useful.

Collapse
 
arikaturika profile image
Arika O

Regex is one of those things I will never know by heart. I read about it whenever I need it, I understand it and I forget how it works immediately after I use it. And the cycle continues :).

Collapse
 
marcusatlocalhost profile image
Marcus

But doesn't it feel awesome, once you constructed a working regex pattern for one special use case? One were you even started to understand "positive/negative lookbehind/ahead" and that stuff? Sure, once it's working that knowledge is gone... unless you write this cat language every day :D

Thread Thread
 
arikaturika profile image
Arika O

"Cat language". I like that. And yes, I agree, RegEx is like array methods in Javascript, you think you know it but you always need to Google it :D.

Collapse
 
saswatamcode profile image
Saswata Mukherjee

Containers! I couldn't understand what lightweight VM even meant! Didn't really feel comfortable with it till I saw a talk about how to make a Container from scratch in Golang.

Collapse
 
arikaturika profile image
Arika O

Containers and virtual machines are way out of my league :D. I'm sure they're hard to understand.

Collapse
 
mikaelgramont profile image
Mikael Gramont

JavaScript closures: they took me so long. I remember writing my first chat room and being like, WTH is going on?

XSLT: I always rejected the whole thing. Glad I did too!

Collapse
 
arikaturika profile image
Arika O

Ooo, hello closure my old friend :). At this point I just think I'm using them without even realizing it, cos' I don't remember if I ever understood them 100%.

Collapse
 
akshay090 profile image
Akshay090

It's always a good idea to go to mozilla docs on any js topic than other tutorials

Collapse
 
arikaturika profile image
Arika O

True, I think MDN combined with video tutorials (I learn better from seeing rather than reading) it's the perfect combination (for me at least).

Collapse
 
jdhenckel profile image
jdhenckel • Edited

My kryptonite is git.

xkcd