Curious to hear about the things that helped improve your programming ability.

  • @[email protected]
    link
    fedilink
    21 year ago

    Well generally speaking, read up on solid principles. Learn how to organize your code, write code that balances efficiency and manageability. Read from good sources, and most importantly do. You’ll learn nothing until you put in the work

    • @[email protected]
      link
      fedilink
      English
      11 year ago

      Well generally speaking, read up on solid principles. Learn how to organize your code, write code that balances efficiency and manageability.

      To me, that reads as “learn software design patterns”, specially the balancing part.

  • agilob
    link
    fedilink
    English
    41 year ago

    Learning from a documentation. Got a book, went offline and finished the book and training exercises without looking for anything online.

    • @[email protected]
      link
      fedilink
      11 year ago

      How do you learn programming on paper to be sufficiently effective when translating the skills to the computer?

      I get that it’s the same stuff, but there are very useful tools and workflows, in addition to knowing what you’re doing wrong that you can’t learn on paper.

      Or am I misinterpreting what you’re saying; that you just didn’t look for resources online to cut out distractions, but programmed like normal?

  • @[email protected]
    link
    fedilink
    21 year ago

    There’s no secret, no guide. Just try and do whatever you want, fail a lot, and you’ll find that soon enough you are excelling in the field.

  • @[email protected]
    link
    fedilink
    English
    41 year ago

    I find that reading a lot of code helps. From the bad code, take note of what to avoid. From the good code, take note of what to emulate.

    To be clear, it’s often more useful to read code within your specialization than to read any ol piece of code on the Internet. That said, drawing from other programming languages and across a rich variety can be useful into itself.

  • @[email protected]
    link
    fedilink
    341 year ago

    Reading code. Not just your primary language. But other languages too.

    Most problems are already solved. Someone out there solved it. Maybe they didn’t solve it in the language you need. But fortunately, they provided their code on GitHub.

  • @[email protected]
    link
    fedilink
    191 year ago

    The short answer is “practice”

    The longer answer is, do it a lot. Listen in code reviews. When you investigate bugs, do actual root cause analysis, understand the problem, and understand how it got missed. Don’t stop learning, study your languages, study design patterns, be intentional in what you learn.

    I had good mentors that were hard on me in reviews. Developing a thick skin and separating criticism of you from criticism of your code will help a lot in terms of learning in reviews.

    Source: 10 years in the field. (Senior SW Eng. Focused on embedded systems and VnV)

    • Billegh
      link
      fedilink
      61 year ago

      23 years in and I don’t think that there is better advice here. Listen. Practice. Experiment.

      If it’s something you want to get good at, do it as a hobby. Pick projects that you don’t know entirely how to do. Adversity is a better teacher than anything else I’ve run into.

      Learn other languages too. I learned more about C from a year of rust than two decades of C.

      • @[email protected]
        link
        fedilink
        31 year ago

        The only caution I’d add about doing it as a hobby too is that it’s super easy to burn yourself out. I think that’s why so many of us get into woodworking and gardening lol

  • Fireduck
    link
    fedilink
    11 year ago

    Competitions. In college I did the ACM ICPC and trained hard with my schools programming team.

    These days I do advent of code, which will start on Dec 1. But you can go fo previous years now. It is great.

  • @[email protected]
    link
    fedilink
    111 year ago

    Teaching. I work for a university now (I have zero work experience), but you can also just make youtube vids nobody’ll ever see. Explaining how a concept works requires you to have such a deep level of understanding that you’ll find it impossible to properly do wothout learning more about it. In the end you’ll teach yourself more than you teach your students.

  • @[email protected]
    link
    fedilink
    31 year ago

    Find a program to work on and fix issues that interest you. Start small. It is satisfying to fulfill peoples feature requests, even if the feature isn’t helpful to you. You know that you made this person happy and there are probably more people who wanted that feature too

  • SokathHisEyesOpen
    link
    fedilink
    English
    91 year ago

    Practice! Frequently take on tasks that are above your skill level and then learn to do them while you’re doing them.

  • @[email protected]
    link
    fedilink
    2
    edit-2
    1 year ago

    Lately - ChatGPT 4 has been amazing.

    If you’re not sure how to do something - the answer is a few seconds away now.

      • @[email protected]
        link
        fedilink
        3
        edit-2
        1 year ago

        No you’re wrong. For example you can have a full conversation with GPT-4 about pointers or garbage collection, and come away from that with a really good understanding of the fundamentals.

        You won’t get that from just reading a book or article, because you can’t ask an questions. The conversational nature of ChatGPT is amazing. I’ve learned things in days that have taken months in the past.

        You can also paste in a snippet of code that doesn’t work, and it will usually explain why and how to fix it.

        I very rarely encounter halucination.

        • Traister101
          link
          fedilink
          3
          edit-2
          1 year ago

          Can’t say that I struggled to understand pointers but if GPT helped you conceptualize em that’s good. I really don’t see much utility in even the current iterations of these LLMs. Take copilot for example, ultimately all it actually helps with is boilerplate which if you are writing enough for it to be meaningfully helpful you can have a fancy IDE live template or just a plain old snippet.

          Theres a lot of interesting things it could be doing like checking if my documentation is correct or the like but all it does is shit I could do myself with less hassle.

          There’s also the whole issue of LLMs having no concept of anything. You aren’t having a conversation, it just spits out the words it thinks are most likely to occur in the given context. That can be helpful for extremely generic questions it’s been trained on thanks to Stack Overflow but GPT doesn’t actually know the right answer. It’s like really fancy autocorrect based on the current context. What this means is you absolutely cannot trust anything it says unless you know enough about the topic to determine what it outputs is accurate.

          To draw a comparison to written language (hopefully you don’t know Japanese) is 私 or 僕 “I”? Can you confidently rely on auto correct to pick the right one? Probably not cause the first one わたし (watashi) is “I” and the second ぼく (boku) is also “I” (more boyish). Trusting an LLMs output without being able to ensure it’s accuracy is like trusting auto correct to use the right word in a language you don’t know. Sure it’ll work out fine generally but when it fails you don’t have the knowledge to even notice.

          Because of these failings I don’t see much utility in LLMs especially seeing as the current obsession is chat apps geared at the general public to fool around with.

          • @[email protected]
            link
            fedilink
            21 year ago

            Fucking love your example dude.

            I’ve found ChatGPT3 OK for low level stuff, but I stopped using it pretty quickly once I went to trying to get it to help build intermediate stuff.

            If its making errors in simple script design, it can’t handle more.

            It is fab for the basics, but I wouldn’t truste it for learning anything else more complex for exactly the reasons you said.

            Be liable to write my own backdoors that way hahah

            • Traister101
              link
              fedilink
              2
              edit-2
              1 year ago

              Thanks! Lot of people don’t seem to realize that GPT doesn’t actually have any idea what words mean. It just outputs stuff based on how likely it is to show up after the previous stuff. This results in very interesting behavior but there’s nothing conceptually “there”, there’s no thinking and so, no conversation to be had.

  • @[email protected]
    link
    fedilink
    5
    edit-2
    1 year ago

    A) Practice.

    B) Interacting with programmers other than yourself.

    On a more specific note:

    • Don’t work “around” problems. Identify what the problem actually IS and work backwards. When you try to take a step and find that you don’t know what step to take, or you’re stepping into something you don’t understand, go research and learn about it.

    • Learning how to read technical documentation is a valuable skill.

    • Recognize and challenge your assumptions. Which plays into working “around” problems. Do I know the error I’m researching came from this bit of code? Is this bit of code even running? Is the source file I’m looking at even part of the binary I’m running? Is the binary that’s running actually the one I’m trying to test?