Ive been interested in computers for 4 years or so. And I love computer science concepts and free software. I know design difference between X11 and Wayland protocols, garbage collectors and other random facts i remembered.

But i have never done any serious programming. Only some little attempts at python, godot, c++, kotlin and so on. Idk why but when i have to do the actual programming i just dont know how, documentation feels unclear and those youtube programming courses also do not ensentivize it.

If someone here had similar problem, how did you solve it?

  • pelya@lemmy.world
    link
    fedilink
    arrow-up
    40
    ·
    4 days ago

    Sounds like you don’t have the motivation. Maybe stop thinking about learning programming specifically, and change it into “what cool things I can do with technology”. Set up some project with actual goals, like a motorized bird feeder with remote controls on your phone. Look up the simplest and cheapest way to do that, and programming will naturally come along, because you’ll 100% won’t find a working market solution and would need to create some 100-line Python script, via AI or not it does not matter, the important part is that it does what you need and you know how to fix it or add new things.

  • entwine@programming.dev
    link
    fedilink
    arrow-up
    25
    arrow-down
    2
    ·
    4 days ago

    Don’t use AI. Don’t do it. People telling you “it’s great for learning” are full of shit and going off of gut feeling, not experience. These LLMs have only been around for a few years, and have only gotten semi competent at generating code for even less time. There is no data or evidence that it helps people learn programming, and plenty of evidence that they do the opposite.

    So avoid it. Pick a simple project, and see how far you can get. You will probably fail, but that’s the point! You’ll most likely find something interesting or tough to focus on in the middle of it, and you’ll learn a whole lot about whatever that is, and it’ll stick with you long after you’ve abandoned that project.

    My advice is to start very small, and avoid anything GUI related. Write like a bare bones terminal only blackjack game, then add a high score table, persist those high scores to disk, etc. If you fail even at step one, that’s fine! Just try something else, like tictactoe, Simon says, or a non-game like an app for converting between Fahrenheit and Celsius.

    Ask for help on a programming forum somewhere with real people.

  • Glitchvid@lemmy.world
    link
    fedilink
    English
    arrow-up
    18
    ·
    4 days ago

    IME to learn to program… you have to do programming.
    That’s really it, you have to write code, and actively practicing the skills, do the repetitions (declaring functions, loops, branches) and build up the memory and mindset.

    Reading other peoples’ code is also useful, so is theory (DS&A), but the doing is the learning.

    Once you’ve had to copy or look up documentation on how to declare a function/method for the nth time, it’ll start sticking in your head.

  • ImgurRefugee114@reddthat.com
    link
    fedilink
    arrow-up
    15
    ·
    4 days ago

    There is something called the “tutorial trap”

    You know a lot of high-level theory and you’ve built a lot of things, but only by copying nearly verbatim from guides and tutorials, and you have no idea how to independently work on a project, start from scratch, or interpret reference material (e.g. cppreference)

    The only way to learn that is to do it.

    You can use a person or a chatbot as a sounding board to help orient you, but try to limit reliance; I suggest rewriting something you’ve already written, but without looking at the source code or the tutorial and don’t copy any statement or chunk of code verbatim.

    Feel free to hit me up in DMs for socials if you’d like.

  • 0xDREADBEEF@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    6
    ·
    edit-2
    4 days ago

    Create a small project to teach yourself. Whatever is most interesting to you. I created many things because I wanted to learn something. Most are not available, but for example I made https://13vaults.com/ from scratch to see if I could make a DnD Beyond clone. It isn’t small, but it was a personal challenge I set out for myself just to see if I could do it, and my players hated the 13th age online srd.

    I made https://fotup.app/ to learn a programming language (ReasonML) and because I needed a way to upload images with my clipboard and getting a URL. 13V is still working but I used a third party API for fotup and it stopped working so it’s borked. But I got all I wanted out of it!

  • Beej Jorgensen@lemmy.sdf.org
    link
    fedilink
    arrow-up
    8
    arrow-down
    1
    ·
    4 days ago

    Everyone says it, and I’ll say it, too. Make up a project and work on it. You’ll hit so many walls, and climbing over them is the best way to learn.

    “The expert has failed more times than the beginner has even tried.”

    As a learner, use AI like this:

    • When you get code working, paste it in and ask for a review. Be opinionated about the response–some of the advice will be bad. Have a rationale for the advice you choose to follow.
    • If stuck for more than 30 minutes, paste the code in and ask for hints. Tell it to not give you any code in response.
    • Ask it to quiz you on a topic.
    • The above applies to planning and coding.
    • Never have it generate code for you.

    Problem solving steps:

    • Understand the problem (20% of programming is this)
    • Come up with a plan (60% of programming is this)
    • Code it up (10% of programming is this)
    • Reflect on the result (10% of programming is this)
  • NebulaNymph@programming.dev
    link
    fedilink
    English
    arrow-up
    5
    ·
    4 days ago

    Not sure if you’ve tried reading any textbooks? (I only see mention of Documentation or youtube)

    But depending on the language you’d like to learn there’s a wide range of textbooks with different writing styles! Some that are more dry, dense, hard to parse; and others that are written in a friendlier manner which can be helpful for newer folks.

    A big plus they typically also have excercises at the end of chapters along the lines of “write a program that accomplishes this goal” or “write a guessing game that works like this”.

    You don’t have to hit them exactly but they can also be helpful for sparking ideas of a program that you would actually like to write!

    There’s also things like Rustlings or Ziglings that are designed to help you learn the language through solving code exercises, personally I really enjoyed Ziglings

  • sbird@retrofed.com
    link
    fedilink
    English
    arrow-up
    8
    arrow-down
    1
    ·
    4 days ago

    If you want to try game development, game jams are always a fun experience! Godot is an excellent for this and is what I use (GDScript is very nice, less resource heavy compared to the proprietary options too). As for guides, GDQuest and HeartBeast are awesome!

    There are a bazillion different online resources to learn programming, whether you want to make websites, mobile apps, whatever. As long is it’s not an obvious cashgrab (a small fee to support them is fine!)

    Personally, I learnt Python by reading a book. Dunno which one, but it was a very good book!

    And don’t be afraid to search for the answer (p.s. Google is not your friend, but Ecosia and Qwant are!), I still sometimes forget how to make a for loop in Python. Try to avoid using LLMs if you can, they often promote not so good programming practices or are simply flat out wrong (and confidently so!). The only instance where it could be useful is explaining concepts to you in your native language if you are not a first language speaker of English (not vibe coding, mind you, that helps nobody!), but again, you have to be mindful that it often gets stuff super wrong!

    • SlumDogGazillionaire@piefed.social
      link
      fedilink
      English
      arrow-up
      2
      arrow-down
      1
      ·
      4 days ago

      Question regarding the use of LLMs, what are your thoughts of using prompts that discourage it from providing code and just being there to guide when you’re going tremendously off the beaten path? For example, asking for the documentation of what you’re trying to achieve and to just nudge you in the right direction? Recently I started meeting with tutors and found that every single one has been trying to push me to use an LLM which really defeats the purpose of tutoring. I’m getting discouraged and thinking this might be the new norm for teaching.

      • sbird@retrofed.com
        link
        fedilink
        English
        arrow-up
        5
        ·
        4 days ago

        Personally, LLMs are too often wrong and overly confident to be useful for me. Plus, unless you’re running a local model, yet another subscription is not fun, especially by the likes of OpenAI and Anthropic. And you have all the ethical issues with LLMs that I’m sure you’ve heard about already.

        It would be much better if you used the vast swath of online resources we are very lucky to have nowadays, don’t take it for granted as the internet becomes increasingly saturated with low-effort LLM generated garbage.

        Again, the only scenario where LLMs are potentially useful is translation in my opinion, and even then, you have to mindful it is often pretty wrong.

        • SlumDogGazillionaire@piefed.social
          link
          fedilink
          English
          arrow-up
          3
          ·
          4 days ago

          Appreciate the insight. It’s becoming pretty disheartening to work directly with a knowledgeable person only to hear “have you tried ChatGPT?”. The whole point is to be mentored and not have questions rerouted to something that’s generally wrong a vast majority of the time, and that’s not even factoring in all the unethical uses of AI.

          • MagicShel@lemmy.zip
            link
            fedilink
            English
            arrow-up
            1
            ·
            4 days ago

            It’s not wrong the vast majority of the time. In fact, it’s petty damn good at explaining principles and giving feedback on code, but it doesn’t read minds, and so it can be wrong sometimes. It sometimes tells you you’re wrong while explaining the exact same thing you just told it back to it.

            People can be wrong, too. I just saw a teacher explain something wrong in my daughter’s online school video. She had the right answer but explained it wrong and confused my daughter. I think it’s fine to prefer human assistance, but AI is really good at having infinite patience and stepping back and covering fundamentals when you aren’t ready to understand a thing.

            My point is: however you find the answers you are seeking when confused, keep seeking. Keep asking questions. Keep experimenting.

  • ExtremeDullard@piefed.social
    link
    fedilink
    English
    arrow-up
    12
    arrow-down
    6
    ·
    4 days ago

    I’m a 45 year Unix veteran and I’m here to tell you this: if you want to do programming as a hobby, more power to you. But if you try to make a career out of it, for the love of all that’s holy, don’t.

    Programming is dead. What people call programming today is telling a machine what to code. You’re trying to learn farrier skills in the age of automobiles.

    My own job as a programmer has been suddenly obsoleted last year. I’m still doing manual programming, because I’m in charge of super-critical software stacks at work that our wise management doesn’t trust AI to work on for love nor money, but this won’t last. And so I requested to be transferred to sales, never to touch a keyboard ever again, and I’m in the process of transitioning. At my age, I had hoped to retire doing my thing until the end, but it’s not gonna happen.

    Don’t become a farrier!

    • TootGuitar@sh.itjust.works
      link
      fedilink
      arrow-up
      18
      arrow-down
      1
      ·
      4 days ago

      Just wanted to offer a counter argument to this: I’ve been in software for a few decades and while things are changing fast, and I absolutely don’t program by hand basically ever, I still draw on my experience extensively, every day, when designing systems and reviewing code.

      My current fear is that with the drop in college CS enrollment and the lack of opportunities for junior folks to get up to speed via coding by hand, we will eventually reach a point where most of the senior folks have retired, and the remainder of the engineers won’t have the deep understanding that I and others have. This will create a shortage of experienced people who can actually solve real architectural problems and review code accurately.

      So I think there is still opportunity for someone who is motivated enough to become that “future me.” Will there be fewer of those positions available? Most likely. But I believe there will also be a huge shortage of competent candidates.

      • jtrek@startrek.website
        link
        fedilink
        arrow-up
        9
        ·
        4 days ago

        It definitely seems like we’re setting ourselves up for a dystopia, where no one knows how to do software anymore. Like the time machine or Idiocracy. Management just wants short term gains, and they don’t care if there’s no one around in 10 years with any experience

      • Beej Jorgensen@lemmy.sdf.org
        link
        fedilink
        arrow-up
        2
        ·
        4 days ago

        This will create a shortage of experienced people who can actually solve real architectural problems and review code accurately.

        This is also my current “most likely” scenario. Bob Martin (of Clean Code fame) doesn’t read or write code any longer. But he has the luxury of drawing on decades of coding and architecture experience to direct LLMs to do the right thing.

        There has been an increase in the number of open positions for senior devs, and a decrease in the number of open positions for junior devs. Median senior salary is $240k. These both indicate value to coding and architectural knowledge.

        As seniors retire and quit (a lot of them don’t really care for the AI job), we’re going to end up with a skills gap.

        I teach a couple SE courses at our university and I’m revamping them as we speak to aim higher toward that senior dev level. But it’s not easy to replicate 3-5 years of on-the-job experience in 2 quarters.

        In China, the gap is being made up for by employers (kinda like it’s historically been). I know one thing for sure about the US, though: we’ll make corrections when our backs are against the wall and not a moment before. :)

        • ExtremeDullard@piefed.social
          link
          fedilink
          English
          arrow-up
          3
          arrow-down
          1
          ·
          edit-2
          4 days ago

          toward that senior dev level. But it’s not easy to replicate 3-5 years of on-the-job experience

          5 years on the job doesn’t remotely qualify you as a senior dev.

          • Beej Jorgensen@lemmy.sdf.org
            link
            fedilink
            arrow-up
            2
            ·
            4 days ago

            Well, depends on the person. And I think the era–I’m getting the impression what it takes to be a dev in 2020 isn’t quite the same as what it took in the 90s. But in any case, I said toward the senior dev level in that timeframe.

      • ExtremeDullard@piefed.social
        link
        fedilink
        English
        arrow-up
        3
        arrow-down
        5
        ·
        4 days ago

        I still draw on my experience extensively, every day, when designing systems and reviewing code.

        How long do you think you’ll be needed to do that?

        The models are coming for your job. They’ll get good enough to replace you, and sooner than you think. If you think you’re safe, you’re delusional.

        And in the long run, nobody will need your finely-honed skills or mine. Young professionals who start a career in software engineering today are basically signing up for long-term unemployement or burger-flipping.

        • TootGuitar@sh.itjust.works
          link
          fedilink
          arrow-up
          5
          ·
          4 days ago

          How long do you think you’ll be needed to do that?

          I have yet to see much evidence that indicates that I won’t be needed indefinitely.

          The models are coming for your job.

          Gonna need some citations on this, chief. I don’t necessarily disagree, but proper architecture and high level analysis and design, especially of large existing systems, is something that LLMs have always been quite bad at, and I don’t think that’s going to change anytime soon. But I know the state of the art is hard to follow, so if you have any new developments to share I’d love to look at them.

          They’ll get good enough to replace you, and sooner than you think. If you think you’re safe, you’re delusional.

          I have never thought I was “safe” in this industry, going back 30 years. But I think there’s 1) a lot of questionable fear mongering going around, and 2) a very clear possibility of a talent shortage if we keep going on this trajectory.

          • ExtremeDullard@piefed.social
            link
            fedilink
            English
            arrow-up
            1
            arrow-down
            6
            ·
            4 days ago

            I have yet to see much evidence that indicates that I won’t be needed indefinitely.

            I’ve seen models going from pissing shitty 10-liners that didn’t compile to reworking entire projects halfway convincingly in only a few short years. I see no reason why they won’t get good enough to do that well enough to render your senior software architect ass obsolete in a few more.

            “Today’s AI is the worst you’ll ever use” is correct. You might get some respite for a few more years when the AI bubble bursts and we go back to doing shit ourselves for a while. But the technology isn’t going away. And bad luck for us, it’s almost perfectly suited to replace software engineers, of all jobs.

            If you haven’t seen this, you’ve been living under a massive rock. It’s clear as day.

            lot of questionable fear mongering going around

            Well, I will say this: all I’m saying is that OUR jobs as WE know them are gone. They either don’t exist anymore, or they’re on the verge of disappearing. What I’m emphatically NOT saying is that it’s wrong: it’s progress I guess. We’re just the latest round of professionals whose profession has been rendered obsolete by technology.

            I do worry that so many professions are in the crosshairs that it’ll basically break society though, because the changes are so radical and so quick.

            a very clear possibility of a talent shortage if we keep going on this trajectory.

            It’s not a possibility, it’s a certainty. And it won’t matter: again, I’m 100% convinced the machines will do a better job than you or me very soon.

            • TootGuitar@sh.itjust.works
              link
              fedilink
              arrow-up
              4
              ·
              4 days ago

              Ok. I’m not convinced of most of what you say, certainly not to the level of certainty that you have. I’d still love to see actual evidence of what you’re saying. Extrapolating 3 years of progress, especially when that progress is rapid, out to infinity is a classic mistake. Do you really think that, for example, the progress that models have made in 2026 is anywhere near the level that they made from, say, Jan 2024 to Nov 2024?

              I do agree that things have changed and that maybe it is progress.

    • entwine@programming.dev
      link
      fedilink
      arrow-up
      4
      arrow-down
      2
      ·
      4 days ago

      So basically, this guy is wrong.

      I’ve had this (controversial) theory for a while that I’ve yet to see proven wrong. Before AI, it’s basically been known that most programmers “age out” of the craft, because it’s really difficult to keep up with it forever, and most people in middle of the bell curve simply can’t do it. Big tech used to get sued for ageism all the time, because they would do shit like only promote or hire young people (which is illegal).

      The aging millennials of today were the young rockstar ninja programmers of the past 2~3 decades, but now most of them are getting too old to keep up. That’s why you see AI psychosis hitting the older coders harder than anyone else, since it provides a convenient way to not face the realities of aging. It’s easier to think you can still be a rockstar by “pivoting” to AI, than it is to admit that you don’t have the energy or motivation to keep your skills sharp. Tim Sweeney (and to a certain extent John Carmack) come to mind as high profile examples of this.

      A pre-AI version of this is pivoting to management. That’s what pretty much everyone does, and it’s common to find people like that who haven’t written a line of code themselves in years. But I guess becoming an AI cheerleader is easier to do, and the number of open management roles certainly isn’t big enough for everyone.

    • Martti@suppo.fiOP
      link
      fedilink
      arrow-up
      2
      ·
      4 days ago

      Wow, AI-hyperoptimized CEOs reached the bosses of programming. And also corporate programmers would use proprietary shit like reddit. Im here for the idea!

  • ulterno@programming.dev
    link
    fedilink
    English
    arrow-up
    3
    ·
    4 days ago

    Seems like you have the problem of ‘having your tools but not knowing how to use them’.

    Perhaps start with something very basic.
    Make a simple interactive program that does +, -, ×, ÷.
    No need for fancy GUI. Let it ask: “What do you want to do? 1. + 2. - 3. × 4. ÷ 5. exit” When the user enters one of the numbers, then you ask for the operands and then you give the result.

    The important part is to do it all by yourself.
    Don’t use an IDE. A simple text editor will do. i.e. write all the boilerplate yourself. There is a meaning to it. It only becomes boilerplate because it is the default way to do things.
    No need to use a build system. Just make it in a single file and call the compiler command yourself. Or the interpreter, if it is an interpreted language.

    If it is Python you want to use, don’t use PyCharm or what not.
    If you are on Linux, just open a terminal and type python3 (assuming it is installed). If on Windows, use IDLE.

    In case of C++, just write in a normal text editor and the call g++ or mingw.

    Make sure to complete this simple little thing all by yourself.
    After a while you’ll see yourself getting ideas, mental pathways unblocking and you being able to convert logic to code.

  • grue@lemmy.world
    link
    fedilink
    arrow-up
    4
    ·
    4 days ago

    Maybe what you really like is theoretical computer science (i.e. glorified discrete math), or computer engineering, or IT or something. Computers, but not software development.

  • Kissaki@programming.dev
    link
    fedilink
    English
    arrow-up
    3
    ·
    4 days ago

    I didn’t have this issue, but I will share my opinion anyway.

    What do you mean by “actual programming”? I would expect that to include not knowing stuff beforehand, to explore and prototype solutions and missing information. That’s the opposite of what you seem to expect, judging from the rest of your sentence? (missing know how, unclear docs, no youtube course to follow along to)

    I learned through hacking website and related stuff in php, going into a popular C++ FOSS project, and other projects. I oriented myself through what already existed and documentation.

    The best way to learn is through self interest, through actual projects or functionality you try to implement. If it’s scoped small enough, with a doable challenge, that’s how you grow.

  • asmoranomar@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    4 days ago

    I have the same problem. My biggest issue is looking for a resource for “something that does the thing I want but I don’t know what it’s called.”

    I can read code pretty well otherwise. It’s depressing because over the decades I’ve always wanted to program, and the motivation is high, but the results just don’t show.

  • MagicShel@lemmy.zip
    link
    fedilink
    English
    arrow-up
    3
    ·
    4 days ago

    When I got into computer programming my only exposure was various flavors of BASIC and I think one Pascal class. The first time I took a Java course in college, I failed it because I could not understand object oriented programming.

    Then I bought a couple of books on the concept, followed the exercises verbatim and then started trying to change things to understand what was safe and what broke things. Anyway, I’ve been doing this professionally for thirty years now.

    When I needed to understand new concepts (to me) like functional programming or design patterns, YouTube was very helpful. You cite it as unhelpful, but I suspect you haven’t fully internalized the concepts required to make those videos click into place. Until you’ve done some things with your own hands, it’s hard to understand why an unfamiliar thing exists or what complexities it solves.

    Kafka, to grab an example, just accepts data from one program and delivers it to other programs that want it. It sounds like the easiest thing in the world and anyone could just write that for themselves until you experience some of the edge cases it handles for you.

    Basically my answer is hands-on following examples and breaking them and understand why they broke.