What programming concept did you struggle the most with?
Vitor Paladini

Vitor Paladini @vtrpldn

About: A software engineer that really likes working with user interfaces. Writes mostly JS at getcircuit.com. Loves cooking.

Joined:
May 18, 2019

What programming concept did you struggle the most with?

Publish Date: Aug 28 '20
29 57

Was it types, promises, or ternary operators?

Maybe async, testing, recursion?

Was it OOP, malloc, or decorators?

Or maybe compilers, data structures, or recursion?

Comments 57 total

  • Swastik Baranwal
    Swastik BaranwalAug 28, 2020

    Tree, Graph, Async, Recursion (sometimes), Decorators, Virtual class

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      I got my head around async eventually but recursion is something that I always have trouble with, even after all these years

  • Tea
    TeaAug 28, 2020

    Now now, who will admit to struggling with programming concepts? However. Some 15~20 years ago I got overenthusiastic about generics in Java. Sent me down a deep, deep rabbit hole and I wrestled on and on until I hit the right answer: in moderation. Generify in moderation.

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      I have no experience whatsoever with Java but it seems that this piece of wisdom applies to a lot of paradigms. Thanks for sharing!

  • Paul Johnson
    Paul JohnsonAug 28, 2020

    Early on in my career I think OOP concepts like inheritance polymorphism etc gave me the most trouble. After that I think Monads were probably the trickiest concept to grasp and one I don't fully grasp.

    There's a wide variety of concepts I would like to learn e.g. dependent types.

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      I share the experience with OOP, it took me a lot of "this pen is an object, it has a method write() and an attribute color" example for me to finally learn it.

      Considering monads, I have yet to step into FP for that sole reason, some concepts look real hard.

      • Paul Johnson
        Paul JohnsonAug 28, 2020

        I feel with monads experience using them in a variety of ways might be more useful than reading about it. My explanation of them would be "they're a reification of computation", which is totally useless unless you've already spent a bit of time with them practically.

        • Vitor Paladini
          Vitor PaladiniAug 28, 2020

          Makes sense, oftentimes some concepts only "click" for me after a few weeks applying it naively.

          GraphQL is a recent example, I was weeks into a project when I finally realized: "Oh, THAT'S why it is better than REST in this situation".

      • Austin
        AustinAug 29, 2020

        Monads aren’t nearly as complicated as people make it seem. It’s literally just a generic interface. Kind of like how you can have array.map, linkedList.map, or promise.map... all those types have a sort of common interface. Those are all “functors”. Monads are the same kind of thing, except in addition to map they have flatmap, which is basically just a different version of map which flattens nested results. This allows certain operations to be easily “chainable”. And that’s pretty much it.

        Boom - monads!

    • Valentin Radu
      Valentin RaduAug 29, 2020

      Monads are much easier to learn by example. If I tell someone: "Look, this is an Optional, this is how it works, the Optional is a monad. Now imagine you can apply this pattern to a whole lot of things, not just wrapping nullable values", they get it pretty fast and it's usually enough to get them rolling code using monads.

      As for inheritance/polymorphism, I used to be somewhat confused about it too and I blame it on the myriad of articles and books that don't clearly differentiate between the two just because the easiest way to show polymorphic behaviour is through inheritance (which is by the way, something you usually want to avoid)

  • Madza
    MadzaAug 28, 2020

    naming conventions 🙄

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      As the classic quote goes:

      There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton

      • Madza
        MadzaAug 28, 2020

        Yup, I always refer to that quote, too 🤣🤣

      • E Cognito
        E CognitoAug 28, 2020

        Acutally, I prefer Leon Bambrick’s version: “There are two hard problems in computer science: cache invalidation, naming things, and off-by-one errors.”

  • saurabhkumar7
    saurabhkumar7Aug 28, 2020

    Data Structures

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      Any in particular? I find matrices especially hard to grasp.

  • James King
    James KingAug 28, 2020

    the Mental shift from MVC, REST & HTTP to Event Driven Design and CQRS. That shift in thinking was a bit of a personal internal battle to start with!

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      I'm not so well versed with backend patterns but does it compare to learning the shift between imperative/declarative programming?

      • James King
        James KingAug 28, 2020

        Yes, I'd say the shift is a similar thought process change

  • Yogi Wisesa
    Yogi WisesaAug 28, 2020

    Event loop. Watch any videos explaining about it and end up thinking JavaScript is multi threaded.

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      This is a subject that I should look more into. Do you have any good resources on that?

  • Pacharapol Withayasakpunt
    Pacharapol WithayasakpuntAug 28, 2020

    MVC, MVVM

    And, currently, state management.

    Also, geospatial statistics and AI are a very big group...

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      MVVM is also not very clear to me and it has been years since I've first heard of it.

      My experience with state management, at least in Reactland, is that you probably don't need an external solution do deal with it most of the time.

  • Dendi Handian
    Dendi HandianAug 28, 2020

    I'm still struggling to decode my beautiful imaginations into CSS

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      Yeah, CSS can be quite hard to master. One thing that I like it though, is how fast you get feedback from it.

      Boot up a fresh codepen, add a few CSS lines, change some others, watch the UI change, bam you're learning.

  • Andrew Baisden
    Andrew BaisdenAug 28, 2020

    Algorithms and Data Structures. Even now I still don't have a complete understanding of it and its always required prep for many interviews these days...

  • Sattwik Sahu
    Sattwik SahuAug 28, 2020

    Django routing
    Redux
    Redux thunk

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      Ugh, I know that pain. Once I spent a whole week fighting Redux, Redux Thunks, and Redux Saga to make some async stuff that would've been much easier if I simply used default state or the Context API. 🥴

      • Sattwik Sahu
        Sattwik SahuAug 29, 2020

        Ya even connecting Firebase and Redux. All these exceedingly misleading tutorials on the internet tell me to use a TON of libraries but then I realized I could simply do it all with redux and Redux thunk. 😂😂😂

  • Vitor Paladini
    Vitor PaladiniAug 28, 2020

    I'm not sure, but it seems close enough, haha. Pixels can be hard to understand without some understanding of optics and color theory, especially for a child.

  • Gracrys
    GracrysAug 28, 2020

    Hands up for monads, but i saw some comment here talking about how you can try to understand them better using them, but dang, without knowing what they do, using them is just too hard, i was learning haskell at the time, and this was the harder concept i had to grasp from the language itself

  • João
    JoãoAug 28, 2020

    Pointers and generic delegates. If I'm being honest, I still don't really understand generic delegates.

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      Y'all are making me realize that there are parts of programming town that I have never been to before. I have no idea what is a generic delegate and will surely struggle if I need to come up with one in the future 🤣

  • E Cognito
    E CognitoAug 28, 2020

    Honestly, it would probably be garbage collection. My first job in the 90’s was writing C code and burning it on to EPROMs. By the time I came to learning Java some time latter, I had moved through C++, Delphi (also, does anybody remember Powerbuilder?) and even PHP and Javascript, but this was the first ‘serious’ language I’d picked up that used garbage collection.

    The free-wheeling, devil-may-care attitude of just allocating memory offending my well worn sensibilities no end. I’ll give you my destructors when you pry them from my cold, dead keyboards.

    • Vitor Paladini
      Vitor PaladiniAug 28, 2020

      It is incredible how diverse programming is, most of my experience is with web-focused languages like PHP and JavaScript so memory allocation is a concept that has never been part of my daily work. But I can understand the difference you must have felt when switching, haha.

  • Eliomar Garzon
    Eliomar GarzonAug 28, 2020

    Still fighting with oop. Lol

  • Vitor Paladini
    Vitor PaladiniAug 28, 2020

    Yeah, I've built quite a lot of WordPress websites with date queries and it never gets easier.

  • perpetual . education
    perpetual . educationAug 29, 2020

    Weirdest concept for us... was that there was a boss or creative - that had no idea what they were doing... and then they sold all these crazy ideas - and then we were supposed to somehow make all that crappy stuff - and fast / and have everyone get really rich and happy. Yikes. That part of the pipeline is broken! Then maybe Auth? Still don't know if we're using a monad ;)

  • Valentin Radu
    Valentin RaduAug 29, 2020

    Generics, covariance and contravariance.

    It took me quite a bit to understand them, although not that complicated now that I think about it. Also, it didn't help Swift was riddled with generics related bugs when I first encountered them in practice.

  • Seanmclem
    SeanmclemAug 29, 2020

    Global state management in react. I really don't like any option.

  • Max Ong Zong Bao
    Max Ong Zong BaoAug 29, 2020

    Hmmm... pointers which made it tough to learn C because of it.

  • Wilson Gramer
    Wilson GramerAug 29, 2020

    I was learning Go and struggled a lot with channels and buffered channels, after using promises for everything in JavaScript. I kept getting deadlocks trying to wait for multiple goroutines to all finish!

  • EricGeek
    EricGeekAug 29, 2020

    The concepts themselves have never been a problem, it's been the "best practices" of the concepts that have been a problem. About two decades ago, I tended to suffer from NIH (not invented here). I still seriously overthink decisions like REST vs graphQL vs RPC, which component libraries or frameworks to use, etc., as I'm still highly opinionated, but I at least understand that outsourcing the work to someone for whom the library/framework is their primary mission is more likely to produce a quality product than rolling my own in between or in support of my real tasks.

  • Sandor Dargo
    Sandor DargoAug 29, 2020

    I took me some time to take the time to understand covariant types

  • Nexus Denim
    Nexus DenimAug 29, 2020

    The Objected Oriented Programming, back at when i started learning Programming, the first thing that set me off was setters and getters, I was like why build setters and getters if one can initialize it in Constructors and can access it through the class. That was the most difficult, But still now the OOP methods and properties confuses me a little time by time.

  • Siddharth Mondal
    Siddharth MondalAug 29, 2020

    To this day I cannot understand how recursion works. I used to find OOP concepts confusing but now I'm used to it.

  • Michiel Hendriks
    Michiel HendriksAug 29, 2020
    • Concurrency
    • Distributed transactions
    • The above two combined

    Not to understand, but to get it right.

  • Michiel Hendriks
    Michiel HendriksAug 29, 2020

    Ah yes. Pointers, relatively easy to understand and use, and extremely easy to screw up and thereby sending you into an abyss where you don't understand any of it.

  • Your DevOps Guy
    Your DevOps GuyAug 29, 2020

    Dynamic programming, hands down.

  • blessedcyprian
    blessedcyprianSep 2, 2020

    python has been my main programming language and it has been little tough

Add comment