Caleb James DeLisle on Nostr: Oh boy, my advice is not going to be that good because I learned like almost 20 years ...
Oh boy, my advice is not going to be that good because I learned like almost 20 years ago.
So to get into software, you have to be a fastidious motherfucker. You do NOT need to be a math genius, that's a meme. But you do need to be perfectionist and also pretty damn stubborn.
First thing I'd do is ditch windows and install linux. It's such a pain in the ass to use, you naturally start learning how it works just to make it work. Install linux and then put up a poster on your wall with linux shell commands, you'll need this later.
Then decide if you're going to be frontend or backend, I'm 100% backend, if you're artsy, do frontend. If you think like a plumber, do backend.
A lot of software is plumbing. You have the data you need in the database, but you need it in the application, so you need to write code that pulls it out of the db, but that code needs to be in the db module, which then the application module talks to the db module using an API, then you need to define the API for pulling that data out. It's all like plumbing or running wires.
If that paragraph made no sense, ask ChatGPT to ELI5 it. When it gives you a stupid answer, demand clarification. This process actually works, and get used to using it, because you'll be using it a LOT.
Then pick a language that's not going to wreck you day 1, if you're doing backend, I'd pick Golang. If you're doing frontend I'd pick ReactJS with Typescript.
There are a billion people out there who are going to tell you that you should learn some fringe language like Zig or Julia or OCaml. Ignore them. I myself write almost exclusively in Rust, but I do NOT recommend it to a beginner. Rust is like the 18 wheeler of programming languages. It's incredibly capable, but it's almost the worst thing to try to learn on.
Now you need to setup an environment. That means installing all of the programs you need on your computer to be able to start coding. I strongly recommend installing Visual Studio Code. You'll need to also install the golang compiler, or if you're doing frontend, install whatever stuff you need to get ReactJS going.
There are a billion people out there who are going to tell you that you need to use some text based editor like Vim or Emacs. Ignore ALL of them, use Visual Studio Code. You can switch to an "elite" editor LATER.
With this, plus a bunch of question/answer from ChatGPT, you should get to the point where you can type out a hello world program in golang, compile it, and run it.
Congratulations, you completed step 1.
At this point, you need to build up your skills, there's a number of online puzzle websites where you can get puzzles to complete by writing code. Leetcode comes to mind as an example.
You can also write some little programs to help you out in your life. If you have something that's slow and annoying, try automating it.
There's one other thing you'll have to learn at the same time and that's git. Make a github account and start making repositories for random stuff you build and uploading them to git. Make sure you clearly document everything with a good readme.md file.
Once you've put in 500-1000 hours doing little projects, you can start looking for some open source projects to contribute to. If you're aiming for a job, you want to find a project which has corporate backing.
When you come in, first thing you do is sweep the floor. Everybody loves function documentation comments that help explain what a function does. If there are uncommented functions, you can often add comments explaining them and your pull requests will get accepted.
Another thing everyone loves is tests, typically if you contribute tests they will be accepted. But if you're going to really meaningfully contribute to the project, you need to actually use it in some way, so that you can understand the project's needs. So if you're contributing to a blogging platform (for instance) well, time to make a blog.
Go buy a 1$/month VPS online and buy a domain name and figure out how to setup a server and host your blog - or host whatever software you're contributing to...
Remember, ChatGPT is your friend. One way or another, you're going to end up learning databases, linux system admin, webservers, and so on. Everything is so interconnected you really can't ignore any of it.
If you succeed in all of this, and maybe do a "boot camp" course, you could even get hired. Open source contributions are a really good way to "bang on the door" of a place where you want to work.
Maybe others of my followers have more thoughts, but that's all I've got.
So to get into software, you have to be a fastidious motherfucker. You do NOT need to be a math genius, that's a meme. But you do need to be perfectionist and also pretty damn stubborn.
First thing I'd do is ditch windows and install linux. It's such a pain in the ass to use, you naturally start learning how it works just to make it work. Install linux and then put up a poster on your wall with linux shell commands, you'll need this later.
Then decide if you're going to be frontend or backend, I'm 100% backend, if you're artsy, do frontend. If you think like a plumber, do backend.
A lot of software is plumbing. You have the data you need in the database, but you need it in the application, so you need to write code that pulls it out of the db, but that code needs to be in the db module, which then the application module talks to the db module using an API, then you need to define the API for pulling that data out. It's all like plumbing or running wires.
If that paragraph made no sense, ask ChatGPT to ELI5 it. When it gives you a stupid answer, demand clarification. This process actually works, and get used to using it, because you'll be using it a LOT.
Then pick a language that's not going to wreck you day 1, if you're doing backend, I'd pick Golang. If you're doing frontend I'd pick ReactJS with Typescript.
There are a billion people out there who are going to tell you that you should learn some fringe language like Zig or Julia or OCaml. Ignore them. I myself write almost exclusively in Rust, but I do NOT recommend it to a beginner. Rust is like the 18 wheeler of programming languages. It's incredibly capable, but it's almost the worst thing to try to learn on.
Now you need to setup an environment. That means installing all of the programs you need on your computer to be able to start coding. I strongly recommend installing Visual Studio Code. You'll need to also install the golang compiler, or if you're doing frontend, install whatever stuff you need to get ReactJS going.
There are a billion people out there who are going to tell you that you need to use some text based editor like Vim or Emacs. Ignore ALL of them, use Visual Studio Code. You can switch to an "elite" editor LATER.
With this, plus a bunch of question/answer from ChatGPT, you should get to the point where you can type out a hello world program in golang, compile it, and run it.
Congratulations, you completed step 1.
At this point, you need to build up your skills, there's a number of online puzzle websites where you can get puzzles to complete by writing code. Leetcode comes to mind as an example.
You can also write some little programs to help you out in your life. If you have something that's slow and annoying, try automating it.
There's one other thing you'll have to learn at the same time and that's git. Make a github account and start making repositories for random stuff you build and uploading them to git. Make sure you clearly document everything with a good readme.md file.
Once you've put in 500-1000 hours doing little projects, you can start looking for some open source projects to contribute to. If you're aiming for a job, you want to find a project which has corporate backing.
When you come in, first thing you do is sweep the floor. Everybody loves function documentation comments that help explain what a function does. If there are uncommented functions, you can often add comments explaining them and your pull requests will get accepted.
Another thing everyone loves is tests, typically if you contribute tests they will be accepted. But if you're going to really meaningfully contribute to the project, you need to actually use it in some way, so that you can understand the project's needs. So if you're contributing to a blogging platform (for instance) well, time to make a blog.
Go buy a 1$/month VPS online and buy a domain name and figure out how to setup a server and host your blog - or host whatever software you're contributing to...
Remember, ChatGPT is your friend. One way or another, you're going to end up learning databases, linux system admin, webservers, and so on. Everything is so interconnected you really can't ignore any of it.
If you succeed in all of this, and maybe do a "boot camp" course, you could even get hired. Open source contributions are a really good way to "bang on the door" of a place where you want to work.
Maybe others of my followers have more thoughts, but that's all I've got.