I started programming when I was 10 or 11 and continued on to get a CS degree. One thing I did notice was that a lot of people in some of my classes seemed to have just woken up one day and decided they wanted to get a degree in computer science. And all throughout my years in school, those are the people who never ventured out of the curriculum (which was java based) to explore and learn other things. Which just seems to set you up for a life in boring corporate java desktop app development (unless you like that kind of development).<p>An example is my upper level elective class on database systems and design. For the final project of the class you were to take everything you've learned about relational databases and design your own schema, get all of the data properly normalized, and make an app that uses it. Other than that, the sky was the limit. You could use whatever programming language, framework, and database that you wanted, and the app could literally do anything. There was nothing limiting you to building a desktop Java app coupled with MySQL, yet 95%+ of the class did just that. I ventured off and used Postgres + Node.js and made a single page web app for my project, using skills I learned outside of school, on my own time, learning these things (I longed for a friend that knew what a promise was or that bluebird wasn't about a damn live animal).<p>Now to get to my point. I'm not going to say that self taught developers are strictly better, but I feel like they are the other 5% like myself that see what we do as more than just a class, grade, job, or paycheck. They are the ones that spend the time to learn new emerging things in the software development realm and do it on their own regard. I would much rather work with someone who is not an uncustomized, straight from the java CS degree factory college/university. Someone that ventures outside of the path they are guided on in their career and skill sets and takes the time to learn on their own, and learn the things they want to learn just because.<p>I'm lucky enough to have my first job be somewhere where I get to dive right into Node.js, Angular, etc. which is what I want to do at this time. Maybe the other 95% feel this way about their first jobs which probably are making internal business Java applications, but I really can't believe that.
Two out of three developers <i>who answered a survey on a self-teaching site</i> are self-taught. I see this is yet another article assuming the SO survey is representative of developers in general. It is not. It is representative of people who use Stack Overflow heavily enough to see and click on a survey link.<p>Clearly there's a lot of interest in finding out what is true of developers in general: What languages do we prefer? What's our educational background? What are our demographics? It would be great to have a survey that would answer such questions. This one doesn't.
I have a CS degree and still consider myself self taught. I started programming as a kid, and learned mostly from books and coding. I only got my degree because I thought it'd be necessary for getting a job.
I remember sometime in the early 90s I was working at my first really huge contract -- hundreds of programmers.<p>One day after lunch I get off the elevator and take a look around the huge room. I could probably see 100 folks or so.<p>There were a dozen different nationalities, people of all ages and genders. There were extremely smart guys who didn't have a degree. There were extremely smart guys who had PhDs in things like particle physics. Here I was, a self-taught guy, leading a team of 30. I had 3 PhDs working for me. I knew more than one person with double degrees in a foreign country who came here for a better life.<p>And it didn't matter. All that mattered was whether you got along with people, what kind of attitude you had, and whether or not you could push through and solve problems for folks.<p>I think this was the moment that I decided that I love this industry.
Some interesting take-aways.<p>Most developers here are self-taught?<p>Nope, we're all self taught. Though in this case you are faced with a survey with an option of self taught next to others which include school.<p>Most developers aren't looking?<p>This may be the point which the government doesn't understand about tech jobs and immigration. I don't know what it's like to be looking for a job in the U.S. these days but I imagine most people who are decent at programming aren't looking. If you want a bunch of coders you need to get them fresh out of university or start looking abroad. The thousands of resumes going out to development job openings from the unemployed must be from crazy people who can't code.<p>People finding jobs from others they know?<p>This sort of goes along with developers not looking. If nobody is looking, then how do you find people to work for you? Get your current employees to hit their Rolodex. Nevermind all that stuff about degree requirements, etc. In my experience, the requirements hit the listing and then you never hear about them. I imagine that's because the listing attracts the crazies and then you get the gig when you sound like you halfway know what you're talking about.
I absolutely agree with the general sentiment in this thread that we're all self-taught. I've had quite a few friends ask me to help them become programmers, and my first response is that (to paraphrase) "it's not just a job to learn and then work towards retirement. It's a constant learning experience where you have to wake up every day and realize you're ignorant, slow, and unimaginative compared to your peers and if that's not the case, then you're probably going to fall into obscurity. If you're ok with that, then let's get started."<p>One avenue I haven't seen yet approached here is that schooling was far behind the times at least through the mid-90s. I was set to graduate from a highly regarded prep school in 1996, and in the "advanced computer class", we were learning Pascal. My queries about the internet weren't answered well enough to keep me interested in the conversation.<p>By then I'd built a couple silly websites for myself, met hundreds of people from around the world, and had my own little secret educational source - a step up from my peers in school, which I needed because they were all Definitely smarter than me. I was hooked and had zero interest in plain old desktop applications, which was the end-game to what was being taught in every school I looked at (from my 17-year-old perspective).<p>A book on Perl understood what I was after. It wasn't even necessarily a very good book on Perl. It had an open source web-store on a CD in the cover and it told me step-by-step how to find a web host and then set up the web-store on a server. I set up a web store for my mom's retail business, which then stayed afloat for a little while longer (she now sells online full-time).<p>I proceeded to drop out of college and haven't stopped learning since.
Note that this doesn't mean completely self-taught!<p>Most (good) developers are definitely at least partially self-taught, but those who are employed in the industry also tend to possess, not necessarily a CS degree but at least on in a related field.
I was self-taught as well. Back in '82 I was an in-house illustrator at a children's book publisher. The company (now defunct) brought in Apple IIs in order to do some house-branded educational software. I fell in love with the little machines immediately, even though I really had no exposure to any computers in high school or college (art school). The real software guys that were hired taught me 6502 assembly and off I went. I got my first job as a programmer in '85 doing Mac assembly (68000) programming. So much fun.<p>That said, I have a huge amount of respect for CS grads. I have seen it. My background in algorithms is totally non-existent, besides what I've been able to pick up on my own. I've been at a disadvantage MANY times due my lack of formal CS/Math (my "formal" math edu stopped at plane geometry in HS!). Thankfully, I've always had good friends to help me through these issues, but it would have been a lot easier for me if I had had real training. Google is a huge help now that we no longer need programming manuals, as such.<p>I have always gravitated towards the visual, GUI aspect of software development, which is probably not a surprise given my art school background. I really think that companies should keep open minds regarding education. It really takes all kinds of people to do what we do, especially at big, diverse companies. Being visually oriented and a capable programmer is a unique kind of background that can be used to great effect. Not all cookies are the same shape.
If you make use of your university time correctly, then the primary value of virtually <i>any</i> degree is that it teaches you how to self-teach to an extent you could not reach if you just started self-teaching on your own.<p>Aside from occasional prodigies, the folks who are best at teaching themselves new things are folks who proved they could do it through degree programs.<p>Don't get me wrong, though, a lot of people do not actually make good use of their university time, and they get through to graduation without learning much about self-teaching. I'll never understand why they would want to waste so much money for that.<p>If I had my choice when recruiting, I'd select people in this order:<p>1. Someone whose degree and job experience clearly shows they are thoughtful and can self-teach.<p>2. Someone who acquired abilities by self-teaching even without a degree and/or prior experience.<p>3. Someone who has a degree and/or experience, but who clearly doesn't have much skill to self-teach.<p>4. Someone who does not have a degree, experience, or self-teaching ability.<p>Really, I'd prefer to <i>never</i> hire someone from groups 3 or 4. But sometimes it can be hard to detect fakers from group 3.<p>I think a lot of people share this opinion, which is somewhat tragic since very few hiring processes make even the faintest attempt to determine if a candidate is good at learning new things or self-teaching. Instead, just as with the tired old thread about HackerRank from yesterday, we spend all our time quizzing people on rote memorization of standard examples, which is something that the group 3 people are very good at faking their way through.
This contrasts strongly with "Dropouts need not apply": <a href="https://news.ycombinator.com/item?id=11393671" rel="nofollow">https://news.ycombinator.com/item?id=11393671</a><p>blogs.wsj.com/economics/2016/03/30/dropouts-need-not-apply-silicon-valley-asks-mostly-for-developers-with-degrees/
CS teaches a lot of theory, but not as much practical. Let's face it, 90% of programming is CRUD and the hardest part of such applications (managing all the state) isn't something that can really be taught in 2 years worth of CS classes (the other 2 years being used on non-CS-specific stuff). Employers don't want to pay to teach new programmers (even CS grads who couldn't get an internship), but generally expect a couple years worth of experience before they'll even consider someone for an "entry-level" dev position.<p>Programming is a job that requires constant learning. If a programmer has what it takes to do that, then it's not too surprising that the programmer can learn the basics on their own. A lot of devs like myself started learning to program around 10 or so. When college enters the picture, these devs are bored for most of the classes (except perhaps things like algorithms or compiler classes).<p>If a would-be programmer had the foresight to look into the programming, then they'd probably note that there's more profit in skipping the degree and putting that 50K on the mortgage instead. CS has more free teaching material online than any other white collar job I know of. A programmer can get the exact same education quite easily if desired (you can't really say the same about other STEM fields except perhaps math).
I had one class in high school and that was 1973. Other than that I was self taught and still coding today (iOS). A number of friends in college got the (new at the time) CS degrees and all but one eventually were unemployable as they had learned nothing beyond the degree content (mainframes at the time). As long as you are into keeping up to date, after a while the degree no longer matters.
I'm self taught as far as web development and programming skills are concerned. But to some degree, it feels like that was really the only option over here in the UK.<p>Okay, things have apparently improved significantly in the last few years, and schools are seemingly teaching a few more things actually considered programming now, but back when I was learning HTML and CSS and Javascript and all that stuff in the early 00s, the standard of teaching in the IT classes at school and sixth form was absolutely dreadful, and it likely didn't get much better at university. GCSE classes for IT were literally 'how to use Microsoft Office was dummies' and A level course were basically devoid of programming tasks.<p>As a result you basically had to teach yourself, since there's no way in hell your school education would teach useful skills for any sort of development and you'd likely struggle significantly to go from there to a degree level.
Even within CS education programs, this has a profound impact.<p>You can't design a useful introductory computer science course that works well for everybody. A subset of your class has been dabbling with code since childhood, while another subset needs to start from the beginning.<p>Other degree programs don't seem to suffer nearly this extreme level of experience gap within their incoming students. What fraction of incoming mechanical engineering students have had the chance to build a working motor and then take it through a dozen revisions until it works the way they want? It has to be much less than the comparable fraction of CS students.<p>I think this is a big reason for the famous bimodal distribution of outcomes experienced by most introductory CS classes.
This is from the SO survey and I think it's a bit misleading. Only 13% of respondents say they are <i>only</i> self-taught as opposed to combining autodidacticism with some other method of learning.
Does self taught simply mean "doesn't have a CS degree?" I don't have a CS degree but I don't consider myself self taught because I didn't learn in a vacuum. I would say that 75% or more of what I know, I learned from great colleagues.
Even if you started out from school, you are going to need to be self-taught after a year anyway. What you learn in school is going to be obsolete quickly enough and most workplaces are going to assume that you will magically be up to day at all time.
The weird thing is that I went to University for a computer science degree and took 2-3 programming courses where I used C and C++ but 95% or more of what I know I learned outside of University.<p>So does that make me self taught or not? If so, I wonder if that should be 4 out of 5 developers being self taught.