Telling people you're a self taught developer in YouTube is a big business now
69 comments
> Do you think it's practically possible to learn everything without any structure, discipline?
Yes and no.
For the YES part: I am a self-taught developer, and I got promoted to Principal this year. I taught myself Ruby on Rails first, then after a year pivoted to front-end.
For the NO part: This part is twofold. First, you can't learn everything. The job of an engineer is to learn how to do things, and most of the time there aren't convenient tutorials you can just follow. In the front-end world, lots of us started as hobbyists first. Second, you absolutely cannot learn development without structure and discipline, but you can have those things without a formal class. I learned front-end using FreeCodeCamp, and the course there absolutely has structure. The discipline has to come from you. Learning discipline was part of it for me.
You have to be patient. You spent a month trying to learn front-end? I spent 3 years doing development as a self-taught hobby before applying for a job. It doesn't have to take that long, but that first month is the start of your learning journey, not the end. Would you be frustrated that you couldn't "learn" guitar in a month of watching youtube videos? The basics of music are quite simple, it's the 10,000 hours of practice that differentiates the adept from the novice. Front end web development is simpler in some ways.
> Can anyone remain patient for 40 days to learn html, css
The basics of HTML and CSS only take a few hours to learn. I couldn't imagine spending 40 hours on the "learning" part, but building definitely takes a long time, especially when you are just starting out. This is where the patience and discipline part comes into play. That feeling of frustration is a part of the job, especially for junior/mid-level devs.
I will tell you this: being self-taught has not hurt my career at all, but has helped. I'm pretty good at what I do, which includes teaching others as well, and people are more impressed when you get to this level without formal training. I used to feel inferior to people with CS degrees, but now I really play up the "self-taught" thing.
Yes and no.
For the YES part: I am a self-taught developer, and I got promoted to Principal this year. I taught myself Ruby on Rails first, then after a year pivoted to front-end.
For the NO part: This part is twofold. First, you can't learn everything. The job of an engineer is to learn how to do things, and most of the time there aren't convenient tutorials you can just follow. In the front-end world, lots of us started as hobbyists first. Second, you absolutely cannot learn development without structure and discipline, but you can have those things without a formal class. I learned front-end using FreeCodeCamp, and the course there absolutely has structure. The discipline has to come from you. Learning discipline was part of it for me.
You have to be patient. You spent a month trying to learn front-end? I spent 3 years doing development as a self-taught hobby before applying for a job. It doesn't have to take that long, but that first month is the start of your learning journey, not the end. Would you be frustrated that you couldn't "learn" guitar in a month of watching youtube videos? The basics of music are quite simple, it's the 10,000 hours of practice that differentiates the adept from the novice. Front end web development is simpler in some ways.
> Can anyone remain patient for 40 days to learn html, css
The basics of HTML and CSS only take a few hours to learn. I couldn't imagine spending 40 hours on the "learning" part, but building definitely takes a long time, especially when you are just starting out. This is where the patience and discipline part comes into play. That feeling of frustration is a part of the job, especially for junior/mid-level devs.
I will tell you this: being self-taught has not hurt my career at all, but has helped. I'm pretty good at what I do, which includes teaching others as well, and people are more impressed when you get to this level without formal training. I used to feel inferior to people with CS degrees, but now I really play up the "self-taught" thing.
> it's the 10,000 hours of practice that differentiates
Jeez this hits home for me. I think of myself as a decent guitarist and songwriter, but when I look at what I consider “good” guitarists that are far better than I am and that are half my age, I have to keep telling myself it’s because they’ve put in those countless hours despite being so young, which means that in their much shorter life span, they have somehow fit in my entire lifetime’s worth of practice and possibly much more. What did they have to sacrifice to do that? Friends, relationships, gaming, binging on youtube or tiktok? If you can be ok with certain sacrifices, you can accomplish great things.
Jeez this hits home for me. I think of myself as a decent guitarist and songwriter, but when I look at what I consider “good” guitarists that are far better than I am and that are half my age, I have to keep telling myself it’s because they’ve put in those countless hours despite being so young, which means that in their much shorter life span, they have somehow fit in my entire lifetime’s worth of practice and possibly much more. What did they have to sacrifice to do that? Friends, relationships, gaming, binging on youtube or tiktok? If you can be ok with certain sacrifices, you can accomplish great things.
It's not a sacrifice if you are driven. Some people just can't NOT do it.
Pick a project you’re passionate about and find a technology you’re curious to learn. Then figure out how to make it happen. You can chart your own course (and from what I’ve seen from most bootcamp project results during interviews, you probably should).
I’m a self-taught dropout - I learned how to do this to the detriment of other endeavors including my assigned coursework (which happened to be for another degree).
It sounds like you’re not doing this because you’re driven to. That’s fine, but you’ll probably struggle doing it on your own. I’m guessing those self-taught folks were just more inclined to the field.
I’m a self-taught dropout - I learned how to do this to the detriment of other endeavors including my assigned coursework (which happened to be for another degree).
It sounds like you’re not doing this because you’re driven to. That’s fine, but you’ll probably struggle doing it on your own. I’m guessing those self-taught folks were just more inclined to the field.
I was a software developer before, but in an obscure language and I was taught on the job, no CS degree, and there are plenty of gaps in my knowledge.
I had a little side project going, I didn't want to spend money on the software normally used and started figuring out how to write my own, kept me out of trouble in the evenings, but then I got made redundant. I'd pretty much lost all interest in my career field, and getting a new job in the same field would have meant moving to another country. I had enough.
So I just threw myself into learning and developing software that I could publish, tried to make money, unfortunately that did not work out, but I did publish apps, and even got some fans of it, but it wasn't paying the bills. However a published pretty complex app is a good referral when applying for jobs. I eventually landed a job doing something much more up to date and interesting,
I still kept a new passion for just writing random apps on the side, wrote one to interface with software my employer makes to do something I was interested in then started seeing it could be really useful to them, and started pushing it to them, now I work on that full time with a team.
I had a little side project going, I didn't want to spend money on the software normally used and started figuring out how to write my own, kept me out of trouble in the evenings, but then I got made redundant. I'd pretty much lost all interest in my career field, and getting a new job in the same field would have meant moving to another country. I had enough.
So I just threw myself into learning and developing software that I could publish, tried to make money, unfortunately that did not work out, but I did publish apps, and even got some fans of it, but it wasn't paying the bills. However a published pretty complex app is a good referral when applying for jobs. I eventually landed a job doing something much more up to date and interesting,
I still kept a new passion for just writing random apps on the side, wrote one to interface with software my employer makes to do something I was interested in then started seeing it could be really useful to them, and started pushing it to them, now I work on that full time with a team.
> Pick a project you’re passionate about and find a technology you’re curious to learn
This is the absolute best way to learn anything in my eyes, as you build it you will be forced to face problems and forced to find solutions for those problems yourself.
This is the absolute best way to learn anything in my eyes, as you build it you will be forced to face problems and forced to find solutions for those problems yourself.
The hard part is coming up with project. But you should have that in mind before you learn programming. Otherwise what's the point?
If you can't come up with (and be driven by) a project on your own, find someone (a friend, a prospective cofounder, a colleague) who does have an idea, then work with them on making that idea come to life.
I think the project is the easy part, especially if making money isn't the goal. I have dozens or hundreds that I will never get to, and sometimes come up with multiple new ones a day.
These people on YouTube are in the business of selling themselves. I don't mean selling themselves as one might in a job interview, I mean the end-product of what they're selling is a personality cult. Like with any other cult, I find these people to be useless, dishonest, and predatory. They're selling things people want to hear. Once you have your cult (or audience, to be politically correct), you could sell them anything from equity in your "business", a crappy HTML course, to your bathwater.
It's like the Forbes 30 under 30. Most people on that list have tons of press, a company or project or two under their belt that they're ostensibly always working on, but they don't actually do anything useful; related further reading: https://news.ycombinator.com/item?id=21082523 - "Forbes 30 under 30 hustle". Top comment says it pretty well.
It's like the Forbes 30 under 30. Most people on that list have tons of press, a company or project or two under their belt that they're ostensibly always working on, but they don't actually do anything useful; related further reading: https://news.ycombinator.com/item?id=21082523 - "Forbes 30 under 30 hustle". Top comment says it pretty well.
> I didn't even know the basic of the things like, how much hrs of content should I watch daily to not get overwhelmed?
The answer is zero.
> Please tell me your tips for being a self taught developer.
Try to make stuff. Get stuck. Figure path forward through sheer tyranny of will. Do not google answers.
The answer is zero.
> Please tell me your tips for being a self taught developer.
Try to make stuff. Get stuck. Figure path forward through sheer tyranny of will. Do not google answers.
I highly recommend googling answers, if you also take the time to research the answer enough to understand it.
+1 to "Make stuff > watch stuff"
Yes, it's how people used to do it. I spent my first decade without mentorship. A month isn't enough time; I consider what I do a craft that I'm honing over the course of a life time.
It's absolutely possible but you need to be extremely motivated and willing to grind. It's all about the grind, it's not just "learning to program" it's the tooling, the shell, the messy configs, etc.. basically everything around programming.
Do you have it in you to just power through and keep plowing in the face of adversity? Do you have the personality to sit in front of a computer for hours and hours while being mostly frustrated with the occasional high from getting it to work?
And by the way, no one will "teach to program" you have to learn it yourself.
Like others said, pick an area and a goal. I would just recommend that you use chrome devtools + kaboom.js and hammer some basic basic games to start with.
Do you have it in you to just power through and keep plowing in the face of adversity? Do you have the personality to sit in front of a computer for hours and hours while being mostly frustrated with the occasional high from getting it to work?
And by the way, no one will "teach to program" you have to learn it yourself.
Like others said, pick an area and a goal. I would just recommend that you use chrome devtools + kaboom.js and hammer some basic basic games to start with.
Doing programming is like playing Dark Souls. Trying things again and again until you've pinned down the problem (learning the moves of the boss) then present a final solution that solve it. Then be euphoric when it does exactly that (when you beat the boss). I think that's why I love those games.
I started making websites in 1995 when I realize how easy it is to edit HTML code. I then saw a job board posting in high school for a local company that wanted a web designer. Fast forward to college I opted to take Business School because the computer science department was so ancient. I didn't want to spend time learning archaic languages for the sake of 'theory'. Fast forward to today and I've been programming successfully, without any formal training for over 25 years.
Hi, as someone attempting this full time, here is my take.
Legit or not, I have no idea, demand being high, it's not that hard to get a job I guess if you're not aiming for FANG level. Plus, most of these people, as far as I know, are a developer advocate or content creator for the their company and not developers per se.
Project based learning is good, but structured learning is better IMO. For the single reason that when you start you don't know what you don't know someone has to guide you. You can learn everything from building whatever you like, making mistakes, correct said mistakes, rinse and repeat. But it will take you way more time than just following a premade path, and be done with it. For that I made my own "boot camp" (here https://github.com/woadray/bootcamp if interested). I, like you was lost in this YouTube business of self a taught dev recommending courses and such. Decided after more research and discussions with qualified people that most of them are trash. I'm experimenting on myself to see how doable is it to get a job as a self taught developer with a twist, I'm from Africa and I live in France (for now at least), aiming for US remote job if not sponsored. All you need is discipline I think.
Tips:
- BOOKS are better than VIDEOS
- Leetcode style website are puzzle games, try to have fun with them. You can learn on the job, but in order to do that you have to get that job first.
- Build hard stuff
Legit or not, I have no idea, demand being high, it's not that hard to get a job I guess if you're not aiming for FANG level. Plus, most of these people, as far as I know, are a developer advocate or content creator for the their company and not developers per se.
Project based learning is good, but structured learning is better IMO. For the single reason that when you start you don't know what you don't know someone has to guide you. You can learn everything from building whatever you like, making mistakes, correct said mistakes, rinse and repeat. But it will take you way more time than just following a premade path, and be done with it. For that I made my own "boot camp" (here https://github.com/woadray/bootcamp if interested). I, like you was lost in this YouTube business of self a taught dev recommending courses and such. Decided after more research and discussions with qualified people that most of them are trash. I'm experimenting on myself to see how doable is it to get a job as a self taught developer with a twist, I'm from Africa and I live in France (for now at least), aiming for US remote job if not sponsored. All you need is discipline I think.
Tips:
- BOOKS are better than VIDEOS
- Leetcode style website are puzzle games, try to have fun with them. You can learn on the job, but in order to do that you have to get that job first.
- Build hard stuff
Based on my own self-taught path, I think it's a lot easier if you have a project in mind first. Many moons ago, I had a few personal web design clients (frontend developer wasn't a term yet), and I was tired of updating their static sites by hand. So, I decided to learn PHP (and MySQL and Apache) in my spare time to solve this issue. That took a long time. A year maybe? Certainly not 40 days.
Then, I got interested in the Arduino, then graphics programming (openFrameworks, openGL), then iOS apps, and the list goes on. I worked as a graphic designer during the day, and would tinker with this stuff at night or the weekend. Eventually, started applying to developer jobs, and the rest is history.
The point is: My interest in writing software was primarily hobby driven. Not career driven. I would run into a problem with the code (or some concept), research it, and move on. The projects I worked on would dictate the path in which I learned these things.
All that said, I would have loved something more structured. Beating your head against the wall to figure things out isn't the most time efficient way to learn things. But, it's the way I did. And, fwiw, this field is a constantly moving target. You're going to have to teach yourself a lot over the years.
Then, I got interested in the Arduino, then graphics programming (openFrameworks, openGL), then iOS apps, and the list goes on. I worked as a graphic designer during the day, and would tinker with this stuff at night or the weekend. Eventually, started applying to developer jobs, and the rest is history.
The point is: My interest in writing software was primarily hobby driven. Not career driven. I would run into a problem with the code (or some concept), research it, and move on. The projects I worked on would dictate the path in which I learned these things.
All that said, I would have loved something more structured. Beating your head against the wall to figure things out isn't the most time efficient way to learn things. But, it's the way I did. And, fwiw, this field is a constantly moving target. You're going to have to teach yourself a lot over the years.
It is hard for me to give any advice here as I learned by being a kid. I was lucky enough to have an uncle who handed us down an Amiga 500. It came with a few games. And we received right at the tail end of a push to teach every kid programming in the late 80s. So I had heaps of Compute! magazines and books on BASIC from the library.
Back then games were expensive and computer programming was, I think, a lot more accessible. Learning how to make your own games seemed almost like a natural thing to do with a computer in that environment. So that’s what I did.
I went from BASIC and assembly to C to make games for the Amiga and later DOS. I eventually picked up some Perl later on after the “Internet” came out. I even dropped out of high school for a year to make a ton of money building websites with it in the 90s. The crash happened, I finished school a year later than my mates.
Brief interlude in my early twenties to play in bands, learn music production, start a record label, and fail at that before giving up and take up making websites to make a buck.
I remained self taught. I never really stopped programming. My record label was supposed to be this subscription service online that let you stream and share as much of the catalog as you wanted and get dibs on merch, tickets, secret shows, etc. I built a good bit of it myself.
I just kept going. Programming is something that I had a knack for, an interest in, and I guess the focus and discipline to learn more and more as I went.
These days I enjoy formal methods, hacking around in Haskell, I still build things in C and assembly to make games for old retro consoles or whatever.
If there is any advice in this rant I guess it’s: follow your nose. If you like programming you’ll find a way to stick through it.
Back then games were expensive and computer programming was, I think, a lot more accessible. Learning how to make your own games seemed almost like a natural thing to do with a computer in that environment. So that’s what I did.
I went from BASIC and assembly to C to make games for the Amiga and later DOS. I eventually picked up some Perl later on after the “Internet” came out. I even dropped out of high school for a year to make a ton of money building websites with it in the 90s. The crash happened, I finished school a year later than my mates.
Brief interlude in my early twenties to play in bands, learn music production, start a record label, and fail at that before giving up and take up making websites to make a buck.
I remained self taught. I never really stopped programming. My record label was supposed to be this subscription service online that let you stream and share as much of the catalog as you wanted and get dibs on merch, tickets, secret shows, etc. I built a good bit of it myself.
I just kept going. Programming is something that I had a knack for, an interest in, and I guess the focus and discipline to learn more and more as I went.
These days I enjoy formal methods, hacking around in Haskell, I still build things in C and assembly to make games for old retro consoles or whatever.
If there is any advice in this rant I guess it’s: follow your nose. If you like programming you’ll find a way to stick through it.
I am self-taught and am co-founder/CTO of my second company. We have 35 or so employees, so we’re small, but it’s something I’m super proud to have created from nothing.
I started many years ago with little projects. Building a simple website with Rails tutorials. Trying a basic Node app. Eventually I got my first internship making $15/hr, and they forced me to learn tmux and Vim (for which I am super grateful) and work on a variety of codebases and tech alongside more senior engineers. From there I had the skills to start my first company (still learning a lot along the way!)
I have never been motivated by courses. I need to have a goal to be successful, so if you’re at all like me in that it’s difficult to stick to a course, I’d recommend you start a small project and learn to do specific things that help you achieve a little task.
I started many years ago with little projects. Building a simple website with Rails tutorials. Trying a basic Node app. Eventually I got my first internship making $15/hr, and they forced me to learn tmux and Vim (for which I am super grateful) and work on a variety of codebases and tech alongside more senior engineers. From there I had the skills to start my first company (still learning a lot along the way!)
I have never been motivated by courses. I need to have a goal to be successful, so if you’re at all like me in that it’s difficult to stick to a course, I’d recommend you start a small project and learn to do specific things that help you achieve a little task.
I mean I've been writing stuff in Python since I was 8 or 9 years old, I'm now writing a bunch of C code for an open source project. I wouldn't say I'm too good at the coding challenges though. I don't know know how those compare to real work.
Absolutely possible, but the ones I know didn't rush it in a few months but had it as a childhood hobby for many years before changing trade.
Based on talking to my co-workers I would say somewhere around 80% of them are self-taught (i.e. no CS degree). Most have some kind of technical degree (Physics, Maths, Engineering etc). A few have non-technical degrees and some have no degree at all.
Being self-taught is completely unremarkable.
I think you're going about learning programming the wrong way. Don't try and learn everything up front and then only apply it at the end. You need a project you're trying to make and then you just start doing it. When you get stuck go and learn more to get past that obstacle.
Being self-taught is completely unremarkable.
I think you're going about learning programming the wrong way. Don't try and learn everything up front and then only apply it at the end. You need a project you're trying to make and then you just start doing it. When you get stuck go and learn more to get past that obstacle.
There is no checkbox for someone to check that once done that's it, they're now a programmer and can just do it in every situation without learning. I work with very talented and experienced developers who learn new things frequently.
The ability to constantly self-teach is table stakes for programming. I suspect what you're asking is is it possible for someone to teach themself from nothing enough to get a job and I think so--although it depends on the job and there is definitely a progression, or a "meta-career", that goes beyond the basic act of performing fizz-buzz or inverting trees for interviews.
If you aren't asking about employment the answer is still yes--it's quite accessible to self-learn enough programming to do something useful, satisfying, and or fun. Does that mean everyone is capable of rising to any challenge on any day based on what they've already taught themselves? Of course not.
My read of your post, which may be missing something important, is that you've succumbed to the common trap that there's some mystical mountain that once you climb it you're good and the journey is over. This seems to be a common viewpoint of non-technical people.
Sure, with experience and or education the surface area of problems that one can readily solve grows, but no one can solve all programming problems merely with what is already in their head.
The ability to constantly self-teach is table stakes for programming. I suspect what you're asking is is it possible for someone to teach themself from nothing enough to get a job and I think so--although it depends on the job and there is definitely a progression, or a "meta-career", that goes beyond the basic act of performing fizz-buzz or inverting trees for interviews.
If you aren't asking about employment the answer is still yes--it's quite accessible to self-learn enough programming to do something useful, satisfying, and or fun. Does that mean everyone is capable of rising to any challenge on any day based on what they've already taught themselves? Of course not.
My read of your post, which may be missing something important, is that you've succumbed to the common trap that there's some mystical mountain that once you climb it you're good and the journey is over. This seems to be a common viewpoint of non-technical people.
Sure, with experience and or education the surface area of problems that one can readily solve grows, but no one can solve all programming problems merely with what is already in their head.
The only lesson that can be taken from here is marketing.
The business model is easy: "Yes, you can, no need to go to University!" followed by insane promise "40 days of anything" and in the end people blame themselves for not being able to cope with it. At this point they sell you another insane yes, you can do it program.
Learning is sometimes hard. I know quite a couple of Computer Science graduates who do not know html/css and have a not to fun time learning it.
The business model is easy: "Yes, you can, no need to go to University!" followed by insane promise "40 days of anything" and in the end people blame themselves for not being able to cope with it. At this point they sell you another insane yes, you can do it program.
Learning is sometimes hard. I know quite a couple of Computer Science graduates who do not know html/css and have a not to fun time learning it.
It's true that you won't be able to "get a job in 40 days". But it's also true that you can succeed as a self-taught developer. I did it. The caveat is that it took me Years not Days to get my first job.
I did it in 1.5 years. Went to college for business, now been a Rails dev for 9 months.
The only question is if you really want it. It's a lot to learn, but anyone can do it. I did it with 0 knowledge of anything CS/programming related, you so definitely can.
After that,
1) Focus on *one main technology* (ex: only focus on React if you want to do Frontend or Node.js for Backend). Ultra focus will shortcut your learning like crazy. If I hadn't gotten distracted by different technologies, I probably could have gotten a job in half the time. Even if you pick React, then realize you want to do backend later, you'll still progress faster than constantly flipping between tech.
2) For each technology you're learning, *pick a tiny project to build while you're learning the technology*. I can't stress this one enough. You learn 10x faster when you have a real application in mind to tie your learning to. For example, when learning HTML&CSS, I made a prototype of an app idea. The app didn't actually work, but it cemented my learning. And when I learned different concepts, I'd think "Ah, so that's how I'd make the button round".
And don't be religious about finishing courses — the real learning happens when you start making things.
The only question is if you really want it. It's a lot to learn, but anyone can do it. I did it with 0 knowledge of anything CS/programming related, you so definitely can.
After that,
1) Focus on *one main technology* (ex: only focus on React if you want to do Frontend or Node.js for Backend). Ultra focus will shortcut your learning like crazy. If I hadn't gotten distracted by different technologies, I probably could have gotten a job in half the time. Even if you pick React, then realize you want to do backend later, you'll still progress faster than constantly flipping between tech.
2) For each technology you're learning, *pick a tiny project to build while you're learning the technology*. I can't stress this one enough. You learn 10x faster when you have a real application in mind to tie your learning to. For example, when learning HTML&CSS, I made a prototype of an app idea. The app didn't actually work, but it cemented my learning. And when I learned different concepts, I'd think "Ah, so that's how I'd make the button round".
And don't be religious about finishing courses — the real learning happens when you start making things.
My 'self-taught developer experience' as a teenager is too far back to be any useful today I guess, but when I learn a new technology (like a new programming language) I usually don't use any '3rd-party-material', but instead just lock myself into a room with my computer and just use whatever there is on 'original' documentation.
The next important thing for me is to set myself a practical goal that seems achievable in a relatively short amount of time (preferably something I had already done before in a different context). For instance for a new programming language that could be "I'm going to write a Tetris or Pacman clone", so that you are forced to tackle actual real-world problems instead of just following the documentation examples.
Just passively reading a book or watching a video tutorial never works for me. I need to tinker and experiment with my own hands and refer to the documentation for guidance only when I'm stuck.
The next important thing for me is to set myself a practical goal that seems achievable in a relatively short amount of time (preferably something I had already done before in a different context). For instance for a new programming language that could be "I'm going to write a Tetris or Pacman clone", so that you are forced to tackle actual real-world problems instead of just following the documentation examples.
Just passively reading a book or watching a video tutorial never works for me. I need to tinker and experiment with my own hands and refer to the documentation for guidance only when I'm stuck.
Build and break things (avoid passive content), and then study the basics.
I started coding when I was 8 (hitting 46 next month). I did go to university and studied all the CS side eventually, but I got in already knowing how to write code proficiently (never completed my degree, but I got 90% there).
When I was younger I lacked the foundational knowledge to do things efficiently. I re-discovered a few things on my own (like sorting), due to lack of resources, but it helped me learn how to tackle difficult problems. This phase was mostly one of discovery, trying to get my hands on any information I could and attempting to build things I cared about.
The trick is to code as much as you can: on a piece of paper, on your head, on the computer at last.
Build and abandon as many toy programs as you can, practice creates knowledge, and that abandoned toy always leaves something behind in your mind.
Learn to track program state on paper. It sounds stupid and arcane, but the effort helps you build a better mental model of what's going on, eventually you won't need any paper.
It's a bit like math exercises, the repetition automates knowledge. This eventually teaches you to abstract away concepts, so you can effectively break down complex problems.
Eventually, when I really started studying algorithms, algorithmic order, math, numeric methods, programming paradigms, hardware, concurrency, OS structure, distributed systems, compilers, etc. my tool box greatly expanded. But that's for later.
Anyway, just do as much as you can, videos don't help as much, you have to try and code, be frustrated, push through that frustration and get your "aha!" moment.
Coding doesn't require a computer, you need to learn a type of disciplined thought process that's not natural for most people.
That's the hard part.
I started coding when I was 8 (hitting 46 next month). I did go to university and studied all the CS side eventually, but I got in already knowing how to write code proficiently (never completed my degree, but I got 90% there).
When I was younger I lacked the foundational knowledge to do things efficiently. I re-discovered a few things on my own (like sorting), due to lack of resources, but it helped me learn how to tackle difficult problems. This phase was mostly one of discovery, trying to get my hands on any information I could and attempting to build things I cared about.
The trick is to code as much as you can: on a piece of paper, on your head, on the computer at last.
Build and abandon as many toy programs as you can, practice creates knowledge, and that abandoned toy always leaves something behind in your mind.
Learn to track program state on paper. It sounds stupid and arcane, but the effort helps you build a better mental model of what's going on, eventually you won't need any paper.
It's a bit like math exercises, the repetition automates knowledge. This eventually teaches you to abstract away concepts, so you can effectively break down complex problems.
Eventually, when I really started studying algorithms, algorithmic order, math, numeric methods, programming paradigms, hardware, concurrency, OS structure, distributed systems, compilers, etc. my tool box greatly expanded. But that's for later.
Anyway, just do as much as you can, videos don't help as much, you have to try and code, be frustrated, push through that frustration and get your "aha!" moment.
Coding doesn't require a computer, you need to learn a type of disciplined thought process that's not natural for most people.
That's the hard part.
It’s not what your education makes of you but what you make of your education.
Programming requires permanent self-education and self directed education. Learning how to learn, for life is critical.
Discipline is a function of maturity.
It’s completely possible to be a self taught developer. Others may have the motivation or Discipline for it.
I know many self taught developers in their 20s 30s and 40s. Many learned just from books without courses or YouTube videos.
Self taught programmers are not a new concept, but it might be new to some.
An advantage self-taught developer cann have is they are often more creative in problem solving approaches with experience. Folks with degrees bring a lot to the table too with their understanding of what they learn.
It is completely possible to be a self taught programmer.
Remaining a self directed learner beyond formal education or self education is more important than the initial education be it a degree or self taught.
Many cases degrees don’t transfer well into junior developer positions.
Programming requires permanent self-education and self directed education. Learning how to learn, for life is critical.
Discipline is a function of maturity.
It’s completely possible to be a self taught developer. Others may have the motivation or Discipline for it.
I know many self taught developers in their 20s 30s and 40s. Many learned just from books without courses or YouTube videos.
Self taught programmers are not a new concept, but it might be new to some.
An advantage self-taught developer cann have is they are often more creative in problem solving approaches with experience. Folks with degrees bring a lot to the table too with their understanding of what they learn.
It is completely possible to be a self taught programmer.
Remaining a self directed learner beyond formal education or self education is more important than the initial education be it a degree or self taught.
Many cases degrees don’t transfer well into junior developer positions.
[deleted]
I’m self taught. The things I found most helpful:
CS50x Exercism.org MIT algorithms lectures on YouTube Introduction to logic and sets for computer programmers book
I also got lucky enough to be involved in an OSS project early that really made me learn by doing.
I found books and online tutorials to be a double-edged sword. They’re great for showing the basics, but always have a plan to deviate and force yourself to encounter and fix errors you cause. Not doing so (“you” hereafter is past me) causes you to be reliant on the next chapter or comparing to the finished code online, which doesn’t exist when doing something yourself.
Lastly, be hungry, humble, and have thick skin. Ask a lot of questions. Read a lot. Program a lot. Program some more. Stack overflow is great, but try to make it your last stop.
CS50x Exercism.org MIT algorithms lectures on YouTube Introduction to logic and sets for computer programmers book
I also got lucky enough to be involved in an OSS project early that really made me learn by doing.
I found books and online tutorials to be a double-edged sword. They’re great for showing the basics, but always have a plan to deviate and force yourself to encounter and fix errors you cause. Not doing so (“you” hereafter is past me) causes you to be reliant on the next chapter or comparing to the finished code online, which doesn’t exist when doing something yourself.
Lastly, be hungry, humble, and have thick skin. Ask a lot of questions. Read a lot. Program a lot. Program some more. Stack overflow is great, but try to make it your last stop.
No bootcamp, No degree or indeed any college courses on software engineering, and I made it. Yes we exist and yes it's possible to succeed as self-taught. It is however way more difficult to get into industry than this way.
>> Do you think it's practically possible to learn everything without any structure, discipline?
You can learn something superficial without any structure and discipline, but structure and discipline are essential for progress in any learning: be it programming, foreign languages, etc.
There is nothing arcane about acquiring new skills. Plan at least a few steps ahead, set some medium term achievable goals. You need to have both theoretical (CS, frameworks) and practical (build something) parts in your studies.
University can give you some start, but if you want to be successful at work you need to learn how to learn, and it is a life-long activity.
You can learn something superficial without any structure and discipline, but structure and discipline are essential for progress in any learning: be it programming, foreign languages, etc.
There is nothing arcane about acquiring new skills. Plan at least a few steps ahead, set some medium term achievable goals. You need to have both theoretical (CS, frameworks) and practical (build something) parts in your studies.
University can give you some start, but if you want to be successful at work you need to learn how to learn, and it is a life-long activity.
I am a self taught developer (never visited a course nor going to university in my life), though that is over 25 years ago. But I basically went through the full career ladder: from junior dev to CTO.
So it is definitely possible, I know others like me. But it is for sure not for everyone. It needs a ton of self discipline.
Unfortunately as it is so long ago (I had no internet at the time I was learning privately) I don't have tips for specific courses, just wanted to drop: Yes you can do it, but it's a shit ton of work. And if you get a job in the country you live in is another question. For me being a european it was fairly easy.
So it is definitely possible, I know others like me. But it is for sure not for everyone. It needs a ton of self discipline.
Unfortunately as it is so long ago (I had no internet at the time I was learning privately) I don't have tips for specific courses, just wanted to drop: Yes you can do it, but it's a shit ton of work. And if you get a job in the country you live in is another question. For me being a european it was fairly easy.
I've teached myself coding in the 80s in a department store on a Vic20 by watching other kids in order to write my own video games (I played video games on an Atari 2600). Wrote some games then joined the Amstrad CPC and later Amiga Demo scenes and wrote some demo code. Then joined a startup (and got basically a MsC in CS on the side, but that didn't help). Teached myself 20+ programming languages (myself = experiment + reading books) by writing code.
Most of my learning to code happend pre-Internet.
(currently learning Go by creating a job website)
Most of my learning to code happend pre-Internet.
(currently learning Go by creating a job website)
Also employed self-taught developer here. Learned to code through launching a software-oriented business. It took about 1.5 years for me to figure out the basics of (Frontend,Backend,AI).
Hands down have a project in mind, and start building it. It really helps to have a friend that codes the same stack, so they can provide guidance as needed.
If that is hard to come by, then pay a contractor on Up work to give you advice. I never solicited for outside help, and I deeply regret the time I wasted on figuring out things the hard way. Best of luck!
Hands down have a project in mind, and start building it. It really helps to have a friend that codes the same stack, so they can provide guidance as needed.
If that is hard to come by, then pay a contractor on Up work to give you advice. I never solicited for outside help, and I deeply regret the time I wasted on figuring out things the hard way. Best of luck!
I taught myself coding when there was no internet. You had to take a bus to the big city to the university bookstore to get decent books. Today, it's trivial to learn coding.
Pick up a couple of books and learn the basics. After a few you'll get some of the hang of it. Then you need to start making a lot of mistakes. I didn't have github but that's an amazing tool. Just start submitting PRs to OSS projects. It will bring you to the next level.
Today, it's trivial to learn coding alone. You don't need anything.
Pick up a couple of books and learn the basics. After a few you'll get some of the hang of it. Then you need to start making a lot of mistakes. I didn't have github but that's an amazing tool. Just start submitting PRs to OSS projects. It will bring you to the next level.
Today, it's trivial to learn coding alone. You don't need anything.
Code to address a need, stick with it until you have a minimally crapful product that saves you time or increases your quality of what you do that is not coding.
Use it, enhance it, review it, share it, maybe throw that one away (with the other 8 or 10 versions you probably threw away to get to that one, if it is anything of significance) and do it again, but maybe choosing a better suited language or framework, now you know what you know.
Then, do the above again, but this time use lisp, or forth....
Use it, enhance it, review it, share it, maybe throw that one away (with the other 8 or 10 versions you probably threw away to get to that one, if it is anything of significance) and do it again, but maybe choosing a better suited language or framework, now you know what you know.
Then, do the above again, but this time use lisp, or forth....
The advice here is good…make stuff you care about and figure out how to make it great.
Very practically, it’s useful to pick a community which tends to run along similar tracks. I am part of the Laravel community, but there are vibrant communities in React, Rails, and others.
That said, self taught has a lot to do with personality and some people just don’t thrive under those circumstances. There is nothing wrong with paying a teacher to help guide in a more formal way, if that’s your particular bent.
Very practically, it’s useful to pick a community which tends to run along similar tracks. I am part of the Laravel community, but there are vibrant communities in React, Rails, and others.
That said, self taught has a lot to do with personality and some people just don’t thrive under those circumstances. There is nothing wrong with paying a teacher to help guide in a more formal way, if that’s your particular bent.
What is self-taught anyway? I have a BS in compsci from about 25 years ago but 99% of what I use today in my professional career/business is completely self-taught, though I think my degree program helped in sone ways (basic OOP with C++, Unix, network topology, algorithm design, etc.). Then again, I first started programming in BASIC on a Tandy when I was 10, so perhaps my early interest and obsession/passion has helped as much as anything else.
I did it in about a year, after pairing with a senior developer (not so much "pairing" as "I asked him to write code, and he did, but he was slow and I'm impatient")
My best advice: Dedicate yourself to a specific project, like a website or video game, then learn how to make that specific thing happen.
Watching lectures or reading abstract materials on programming never came close to having an impact on my abilities, compared to me actually building a thing.
My best advice: Dedicate yourself to a specific project, like a website or video game, then learn how to make that specific thing happen.
Watching lectures or reading abstract materials on programming never came close to having an impact on my abilities, compared to me actually building a thing.
Self-taught starting over 40 years ago for fun, then transitioned to FT around 28 years ago. Books, time and mainly a driving passion to write code, get it working and often even make it useful is how I got started. No college but several corporate paid courses in the interim and learned a lot from experienced co-workers over the years, some were degreed, some were self-taught and some of the degreed actually were very good.
Yeah I did it took me 7 months more or less to get an offer and the rest is history. I trying to post videos more regularly here’s a recent summary I made of the minimum to get a job: What you ACTUALLY need to learn to get a job as a programmer
https://youtu.be/iqUm_3rOp7M
As for tips: I’m currently reading the book Ultralearning and as I look back at my self-taught journey I see I basically did a bunch of the stuff the author outlines in his book.
I was going to suggest, try to read books instead of watching videos i cannot claim books are better than videos, but to learn coding you have to read a lot of code.
A good book has higher information density than a video,given that tge video needs to pause to show you text and everybody need to be able to read it.
A good book has higher information density than a video,given that tge video needs to pause to show you text and everybody need to be able to read it.
I have started poking at ZX-BASIC when I was 8 years old, then started poking at QBasic, then read a (bad) book about C and some MSDN articles about Direct3D (using a paper dictionary, as I didn't know any English). I've got first programming job when I was 19 years old.
i am a 100% self taught software engineer with a degree in philosophy and no formal training. it’s called getting a computer as a kid and being a fucking nerd. i did luck out in that my dad brought home a copy of visual basic from work for me to pirate. he was not a programmer but he knew i wanted to learn more and snuck it home (all 15 floppies or however many! i still remember the sound of installing it) so i could play with it. soon after that we got better internet and i learned about linux, and the rest was history. i only went to college because i was working in software right out of school and felt surrounded by old dudes and like i’d never meet a girlfriend this way.
I'm self taught, spent 4 months entirely on my own going through freeCodeCamp and The Odin Project. My tip - only do it if you enjoy it, there's plenty other professions out there with a better ROI on time invested.
There really is no better profession in terms of ROI.
No matter your background If you spend a year doing codeforces/leetcode you can get a job that pays $200k. Of course you also have to have some talent at that kind of thing but in almost every other field you'd need years of training and degrees to get salary
No matter your background If you spend a year doing codeforces/leetcode you can get a job that pays $200k. Of course you also have to have some talent at that kind of thing but in almost every other field you'd need years of training and degrees to get salary
Do the majority of self-taught devs in the US get that kind of money within 1 year? I honestly find it hard to believe.
Lol, what job can you teach yourself and make 200k a year?
You will be surprised. Lot of small business owners doing service based work make over 200K. Not all require professional certifications. And yes, not all developers make 200k easily.
I live in the UK, don't make nowhere near 200k nor do I know anyone who makes that amount (across all levels).
Yes, the European market is quite different from the American one, and even in the US it can vary a lot depending on region, industry, the size of the company, etc.
I'm not sure what the issue is or what kind of "tips" you're looking for. There have always been many, many self-taught developers working in industry. Bootcamps are a fairly recent phenomenon.
I joined Meta at 20 years old, without Bachelors Degree, fully self-taught. Possible 100%. Mostly learnt all the skills by doing and then reflecting through online courses and paid ad-hoc for teachers 1:1 online.
I learned to program as a teeneager before taking university courses. The university courses were more structured but were less practical (more theory).
If you can't remain patient for 40 hours to learn HTML, I recommend NOT trying to become a developer. Patience is necessary for a developer, imo.
My tips for you are to find a problem you find interesting and to create a solution for it with your choose language.
I'm self taught and have teached many others. I highly recommend exercism.org over books, videos, or classes.
TL, DR; Books are your friends. They are already structured for learning, you just have to experiment with the examples, and do Google-fu when you're stuck. Resolve to stick with the problem is a personal thing, but you need a lot if you want to be self-taught. Self-discipline was easy because I was genuinely interested about what I was learning.
I did not touch a computer until around 12 years old. And the computer broke soon afterwards. Then my parents bought a laptop for my brother who was going to college, and I experimented with it for a while (no internet access) and this is when I learned about installing Windows XP (significant). Then everything I learned about computers was playing with friends' laptops (they always wanted me to fix something), and my desktop (still no proper internet access). I've started learning about programming from books I've downloaded at a cybercafé, experimenting with things until I hit a stopping point (not understanding things enough or the examples in the books are no longer compatible). I was in high school and I did have the time to play around, but did so without any mentor, because there were none in my vicinity (either online or physical). So, it was curiosity and determination who got me through.
I've studied electronic engineering, and the CS part was nothing much. It did have two courses on programming for learning the basics of C and Java. But I was already far ahead. I did so by downloading many books (internet access was still intermittent, so I could not always google my answers). My method of learning was playing around with the examples of the first part of the book, then I have enough to tackle a real project. The books became a reference for looking how to do stuff. But I did not focus on programming only. I was learning about computer security, Linux administration, network and network programming, system programming, operating system concepts, game design, UI design, database, and a lot of other stuff. The goal was not really learning facts, but to understand. If something is too complex, I switch to another and revisit later. Still no mentor around and YouTube was not really an option because of the low speed of my internet access.
Now I know enough about the practical side of both programming and computer science that I'm moving to the theoretical part (theory of computation, algorithms and programming language theory). Still the same method, still being self-taught, but I now have better internet access, so I have a lot of help from forums and YouTube to guide me. But it's still the same thing for learning languages: follow half of the book, then look for a little project, to learn about the tooling, libraries and stuff. For tools, I just experiment with them and with the manual as the sole help. Then I read books to see what I missed.
I did not touch a computer until around 12 years old. And the computer broke soon afterwards. Then my parents bought a laptop for my brother who was going to college, and I experimented with it for a while (no internet access) and this is when I learned about installing Windows XP (significant). Then everything I learned about computers was playing with friends' laptops (they always wanted me to fix something), and my desktop (still no proper internet access). I've started learning about programming from books I've downloaded at a cybercafé, experimenting with things until I hit a stopping point (not understanding things enough or the examples in the books are no longer compatible). I was in high school and I did have the time to play around, but did so without any mentor, because there were none in my vicinity (either online or physical). So, it was curiosity and determination who got me through.
I've studied electronic engineering, and the CS part was nothing much. It did have two courses on programming for learning the basics of C and Java. But I was already far ahead. I did so by downloading many books (internet access was still intermittent, so I could not always google my answers). My method of learning was playing around with the examples of the first part of the book, then I have enough to tackle a real project. The books became a reference for looking how to do stuff. But I did not focus on programming only. I was learning about computer security, Linux administration, network and network programming, system programming, operating system concepts, game design, UI design, database, and a lot of other stuff. The goal was not really learning facts, but to understand. If something is too complex, I switch to another and revisit later. Still no mentor around and YouTube was not really an option because of the low speed of my internet access.
Now I know enough about the practical side of both programming and computer science that I'm moving to the theoretical part (theory of computation, algorithms and programming language theory). Still the same method, still being self-taught, but I now have better internet access, so I have a lot of help from forums and YouTube to guide me. But it's still the same thing for learning languages: follow half of the book, then look for a little project, to learn about the tooling, libraries and stuff. For tools, I just experiment with them and with the manual as the sole help. Then I read books to see what I missed.
You need to like it.
I did it 6 years ago and I have a really good career
I'm a mostly self-taught web dev and a high school dropout who eventually got a (completely unrelated, non-computer) degree.
I started out doing simple web projects for tiny businesses, like neighborhood yoga studios or small nonprofits. They could be simple HTML + CSS pages, or basic Wordpress setup, or like integrating a signup form for their CMS vendor. It's a lot easier to learn a particular skill if it's limited in scope to a single feature/project, and also if you're getting paid even a bit for it. These tiny jobs didn't pay great ($15-$20/hr) but motivated me to learn the skills.
The trick for me was not to learn everything in a few months, but to gradually accumulate skills over time. Once I landed my first full-time dev gig (still only paying like $20-$25/hr), suddenly I could spend 2080 hours a year (estimated # of full-time working hours) learning on the job, on the employer's dime, reading Stack or whatever to fulfill a given business need.
Ten years later I'm still doing that, getting paid more these days and having much more experience and know-how, but still just generally learning on my own. Approximately 10-15% of my time is actually writing lines of code; the overwhelming majority of it is reading and researching and learning new skills all the time. In that sense every dev is probably self-taught to some degree.
My education was completely irrelevant to coding, but it did help me choose what industry (solar & renewables) I wanted to code for. I'm sharing that because sometimes companies don't just choose you for pure coding ability, but also your natural interest in whatever field they happen to be working in. "Cultural fit" is a part of any hiring process, whether they admit it or not, unless you're just a temp/contractor doing a specific thing. In my experience, people are way more willing to hire people they like, even if they're not the most qualified, than someone who's highly competent but not as relatable.
TLDR don't try to jam it all in into a few short weeks. Nobody can learn well like that, whether it's new language or anything else. Tackle a little digestable bit at a time, with an end goal in mind ("I'm going to build this small project, or this one screen, or this tiny feature", not "I'm going to become an expert dev in 9 months").
Spend time reading other people's code and questions on Stackoverflow. Ask your own. A lot. Pick things that are fun for you, whether for the technical challenge or because they relate to some hobby of yours. Don't just code in a vacuum, code for a purpose that you care about or enjoy. Make real projects, even if they're tiny.
I started out doing simple web projects for tiny businesses, like neighborhood yoga studios or small nonprofits. They could be simple HTML + CSS pages, or basic Wordpress setup, or like integrating a signup form for their CMS vendor. It's a lot easier to learn a particular skill if it's limited in scope to a single feature/project, and also if you're getting paid even a bit for it. These tiny jobs didn't pay great ($15-$20/hr) but motivated me to learn the skills.
The trick for me was not to learn everything in a few months, but to gradually accumulate skills over time. Once I landed my first full-time dev gig (still only paying like $20-$25/hr), suddenly I could spend 2080 hours a year (estimated # of full-time working hours) learning on the job, on the employer's dime, reading Stack or whatever to fulfill a given business need.
Ten years later I'm still doing that, getting paid more these days and having much more experience and know-how, but still just generally learning on my own. Approximately 10-15% of my time is actually writing lines of code; the overwhelming majority of it is reading and researching and learning new skills all the time. In that sense every dev is probably self-taught to some degree.
My education was completely irrelevant to coding, but it did help me choose what industry (solar & renewables) I wanted to code for. I'm sharing that because sometimes companies don't just choose you for pure coding ability, but also your natural interest in whatever field they happen to be working in. "Cultural fit" is a part of any hiring process, whether they admit it or not, unless you're just a temp/contractor doing a specific thing. In my experience, people are way more willing to hire people they like, even if they're not the most qualified, than someone who's highly competent but not as relatable.
TLDR don't try to jam it all in into a few short weeks. Nobody can learn well like that, whether it's new language or anything else. Tackle a little digestable bit at a time, with an end goal in mind ("I'm going to build this small project, or this one screen, or this tiny feature", not "I'm going to become an expert dev in 9 months").
Spend time reading other people's code and questions on Stackoverflow. Ask your own. A lot. Pick things that are fun for you, whether for the technical challenge or because they relate to some hobby of yours. Don't just code in a vacuum, code for a purpose that you care about or enjoy. Make real projects, even if they're tiny.
And selecting good courses was another confusion. A course in html, css would be 40 hr long (with project). That'd take 40 days to complete. Can anyone remain patient for 40 days to learn html, css on their own w/o any structure and guidance? I could not.
Please tell me your tips for being a self taught developer.
I do have a degree in computer science but degree in CS vs programming is different. It needs to be learnt again.
Share your working tips to become a self taught developer. Or tell if that's practically possible for the average netizen these days.