• lysdexic@programming.dev
    link
    fedilink
    English
    arrow-up
    1
    ·
    10 months ago

    This might sound silly but I think that coding challenges like HackerRank, CodeSignal help me improve/learn programming.

    At first I thought they were utter crap, and recruiters used them to test candidates on artificial problems that matter nothing and reflected no relevant skill. I still do, they are awful at that. What a complete waste of time and effort.

    However, these coding challenges are like crossword puzzles. They present us with nonsense challenges that provide us with the opportunity to employ obscure programming constructs on a multitude of programming languages in a way that rarely happen in real world professional settings. I use them to explore obscure corners of standard libraries, solve the same problem in multiple ways, employ different idiomatic ways to iterate over data structures, etc. That’s helpful in a way.

    • sizeoftheuniverse@programming.dev
      link
      fedilink
      arrow-up
      2
      ·
      10 months ago

      They force you think of o(n) and train you better than anything else on how to write your functions (but not how to organise them).

      I have around 600 leetcode exercises solved, and there’s a big difference in skill between the person i was before leetcode and the person i am now.

      • lysdexic@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        10 months ago

        They force you think of o(n) and train you better than anything else on how to write your functions (but not how to organise them).

        I agree. I think it’s all about blind spots. A software engineer spends most of the time reading code, and the changesets they write most of the time are not algorithms or any fancy iteration beyond doing a vanilla for loop over a collection. leetcode-type exercises tend to invert that tendency, and present us with challenges which we would only rarely tackle. It’s a good exercise in the sense that it forces a type of usecase we don’t often use. Still, their practical usefulness beyond coding crossword puzzles is very limited.