The four phases of the typical journey into coding

  1. The Hand Holding Honeymoon is the joy-filled romp through highly polished resources teaching you things that seem tricky but are totally do-able with their intensive support. You will primarily learn basic syntax but feel great about your accomplishments.
  2. The Cliff of Confusion is the painful realization that it’s a lot harder when the hand-holding ends and it feels like you can’t actually do anything on your own yet. Your primary challenges are constant debugging and not quite knowing how to ask the right questions as you fight your way towards any kind of momentum.
  3. The Desert of Despair is the long and lonely journey through a pathless landscape where every new direction seems correct but you’re frequently going in circles and you’re starving for the resources to get you through it. Beware the “Mirages of Mania”, like sirens of the desert, which will lead you astray.
  4. The Upswing of Awesome is when you’ve finally found a path through the desert and pulled together an understanding of how to build applications. But your code is still siloed and brittle like a house of cards. You gain confidence because your sites appear to run, you’ve mastered a few useful patterns, and your friends think your interfaces are cool but you’re terrified to look under the hood and you ultimately don’t know how to get to “production ready” code. How do you bridge the gap to a real job?

Which phase are you in?

  • atzanteol@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    31
    ·
    24 days ago

    I never found it that hard… But I also never expected to just know everything. Coding is life-long learning. People who see it as “a thing to learn once” struggle a lot more I think. They also start to fall behind at some point.

    • Buckshot@programming.dev
      link
      fedilink
      arrow-up
      12
      ·
      24 days ago

      100%. I also never found it that hard but I’ve been doing this 20 years now and I’m still learning. I look back at what I did a year ago and I probably wouldn’t write it the same today. I’ve worked with people who don’t seem to have learned anything in 10 years and it baffles me.

  • Asafum@feddit.nl
    link
    fedilink
    arrow-up
    12
    arrow-down
    1
    ·
    24 days ago

    Phase 0).

    Started to learn last year, 2626143747722 articles later about “No company will hire JR devs anymore” and “AI will replace all of you.” and I decided to stop :(

  • radau@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    10
    ·
    24 days ago

    I didn’t go through these phases I just pray to the Omnissiah and sacrifice an HP printer when it doesn’t work

  • Windex007@lemmy.world
    link
    fedilink
    arrow-up
    8
    ·
    24 days ago

    This is all predicated on the assumption that people already have a familiarity with organizing their thoughts and intentions in a way that even have a prayer of being understood by a machine.

    There are a lot of ways people innately organize their thoughts. Some of them translate much more easily than others to code.

    For some people, even step 1 is a hurdle that there are insufficient resources to clear.

  • Mikina@programming.dev
    link
    fedilink
    arrow-up
    7
    ·
    22 days ago

    It took me a long time to realize the worth of having a CS degree. When I was leaving the school, I felt like it hasn’t tought me much. I was already a pretty ok programmer, since I was programming most of my highschool, and it felt like I’ve wasted a lot of time on languages I’ll never see in my entire life. Which is kind of true - I’m still pretty confident that I’ll never use Lisp, Prolog, Lambda Calcul, base assembly or Pharo ever again, but after a few years I’ve realized something important that I was missing - the school wasn’t trying to teach me how to be a “pharo/lisp/prolog programmer”, but to be “a programmer”.

    I noticed it on my pentesting colleagues who didn’t have formal programming education, how they mostly spoke about programming in relation to languages - “I know a little bit of python, but wouldn’t call myself a programmer. What programmer are you?”. That question felt wierd, and I eventualy realized that’s because the lines between languages eventually blured for me naturally, and I paid no mind to the language of choice - I was simply able to naturally pick up any language, and write anything I needed in it pretty quickly.

    Only then it occured to me that I have my education to thank for that. Sure, I might never use Lisp again, but I do vaguely remember the concepts and workflow the language has, so now I can more naturally pick up any lisp-like language. Same goes for the prolog-style of languages, or the more OOP-focused languages, like Pharo. Since I had to drag myself through hell to pass an exam in most of the flavours of languages, it made me a versatile programmer that can just naturally pick up anything I see, to the point where I don’t have to think about it - I just subconsciously detect what kind of basic workflow style is it going for, google the basic syntax and standard libraries, and I can write whatever I need in whatever language is available in a reasonable amount of time.

    I don’t see this “ascendance” mentioned in the post, and I think that it’s a really important point in learning to be a programmer. It’s also a piece of advice I try to give anyone unsure about whether his degree is worth it, because it feels like you’re learning useless stuff. I have no idea how to teach it, though. It kind of happened naturally for me, and I can’t identify the point when it happened or why, or how would I go in teaching it to someone else.

    It’s important to keep a wide field of view when learning programming, and not just lock yourself into one language. You can always google for syntax pretty quickly, but seeing the wide array of workflows and flavours different languages use to accomplish the same thing will go a long way in making you a better programmer.

    • Oka@sopuli.xyz
      link
      fedilink
      arrow-up
      7
      ·
      24 days ago

      Also 5. I made it to the point i can engineer basically anything, not just “write code”. If only someone would recognize that and hire me.

      • magic_lobster_party@fedia.io
        link
        fedilink
        arrow-up
        5
        arrow-down
        1
        ·
        24 days ago

        I’m at the point where I think I can engineer anything. But I also know that it takes effort and I ain’t gonna do that unless there’s a paycheck.

      • duplexsystem@lemmy.blahaj.zone
        link
        fedilink
        arrow-up
        2
        ·
        24 days ago

        Same, there’s always more to learn but I guess part of being at the point where you can engineer anything is that learning new stuff is just part of the process and not a big deal. Like you can ask me to program literally anything and I’ll fiqure out all the stuff I dont know on my own

    • AdamBomb@lemmy.sdf.org
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      23 days ago

      Yeah, definitely higher than 4. The way that scale progresses, I think I’m at like an 8, maybe 10.

      • Can take business requirements and design a scalable distributed solution
      • My code is well-factored and I refactor as part of my usual workflow to deliver new features
      • I maintain my own build and deploy automation
      • I am a sought-after code reviewer and mentor
      • My features are well-covered by business-level unit tests
      • I monitor my own systems in production with log and metric-based monitors
  • Zookeeper@programming.dev
    link
    fedilink
    English
    arrow-up
    4
    arrow-down
    1
    ·
    23 days ago

    I think it s easier. Get a problem you want to solve > press buttons as best a syou can > get something working > congrats.

    Then by doing you will learn how to get better.

  • dosuser123456@lemmy.sdf.org
    link
    fedilink
    arrow-up
    3
    arrow-down
    1
    ·
    23 days ago

    depends…

    • html: 1? idk i only use it to make a site that i dont even wanna make too fancy. it works and i like iy that way
    • css: 2, i can do basic layout but man doing anything else than just font and colors is so hard…but again, i might not do more and just keep it simple
    • basic: 4, i can make text games fluently, but its pure spaghetti
    • js: i can only make a hello world :(
    • batch: see basic
    • bash: see js (i cant code crap in it all i can do is navigating the filesystem)
    • gray snail: idfk man i only know it for the lolz of “yeah i know esolangs” i never really did crsp in it
    • everything else: see js
      • dosuser123456@lemmy.sdf.org
        link
        fedilink
        arrow-up
        2
        ·
        16 days ago

        it took me quite long to get my first ever game to work but it was worth it. i forgot to mention scratch there. i never really liked it but had to use it at school and that started everything…that first game was absolutely awful but i was just so damn proud of it being better than any of my classmates back in 2021, hehe.

        then i started making weird quizzes with batch, until i got a c64 emulator and moved on to basic (no more having to deal with cmd going all “[string] Is NoT rEcOgNiZeD aS aN iNtErNaL oR eXtErNaL cOmMaNd, OpErAbLe PrOgRaM oR bAtCh FiLe11!!1!”)

        im still very bad at coding but i dont care, i just do it for fun…nobodys gonna see my spaghetti anyways