A little background: Through my teens in the 90’s I did a lot of the things you may expect. I was a script kiddie on mIRC, made a tank game in Unreal Engine, and did some Quake modding. From 2002-2004 I landed a job doing Java web dev, SQL, and overall database administration because my father’s friend needed someone that could do that. I was ok at the job, but not great. Being young, my hobby that turned into a 9-5 made me want to stab my eyes out and I quit.

With that said, I can understand a lot of what’s going on, but it doesn’t “click” anymore. I spent 20 years as a career machinist, but I physically can’t do that anymore. Here’s the rub - my twin brother is a brittle diabetic and can’t work (lots of other stuff going on as well), and our mother is getting old (father passed this year). The only reasonable way forward that I can see in order to be able to support my brother is trying to get back into development.

When I stopped, subversion was what we used. I’m trying to understand Git, but it’s a giant conceptual leap. I guess, what I’d like to hear from you all is a way to jump back in as quickly as possible in such a way that it may be a career.

Thanks

  • mox@lemmy.sdf.org
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    2 months ago

    I’m trying to understand Git, but it’s a giant conceptual leap.

    In that case, I suggest learning Mercurial first. Its underlying design is very similar to Git, but the interface is more consistent and does a much better job of presenting the concepts to humans (especially those already familiar with traditional version control). Then, once you’re comfortable with the concepts and commands in Mercurial, learn Git, since it’s everywhere nowadays.

    Consider learning at least one new language. Java is only one of many (and not even a nice one IMHO). If you want something more flexible, consider Python. For more structure, maybe Go. If mobile apps interest you, there are Kotlin (Android), Swift (iOS), and Dart (both). If joining the web development army appeals to you, JavaScript. If you fancy the esoteric (and well-paying), Elixir and Erlang are worth a look. Try to find a language that you enjoy using; your programming life will be better for it.

    Above all, please make sure you’re reserving time for things that make you happy, sleep, and (if still possible) some kind of exercise. Your own physical and mental health are important. If you tolerate a bad working environment or wear yourself thin for too long, you will burn out, and then you won’t be able to provide for yourself or anyone else.

    Take care, OP.

  • lowleveldata@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    Did you use Spring back then? It would be a useful thing to learn. Might as well see if you like to do frontend things such as React / Vue

    • ulkesh@beehaw.org
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      Yeah Spring wasn’t 1.0 until 2004. We had XML files upon XML files just to describe one single Java “Bean”. I did java programming from 2001-2002 and the again from 2011-today. Things dramatically changed (framework-wise) in that short decade I was away from it.

      I would agree, Spring Boot and Spring are very useful to learn. React, despite having its origins in Facebook and still with Meta’s hands on it, is a good web framework especially if you use it with Typescript.

  • Frittiert@feddit.org
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    For getting a grip in current web development, I would recommend fullstackopen.com - it’s a free online course by the University of Helsinki and starts from basically zero, and gives you a lot of insights into web dev.

    It may take some time, but it’s really worth it and an overall great course.

  • wewbull@feddit.uk
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    I’m trying to understand Git, but it’s a giant conceptual leap.

    To start with, start with just using git locally. Don’t worry about GitHub or similar. Then git and SVN will work very similarly. The main difference is that you need to git add files with changes inside before you commit them.

    Once you’re comfortable with using it by yourself, then I suggest running something like forgejo locally to be your own code server. Then you can play and learn how the two parts work together.

  • leetnewb@beehaw.org
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    I guess, what I’d like to hear from you all is a way to jump back in as quickly as possible in such a way that it may be a career.

    You might check job listings in your region/country to figure out what languages and technology stacks are in high demand, as where you are seems to matter a lot.

  • hades@lemm.ee
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    First of all, you can totally do it! The field is massive, but also full of very bad programmers, and seeing how you were able to write a coherent text of three paragraphs, that already puts you ahead of the curve. Determination and perseverance is key.

    I would suggest to play to your strengths. Java is still Java. Most of the progress since the 1990s was in the libraries and tooling, which only recently have become passable. The language itself also evolved somewhat, but there’s nothing that you won’t pick up in a couple of days of working with it.

    Start with [1], work through all the boxes that are unfamiliar to you, practice a little on a pet project, or an open source project, and you’ll land a job in no time.

    [1] https://roadmap.sh/java

    • hades@lemm.ee
      link
      fedilink
      arrow-up
      0
      ·
      2 months ago

      Also, if you remember enjoying hacking, maybe pick that up again? There’s a massive shortage of security engineers at all times.

  • adr1an@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    As for git, many basic concepts (e.g. staging area) clicked for me after reading some articles that Atlassian (people behind BitBucket) wrote. Other than that, I’d recommend adamj.eu 's book “Git DX” which is on gumroad. Haven’t read it, tho. But I read his Django DX and like 90% of it was stuff I had to learn on my own, and thought: oh, how come I didn’t find this book earlier…

  • fart_pickle@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    If it’s a motivation issue, you will need to figure it out on your own. I could give you some advice but motivation depends on a specific use case. If you want I can share what motivates me but there’s no guarantee it will work for you.

    As for getting back on a tech horse, there’s a trick I’ve been using every time I was learning a new thing and it worked every single time. I start with a project idea. I write down the major goals I want to achieve and start working on it. At first I do the “quick start” adjusted to fit my project. It usually ends up with a working proof of concept and a list of things I don’t know/understand. Next, I learn about the those unknowns and update the project with what I have learned. This raises more unknowns which leads to more things to learn about. After few iterations, when I’m happy about the project, I start a new, more complex project. And so on.

    • jawa21@lemmy.sdf.orgOP
      link
      fedilink
      arrow-up
      0
      ·
      2 months ago

      I want you to understand how surreal this particular link is for me. Video edits are my hobby, and I’ve just recently started yet another play-through of Morrowind. I get the whole “do actual projects” thing and that’s valid, but I’ve no clue where to start here. Should I finally learn C#? Is Rust the only way forward? Should I just try to catch back up on Java? I guess what I’m asking here is should I just try to find a FLOSS/OSS project and try to contribute or think of something new?

      • Deckweiss@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        edit-2
        2 months ago

        You can either decide by what is currently in demand in the industry and then pick a project that you can exercise that language with or you can think of a project you’d like to do and then go by what the best language is for a given project.

        In the end, languages are just like different wrenches. First you have to learn how to use a wrench, size or features don’t matter much at this point (unless you already know that you want to become an expert with one particular wrench).

        I think starting a new project is way easier than contributing to an existing one.

      • vzq@lemmy.blahaj.zone
        link
        fedilink
        arrow-up
        0
        ·
        edit-2
        2 months ago

        All the cool kids right now are mostly on JavaScript/type script. It’s probably a good place to get started since you’ll need it on the front end.

        I’m guessing most work on the U.S. side is react. You can probably pick up a bit of node/react native as you go for the backend and for native dev.

        Java is the new COBOL. Big corps luuuuuuuuurve it. It’s not what I would expect a single dev to use. C# is similar but smaller, if you forget unity game dev. And you should forget unity game dev.

        Rust is basically a less bad C. If you do things you used to do in C, learn rust. If not, don’t.

        Python is also still a thing. If you like it you can probably use it for most things, but if not there are other options.

  • talkingpumpkin@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    Best of luck to you!

    I’m trying to understand Git, but it’s a giant conceptual leap.

    Git is not that different from svn (I mean, the biggest hurdle is going from a shared folder to any version control system)… I’d say the main difference is that branches live in a different namespace than files (ie. you don’t have trunk/src/whatever but just src/whatever in the main branch). On top of that there’s that commit and push are two different things (and the same with fetch and checkout) and that merges are way easier than in svn (where you had to merge stuff manually).

    If you create a repo locally and clone it twice in two different directories, you can easily simulate what would happen when you and a coworker collaborate via a centralized repo (say, github) - do a few experiments and you’ll see it’s not as complicated as it seems (I’d recommend using the CLI instead of some GUI client: it’s way easier to figure things out without the overhead of learning to differentiate between git concepts and how the GUI tries to help).

    • Brosplosion@lemm.ee
      link
      fedilink
      arrow-up
      0
      ·
      2 months ago

      To piggyback, the true main difference is svn stores commits as snapshots and git commits are deltas from previous. This is why git is depicted as a tree since it’s inherently a node-based structure.

      • ericjmorey@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        edit-2
        2 months ago

        A git commit is a snapshot. The node-based tree structure is an artifact of recording pointers to other snapshots and labeling snapshots with a branch name.

        • Brosplosion@lemm.ee
          link
          fedilink
          arrow-up
          0
          ·
          2 months ago

          You are correct. Technically a snapshot, but unmodified files are not duplicated from the previous. Imho that is one of the key things to understand about how git works ( and why rebasing and branch manipulation works so well)

  • FourPacketsOfPeanuts@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    Just remember: imposter syndrome is real. Everything you learn exposes you to ten things you don’t yet know. Successful devs are comfortable with this reality - the job is one of constant learning. Best of luck!

    • some_guy@lemmy.sdf.org
      link
      fedilink
      arrow-up
      0
      ·
      2 months ago

      You said it. I spent the first six months at a FAANG convinced that everyone could look at me and instantly tell that I didn’t belong there. Glad I was able to flip my thinking on that one.

  • oldfart@lemm.ee
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    Get a book on Spring Boot and jump back inro Java web development.

    With git, you don’t need to master it, just find some subversion to git howto and start using it. It’s half a page of text. Once you learn the basics you can learn more as you go. There are many otherwise competent programmers who don’t know git too well, I know because I support them from time to time.

  • Venat0r@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    Just use a good GUI tool for git and Google how to do stuff with command line when needed, you’ll eventually pick it up. Chatgpt and it’s ilk can also be helpful with figuring out things when Google fails.

  • twinnie@feddit.uk
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    Someone will probably shoot me down for this but I actually find ChatGPT good for explaining concepts to me. Especially when I just want a high level understanding of a concept as I try to understand another one without getting too bogged down. A lot of Google results go into way too much detail.

    • iLove@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      2 months ago

      A few months back I would have said the same. Lately, however, ChatGPT very often returned very incorrect information on very basic topics. Each wrong answer erodes my trust a little bit more. Lately to a point where I consider googling first instead of asking ChatGPT

    • Pechente@feddit.org
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      It’s also great for solving issues when you’re stuck. Not because of its superior reasoning skills but it can solve beginner issues and write you a list of things to try when it doesn’t know the answer right away. It’s like a rubber duck that will talk back.

    • qaz@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      2 months ago

      It’s great for explaining entry level information on a wide variety of topics. More advanced / obscure topics are more prone to hallucinations. I used it to learn React and it was a great introduction.

  • Kache@lemm.ee
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    2 months ago

    One of the best tutorials on really “grokking” git concepts, and it’s online and interactive: https://learngitbranching.js.org

    For programming, start with buildings things for yourself. Be practical, start small, and iterate, regardless if you consider the previous iteration was a success or failure. I’ve heard good things about https://automatetheboringstuff.com/ (in Python) in this regard.