10 votes

Resources for learning to code

Tildes is pretty technically minded place, so I figured this would be a good place to get some advice. Programming is something I've taken a class or two on (though it's been long enough that I'd like to start from scratch) and I think I have some aptitude for it. The possibility of working from home is also very appealing. However, there are a ton of resources out there, and "learn to code" has been a thing for a while now. Is self-teaching or one of those coding boot camps a viable way to get started in the field? And if so, what are some good resources and practices for getting there? I have some money available, but a degree would be expensive both time and cost wise.

29 comments

  1. [4]
    Akir
    Link
    Rather than just give you random resources, I would suggest trying to figure out what exactly you would like to do. Nowadays it's rare to find a job as a 'general' programmer; everyone's...

    Rather than just give you random resources, I would suggest trying to figure out what exactly you would like to do. Nowadays it's rare to find a job as a 'general' programmer; everyone's specialized into niche categories where specialized tools and frameworks are used and you will be expected to know how to use them.

    10 votes
    1. [3]
      ICN
      Link Parent
      Definitely something I'll keep in mind, but not at that point just yet I think; I don't know enough yet to properly evaluate the choices available, and if I tried to commit now I could easily end...

      Definitely something I'll keep in mind, but not at that point just yet I think; I don't know enough yet to properly evaluate the choices available, and if I tried to commit now I could easily end up trying something I have no talent for or that I find miserable to work with. Thinking the best course of action is to dip my toes into a variety of subjects, then commit to the one the most resonates. Thank you.

      Could I ask you to take a quick look at this post on Reddit and tell me if that's a fair broad strokes summary? Having an idea of available specializations going in will help contextualize the moments that click and make it easier to pivot to a proper specialization later.

      1 vote
      1. [2]
        Akir
        Link Parent
        Yes and no; they only really cover web and enterprise software, but that is also the biggest and easiest segment to get into. There are other ones to look into but they are more niche and harder...

        Yes and no; they only really cover web and enterprise software, but that is also the biggest and easiest segment to get into. There are other ones to look into but they are more niche and harder to enter, many needing a degree.

        2 votes
        1. ICN
          Link Parent
          Thanks again. That gives me a solid base to keep in mind, and for more niche specializations I'll likely catch wind of them if I go down appropriate rabbit holes, which is a nice selection process...

          Thanks again. That gives me a solid base to keep in mind, and for more niche specializations I'll likely catch wind of them if I go down appropriate rabbit holes, which is a nice selection process to avoid getting overwhelmed by a million little subfields.

          1 vote
  2. [9]
    EgoEimi
    (edited )
    Link
    Learn by doing (and through necessity). First you crawl. Then you learn to stand. Then walk. Then jog. Then run. Then run faster and farther. That's how you go from writing your first "Hello...

    Learn by doing (and through necessity). First you crawl. Then you learn to stand. Then walk. Then jog. Then run. Then run faster and farther. That's how you go from writing your first "Hello World" program to building applications.

    Learning programming concepts ex situ (watching a video, reading a textbook, etc.) isn't very fun and not a good use of your time either, at least for the foundational stuff. Many concepts will seem unnecessarily abstract... until you encounter situations when coding that reveal their necessity. Then those concepts 'click' and you'll remember them forever.

    Ask ChatGPT (preferably GPT-4). Ok, sure, it hallucinates sometimes, but it's accurate for a lot of basic stuff and can help you connect theory and practice. It's infinitely patient. You're going to have a lot of naive questions. Ask it all those questions.

    edit: expanding on this a bit, you can use ChatGPT as a mentor. Think about a feature you want to build (or have ChatGPT suggest one), and use ChatGPT to help you break it down into manageable tasks and to guide you in learning the necessary concepts to execute those tasks.

    9 votes
    1. rogue_cricket
      Link Parent
      I'm quite an experienced programmer and while ChatGPT gets a lot of the more advanced or obscure stuff wrong, I have made occasional use it it. I think a good way of conceptualizing it is as a...

      I'm quite an experienced programmer and while ChatGPT gets a lot of the more advanced or obscure stuff wrong, I have made occasional use it it.

      I think a good way of conceptualizing it is as a buddy of yours who has memorized every tutorial out there... But who has also never actually written an app themselves.

      6 votes
    2. [3]
      ICN
      Link Parent
      It'll take some foundational work to get to the point I can pursue interesting projects, but I'll try to steer in that direction once I get there. ChatGPT is a good suggestion I hadn't really...

      It'll take some foundational work to get to the point I can pursue interesting projects, but I'll try to steer in that direction once I get there.

      ChatGPT is a good suggestion I hadn't really considered. At a minimum, it seems like it could be good as a responsive version of rubber ducking. Thanks.

      2 votes
      1. [2]
        teaearlgraycold
        Link Parent
        Especially for web related programming it should do well with programming and answering questions (it was trained on the contents of the web after all). Just be aware that it can lie to you.

        Especially for web related programming it should do well with programming and answering questions (it was trained on the contents of the web after all). Just be aware that it can lie to you.

        2 votes
        1. ICN
          Link Parent
          I'll keep that in mind, thanks

          I'll keep that in mind, thanks

          1 vote
    3. [4]
      mtset
      Link Parent
      I do not agree that you should use ChatGPT or any other LLM system unless you don't have access to a human mentor. It's better than nothing but it's worse than most human engineers would be.

      I do not agree that you should use ChatGPT or any other LLM system unless you don't have access to a human mentor. It's better than nothing but it's worse than most human engineers would be.

      1 vote
      1. [3]
        stu2b50
        Link Parent
        It’s not really the same thing. I’ve been a career mentor before, and we met like once a month and discussed broad topics. Of course, there’s mentoring with more minutia at, say, a company, where...

        It’s not really the same thing. I’ve been a career mentor before, and we met like once a month and discussed broad topics.

        Of course, there’s mentoring with more minutia at, say, a company, where a senior engineer may mentor a junior engineer or a more tenured employee may spin up a new hire. But the key there is that it’s part of obligations as an employee - OP isn’t working in tech, or he wouldn’t need to ask to begin with.

        I think realistically unless the other person is a good friend few are going to volunteer a nontrivial amount of time to answer your technical questions on a day to day basis. That’s just too much time commitment.

        Gpt never sleeps, never complains, and has as much time as you want. It at least gives you something to google, even if it may not be correct, and if you always knew what to google you’d practically be a software engineer already.

        6 votes
        1. [2]
          mtset
          Link Parent
          That does make sense, but I'd argue that learning how to figure out what to Google was the most important part of learning to touch computers, for me. Using ChatGPT for that is fine at the start,...

          That does make sense, but I'd argue that learning how to figure out what to Google was the most important part of learning to touch computers, for me. Using ChatGPT for that is fine at the start, but you need those skills when you encounter obscure or proprietary technologies.

          3 votes
          1. ICN
            Link Parent
            I'll keep this in mind. Thanks.

            I'll keep this in mind. Thanks.

            2 votes
  3. [2]
    Comment deleted by author
    Link
    1. ICN
      Link Parent
      Got it in my read list now. Thanks.

      Got it in my read list now. Thanks.

      1 vote
  4. [2]
    Blurple
    Link
    I just posted in the weekly what are you working on thread displaying I am an amateur, I can only speak to staying engaged and not long term development. You will need to learn the first floor of...

    I just posted in the weekly what are you working on thread displaying I am an amateur, I can only speak to staying engaged and not long term development.

    You will need to learn the first floor of whatever language you choose. After that find something in your life that excites you, think of a way that code can change the way you interact with it. For me, my first two projects were about movies and disc golf. I have done chapter one of codeacademy maybe 7 times. Only when I could minorly obsess over revamping my experience could I keep learning month after month. Through those first two projects I fell in love with coding. Now I am working on budgeting and meal planning programs because its the problem solving that excites me.

    What has worked for me is taking one of those ideas that excite me and simply googling the ever living hell out of everything preventing me from completing the project. Some of those googlings will lead to YouTube videos for a larger concept, some will be small details on stackoverflow. If you're improving your program then you are learning. This method is certainly haphazard and probably even slower than something structured. But it has kept me engaged and how I am learning JavaScript (started on python) and its actually pretty "easy" to understand because I built a foundation on a real world problem. IMO, worry about getting a feel for and a desire for coding, then break into a more structured learning pattern.

    4 votes
    1. ICN
      Link Parent
      I appreciate the advice. Consistent if slow progress is better than no progress, and I do enjoy problem solving.

      I appreciate the advice. Consistent if slow progress is better than no progress, and I do enjoy problem solving.

      1 vote
  5. [7]
    wervenyt
    Link
    I'm going to recommend a method that will not result in quick returns, but should set you up for a strong understanding of the fundamentals and make further, more profitable, self-education...

    I'm going to recommend a method that will not result in quick returns, but should set you up for a strong understanding of the fundamentals and make further, more profitable, self-education easier. That method is to read Structure and Interpretation of Computer Programs and to complete all exercises. It is not an easy text, but it was written to introduce the fundamentals of the craft to freshmen CS majors. If you're patient with yourself, maybe look up some supplementary lectures, and persevere, it should prepare you with the tools you need most to be a competent programmer. Traditionally it uses Scheme as the language of focus, but they've just released a Javascript version that shouldn't be significantly worse1 if you want experience with a marketable language. An important thing to keep in mind is that languages and technologies come and go all the time. Learning a programming language is much easier than learning to program, and if you do the latter, the former becomes a matter of a couple of weeks of familiarization.


    1 even if it hurts to say so

    4 votes
    1. ICN
      Link Parent
      I'll pick that up, thanks (the javascript version I think; I'll need every advantage I can get if I ever want to get hired). Seems like a good resource for diving into deeper concepts.

      I'll pick that up, thanks (the javascript version I think; I'll need every advantage I can get if I ever want to get hired). Seems like a good resource for diving into deeper concepts.

      2 votes
    2. [5]
      skybrian
      Link Parent
      I took a course that used this book in college, and I like the book enough that I bought it again to re-read. However, I'm not sure it's for everyone? It assumes a strong math background. One...

      I took a course that used this book in college, and I like the book enough that I bought it again to re-read. However, I'm not sure it's for everyone? It assumes a strong math background. One example is doing symbolic differentiation, and that isn't going to mean anything to someone who didn't take or doesn't remember calculus.

      2 votes
      1. wervenyt
        Link Parent
        I feel rather firmly that competent programming requires a strong comfort with math, or at least a willingness to learn the basics of various parts of mathematics on the fly. You may be right, for...

        I feel rather firmly that competent programming requires a strong comfort with math, or at least a willingness to learn the basics of various parts of mathematics on the fly. You may be right, for a layperson looking to get into it, it could be alienating. However, any degree of practical programming will require coming across obtuse and complicated algorithms and figuring out how they work, and it might be better for new learners to get used to those moments of panic, or learn they can't, and get out before they've invested too much time. In general, it seems like when someone is naturally curious about a subject, that's when the "hard way" is easiest.

        3 votes
      2. [3]
        ICN
        Link Parent
        I appreciate the heads-up; it has been a long time since I took a calculus class. But math is a useful skill in this field, so was going to have to refamiliarize myself eventually. But in light of...

        I appreciate the heads-up; it has been a long time since I took a calculus class. But math is a useful skill in this field, so was going to have to refamiliarize myself eventually. But in light of your comment, I'll probably hold off on this book for a bit; need to get some enthusiasm going for a programming project with math involved to get over the motivational hump. Thanks.

        2 votes
        1. [2]
          skybrian
          Link Parent
          I don’t want to overstate it. If you remember math concepts up to first-year calculus and sometimes like math, maybe you’ll do fine? The original audience was freshmen at MIT, not graduate...

          I don’t want to overstate it. If you remember math concepts up to first-year calculus and sometimes like math, maybe you’ll do fine? The original audience was freshmen at MIT, not graduate students or math majors.

          3 votes
          1. ICN
            Link Parent
            Well, in that case I guess I'll go until I get stuck, then wait for a good project to push past the block. Can't really tell where the holes are until I find them. Thanks.

            Well, in that case I guess I'll go until I get stuck, then wait for a good project to push past the block. Can't really tell where the holes are until I find them. Thanks.

            2 votes
  6. [2]
    skybrian
    Link
    This isn't learning to program, but Julia Evans writes fun comics about various random aspects of how computers work and how to use them. She publishes them on Twitter and Mastodon (which is where...

    This isn't learning to program, but Julia Evans writes fun comics about various random aspects of how computers work and how to use them. She publishes them on Twitter and Mastodon (which is where I see them) but there's an archive here:

    https://wizardzines.com/comics/

    4 votes
    1. ICN
      Link Parent
      Thanks, I'll check them out. Having fun with things makes them easier to do, and comics are good for that.

      Thanks, I'll check them out. Having fun with things makes them easier to do, and comics are good for that.

      2 votes
  7. [2]
    adepssimius
    Link
    I make pretty heavy use of GitHub Copilot in my daily. One of my favorite things about it is that it does a decent job of interpreting my human readable comments into code. In the same vein as...

    I make pretty heavy use of GitHub Copilot in my daily. One of my favorite things about it is that it does a decent job of interpreting my human readable comments into code. In the same vein as EgoEimi's suggestion that you learn by doing, I suggest that you would take an intro to programming concepts video course online, then try to create something that you might find interesting to use. Heck, even a recreation of something that already exists would do it. Type out what you want to do in comments, then see what suggestions copilot has for you. Read through the code and decide whether or not it will fulfill your requirements and make modifications and additional comment clarifications as necessary to prompt for more suggestions.

    This is a strategy I have used to learn new languages, where I'm not as familiar with the syntax but I have a handle on the higher level code concepts.

    2 votes
    1. ICN
      Link Parent
      Seems useful, particularly as a point of comparison or as a way to get around a problem I get stuck on, or with working on the skill of planning out a larger project. Thanks

      Seems useful, particularly as a point of comparison or as a way to get around a problem I get stuck on, or with working on the skill of planning out a larger project. Thanks

      1 vote
  8. [2]
    gco
    Link
    Really good answers on this topic, I would like to echo making use of ChatGPT. That said, a resource that helped me a lot was Code Combat. I already knew the basics of coding but would never stick...

    Really good answers on this topic, I would like to echo making use of ChatGPT. That said, a resource that helped me a lot was Code Combat. I already knew the basics of coding but would never stick with it long enough to amount to anything really useful, just solving problems by scripting here and there. Code Combat kept my attention for much longer and it got me to a good point, after that it was much easier to take on complex coding projects and learning more about complex concepts in programming. The way it works is you get presented multiple levels where you control a character in a game, to pass each level you have to code the solution.

    2 votes
    1. ICN
      Link Parent
      That sounds like an excellent means to get from where I am now to where I have the ability to meaningfully pursue projects of interest. Thanks

      That sounds like an excellent means to get from where I am now to where I have the ability to meaningfully pursue projects of interest. Thanks

      2 votes