How do I go about this? Are there any free resources that’ll help me get started?

I see people advising to start with a small project, but you need to get some basics down right? What language? How to develop it and stuff?

My only experience is some very basic C programming classes I took during school.

  • Christov
    link
    English
    410 hours ago

    Like others have said it depends on the field you want to code for and language choice. The field might inform your language choice.

    I’d highly recommend python as your first if you’re just looking to get stuck in. It’ll teach good fundamentals, it doesn’t have a steep learning curve and it has a very wide set of applications plus loads of community support. This website is what I recommend to anyone wanting to learn python: https://futurecoder.io/

    Good luck!

  • @[email protected]
    link
    fedilink
    310 hours ago

    IT guy here, I don’t really program, but I do write scripts in Powershell and Bash from time to time.

    I mostly learn by doing, so I have a task that I need to write a script to accomplish.

    One script I often use is a tool I made to ping devices in a network range.

    This breaks down into several smaller steps.

    1. Define the start IP address
    2. Define the stop IP address
    3. Issue a ping command
    4. Repeat the ping command for every adress in the defined range.
    5. Output the data
    6. Colour code the data
    7. Make every IP address ending with a 0 be colourded in the output.

    Each step is fairly simple to find out how to solve, together they make a good script to solve the initial issue.

  • @Sinthesis
    link
    3
    edit-2
    12 hours ago

    Learning a programming language , is pretty simple (didnt say it was easy)…its memorization. Maybe less so now with the advent of things like Copilot/AI assistants.

    Understanding what you’re trying to accomplish is possibly the harder part. I would rephrase your statement: “I want to learn how to build an application”. For this you can butter toast…with instructions.

    Pretend there are two people, one is the instructor and one is the toaster/butterer. There is a wall between them so one cant see what the other is doing and the end result is buttered toast. There are a couple resources; bread, butter, knife, toaster, plate.

    1st attempt the instructor says: Pick up bread, put it in toaster, take out bread and put on butter. Result: Untoasted bread, butter on hands

    2nd attempt the instructor says: Pick up bread, put in toaster, push switch down to toast, take out bread and use knife to put on butter. Result: Loaf of untoasted (did you check if toaster is plugged in?)bread with butter on both sides sitting on the counter (remember the plate?).

    See how specific you have to be about certain things? I would call this functional programming. Object oriented program takes it a bit farther in that the toaster is now classified with things like; browness level, electricity/plug state, slice/bay current occupancy, toast switch etc.

  • Caveman
    link
    416 hours ago

    Start my picking what you want to do with programming. Then do a couple of simple challenges in any language like advent of code and such in python just to get your feet wet and solve some problems.

    After that you should have the main building blocks and then you scale up into making a “thingy” sized project. I personally liked making games with progression like.

    1. Text adventure
    2. Tic tac toe
    3. Another text adventure but with battles and hit points.
    4. Tetris

    Then you can start learning separation of code into modules like “This is the game and this is just how it’s shown” which applies to pretty much every application with a user interface.

    After that you have enough skill to learn anything and you can go about learning a specific skill or technology that you want to work with and you’ll be at a skill level of a junior programmer.

    Advancing beyond that I’d recommend reading a couple of books (crazy I know) that go over best practices and why they exist. You use those guidelines and get better at working with larger amount of code and then you get to mid level. During this time you should also basic rules of thumb on how long each thing takes to run, both algorithm complexity and how http requests are usually the bottleneck.

    For senior level you’ll need to gain a lot of experience and become a library of solutions and bug knowledge while also having a good grasp of tradeoffs. You’ll need to know when to insulate yourself from change and when it’s overkill to deliver the code in a timely manner while not sacrificing tomorrow.

    It’s very hard to skip any step in my opinion but reading a couple of books really helped me advance through the junior phase quickly just by knowing what solutions are out there. Books are not as valuable when you don’t have experience since it’ll stick 10x better if you encountered the problem described in the book.

    To get started just pick anything and get your feet wet. Good luck!

    • @amldvkOP
      link
      114 hours ago

      Any books you would recommend?

      • Caveman
        link
        2
        edit-2
        8 hours ago

        Clean Code, in overly idealistic and speaks like it’s the holy truth but ideas are generally good. Same with Clean architecture. The guy talks like it’s the only way but in my experience it’s just a collection of tricks you could do but maybe shouldn’t because of time pressure. One off code with a single purpose doesn’t have to be that clean and functions almost never have to be that small.

        Pragmatic programmer is also good and there are also more books on non-programming part as well. You could also ask ChatGPT since it’s really good at exactly these questions.

        Still, no use reading this until you ran the gauntlet of building up basic programming skills :)

  • @Feathercrown
    link
    English
    618 hours ago

    Step 1 is determining what kinds of projects you want to make and selecting a language and/or libraries that will help you do that. Eg. if you want to code for the web, there’s JS. Then you can follow tutorials, and/or jump into making small projects.

    • Lemminary
      link
      217 hours ago

      Yeah, although some languages can be used for practically anything, including JS. Some people program microchips with it. Lol

  • @[email protected]
    link
    fedilink
    417 hours ago

    Pick a language to start. If you want to automate CAD, maybe it has an existing scripting language built-in?

    Learn the basics from the documentation. Look at the examples. Learn how to search for specific answers.

    Finally, practice a lot. Most of the challenge is breaking a problem down into discrete steps (your algorithm), which can be written in pseudo-code. The implementation of that algorithm may look different depending on what the target language is, or what library/tools you can leverage within that language.

    https://codingbat.com/ if you choose Java or Python

    https://www.freecodecamp.org/

    https://adventofcode.com/ has easy-to-challenging problems suitable for any language

  • slazer2au
    link
    English
    261 day ago

    Harvard CS50 on YouTube might be a good start. Teaches python and you can then pivot to another language from there.

    • @[email protected]
      link
      fedilink
      719 hours ago

      This is how i initially got started and i always like to recommend it. CS50x (introduction to computer science) is their college curriculum made available for free as opencourseware. Their lectures are very engaging imo, and you get problemsets to practice and check your answers. The problems are done in an online environment which i like so you don’t get bogged down in setting up your computer before you’ve even learned how to code. And then at the end you pick a project of your own and when you finish you get a free certificate (don’t bother paying for the “verified” one)

      One other thing i think cs50 does pretty well is help teach you how to solve problems and how to read documentation. The reality is that learning how to code isn’t just learning a coding language. Knowing how to solve different types of problems and how to read documentation are core skills that let you get away from “tutorial hell” and start working on a project that excites you.

    • @amldvkOP
      link
      61 day ago

      Looks interesting, I’ll check it out!

  • GeekMan
    link
    fedilink
    620 hours ago

    To add to the list, Codingame.com

    It wouldn’t be the first thing to try. Get the basics down on your own machine/environment. Try this for something additional.

    CodinGame gives you the IDE and build environment in your browser, so it’s for learning/practicing/testing coding knowledge without building/deploying locally, or worrying about UI/persistence/networking etc.

    It’s filled with coding puzzles and competitions. I started where they give you animated scenarios (to look like part of a game or engine), and you contribute a small, missing unit of code to complete the challenge.

    You can choose from 25 languages, they encourage unit-testing, and there are global coding competitions and company outreach to top coders. I don’t wanna say they gamified it… but they did.

    But once you’re comfortable with those, CodinGame lets you practice different concepts & algorithms without having to come up with the bigger systems around them.

    I’ve loved it for getting back to coding after a while, tinkering with certain concepts, or trying other languages.

    I’m not affiliated with it. Just loved the idea & execution. Except for Mars Lander III challenge. That can get @#$&ed.

    • Caveman
      link
      216 hours ago

      My journey went codecademy -> codingame -> quitting my job and going to university -> first job

      I went to University to get more problems to solve after grinding codingame and decided to overkill them and had fun while doing it. I remember Mars lander, it was really hard, hahaha.

      • GeekMan
        link
        fedilink
        1
        edit-2
        12 hours ago

        Yeah that sounds like a good path!

        I used to love advanced math, physics and game coding, so I’ve revisited the 'Landers several times over the years (a day here and there in the middle of life/emigrating/careers).

        If you also Google for solutions to the 'Landers you’ll find people have done hardcore analysis and genetic algorithms!

        (cough like this)

        Next mission: somehow hack UE5 into CodinGame and let it sort it out.

    • @amldvkOP
      link
      114 hours ago

      This sounds fantastic!

      • GeekMan
        link
        fedilink
        213 hours ago

        I think it is!!

        Gather food & liquids, cancel any plans tomorrow, fire it up in a browser.

        Y’welcome.

      • Nightwatch Admin
        link
        fedilink
        622 hours ago

        Scratch is a coding tool and system that is primarily targeted at children, and relies strongly on a visual way of working. It is easy, can be switched feom visual to text, and ultimately switched to python.

  • @Passerby6497
    link
    English
    151 day ago

    Realistically, you should still find a project that you want to do and use that as the basis of your learning, as that will influence your language of choice,. I’d start with either python or powershell stuff to get going, as both are general purpose, multiplatform languages that can do a lot and are moderately forgiving with syntax and stuff.

    Past that, find a project that interests you, break down what needs done, and learn those steps individually. It’s not as cohesive as a hand holding hello world style tutorial, but I found I learned so much better if I had a need for the knowledge instead of just learning for it’s own sake.

    In my case, I picked powershell as I’m a windows admin. Since I’m a data hoarder as well, I chose a video conversion pipeline to convert all of my movies into a consistent file format. Part of the requirements are to find all files with an extension that isn’t my standard (concepts: file listing, filtering, working with objects) and then execute an external program to convert the files (concepts: command line execution, state management, error handling, looping), validate the conversion completed successfully (concepts: reading file content, filtering/regex), moving the files to a new location or replacing the file with the new one and backing up the original (concepts: file management), and log file retention and cleanup. As I developed my script, I also began learning to properly “function-ize” my code to make things more readable/usable, and eventually started moving functions into a module to better modularize my code.

    A decade later and I’m currently in the middle of a couple of projects using powershell to make and call API functions to automate business services at work.

    • @[email protected]
      link
      fedilink
      21 day ago

      As I developed my script, I also began learning to properly “function-ize” my code to make things more readable/usable

      I also started with Powershell, and not by reading guides/books. I got pretty good with using the pipeline, loops, etc. but my code was terrible soup with no re-usability. Later I learned JavaScript and realized how important it is to think about functions first when writing scripts. Makes everything easier and smoother.

      • @Passerby6497
        link
        English
        11 day ago

        Yeah, it definitely helps to plan things out ahead of time, but I’ve had decent luck with refactoring a code block into a function to reuse code or cleanup sections. But I definitely try to make it into a function first when I can since it’s less work than going back and fixing stuff, but sometimes a simple code block blows up or you need to reuse it later.

    • @amldvkOP
      link
      21 day ago

      Wow, thank you for the detailed response. I do have ideas for what kind of stuff to work on, especially after your great example. Thank you again!

      • @Passerby6497
        link
        English
        31 day ago

        You’re welcome! Coding has been my passion since I was in high school, and I understand how hard it can be to wrap your head around the concepts, even with formal schooling on the topic. To the point that I’ve learned so much more on my own than I did in school just because my passion allowed me to internalize the knowledge instead of just learning it.

        Best of luck on your adventure!

        • @amldvkOP
          link
          21 day ago

          I remember a time in my life, back when I was trying to learn C. Every time I saw a problem my brain directly started breaking it down in to steps. How to solve this consistently, think about edge cases, etc.

          I want to get that back!

  • go $fsck yourself
    link
    English
    621 hours ago

    One thing that has not been mentioned that will make a big difference: join an online community.

    When you get stuck or you’re confused and need to ask a question, you need to have a place you can reliably go to for that. You will also be able to see others go through their learning journey which will encourage you to keep going.

    Someone mentioned The Odin Project already, but they have a very big and wholesome community.

    My specialty is web development, but the concepts of programming is pretty universal. Feel free to DM me personally if you want some help.

  • @SpicyTaint
    link
    622 hours ago

    I’ve been going through The Odin Project for full stack web development. It’s been great and is completely free.

    I would advise against using Chat GPT or any other LLM; they “hallucinate” and can give you wrong information.

    • @Grimy
      link
      420 hours ago

      Imo, the main problem is that it does the job for you and you don’t learn anything. It’s great at explaining concepts though.

      Along the same lines, I would suggest to never copy/paste code. Physically writing it helps your brain remember.

      • @SpicyTaint
        link
        318 hours ago

        Yea, just copy/pasting code without already understanding it is a bad move.

        If you deliberately drive GPT into a certain direction with the prompts about a specific topic and the model has been trained on the subject matter, its accuracy will be higher. If you ask GPT about a less popular language that it has little or no training on, its answer will likely be garbage.

  • @Eheran
    link
    422 hours ago

    Not sure why nobody mentioned it, but use GPT or whatever you like to create code for you and explain everything. It is like talking to someone with some experience. Not everything is perfectly correct etc. if you get into more complicated stuff but you will certainly learn a lot and fast. The learning curve got a lot flatter with these tools.