I simply do not understand this anti-college anti-credentialling sentiment. I am featured in the latest Hacker Monthly ( print version of HN). So they asked me for a bio. I wrote something about how I learnt everything in college...am not a hacker...and that you should go to grad school if you want to get better at CS. So they edited out all of the pro-college stuff and just said this guy is data scientist.
You don't figure out Dirichlet allocation and principal components and matrix regularization hacking away in your garage. This stuff isn't going to occur in your mind out of the blue. Its fairly complicated and even those of us who were systematically taught these things at school take years to internalise it. Don't downplay education. You are missing out on a treasure trove of knowledge humanity has collated over centuries, just to hack away and reinvent the wheel by yourself...well, good luck with that.
Speaking only for myself, it comes from a combination of selection bias and general mistreatment at the hands of others.
When you see someone who has three degrees in various flavors of computer science (BS, MS, PhD) who doesn't know about what happens when you use "==" with two floats, it builds.
When your boss tells you that he won't pay you any more because you don't have a degree, it builds. When you find out he's paying the three network engineers 3x what you get and they don't even really understand TCP/IP (so they wind up coming to you for everything), it builds.
When you see someone who is hired as a sysadmin because they are clearly such a great computer scientist and can do anything, and then who can't manage the simplest of Unix maintenance requests, it builds.
Any time someone tries to use their degree as a club instead of a wall covering, it builds.
That's just me. I can't say why other people feel that way.
For the record, I only got my degree two years ago this month. I mostly did it because I really needed to "walk the stage" at last. Everything else was secondary. Now that I have it, does it make me any better than others? No way. If anything, it puts me behind the 8-ball having to pay off these stupid loans for the rest of my life.
> When your boss tells you that he won't pay you any more because you don't have a degree, it builds.
It's just a convenient excuse. If it wasn't a degree it'd be something else. The boss was negotiating, so negotiation skills are what's needed in this situation, rather than a degree.
You're quite right. I was too young and inexperienced to know it at the time. It took several years to realize just how much they were taking advantage of me.
Still, he said it, and it incremented that internal counter of "reasons to resent", even if it was unfounded.
It's best to ignore any objections and focus on getting paid a market rate (what other companies would pay). So something like "I'm worth $x". I find that the other side quickly stops raising objections and shifts to compromising on a $ figure. Still, jumping ship might be easier than getting a raise that's well beyond the rate of inflation.
wry smile. Nothing wrong with what you've said. But come to think of it, you've endorsed rachel's POV regarding the building up of resentment with this answer. If jumping ship is the kind of disruption one has to make for what amounts to "convenient excuses" (and the manager goes on to pay 3x more to "worthless" network engineers -- read her reply above), then I say, let the resentments boil over!
I meant that jumping ship might be easier at any company. Businesses put rigid limits on raises. If you want to make a market rate it's best to get it when hired.
I'm of two minds of this. 1) I'm very much NOT anti-college/anti-credentialing. 2) I don't see your average business application software developer having any need for a degree in CS.
I believe the anti-college/anti-credentialing stance is primarily how people are sold on degrees. People are told they will get better jobs and make more money if they get one. However, no one really takes the time to tell them that just getting your degree does not qualify you to immediately go get a job doing exactly what you want. Essentially, people have been oversold on what the degree actually gives them.
My belief is that a vast majority of the technology related jobs are the modern day equivalent of 'blue collar' work, more akin to tradesmen, such as electricians. If you read up the requirements for an electrician in the U.S. (a brief read of http://en.wikipedia.org/wiki/Electrician#United_States is good enough), it follows the same general trend we see with software development experience, even if the lines aren't as clearly drawn.
One caveat, I don't have a degree. I'm pretty close if I were to want to go back and finish it, but I didn't drop out by choice. I'm of the firm belief that it is possible, but significantly more difficult, to gain the same knowledge outside of a college or university, it's just harder to quantify the knowledge you have. I would also suggest everyone go to college and get an undergraduate degree in something that interests them, but focusing on core classes and general requirements, not their particular interest. Universities are great for two things, imparting a general base of knowledge and specialized knowledge. However, undergraduate degrees have shifted to focus on specialized knowledge at the expense of general knowledge.
One last note in my long-winded comment, I really appreciate how you state 'you should go to grad school if you want to get better at CS' rather than the usual defense of schools saying that it's absolutely needed.
> Essentially, people have been oversold on what the degree actually gives them.
The degree certificate itself, perhaps. But I think people also miss what can come along while getting the degree. Networking with senior faculty members. Participating in undergraduate research. Independent classes with those faculty members. Networking with peers of similar interests.
It's what the student makes it. As such, you're quite right that just "getting a degree" doesn't make you qualified for anything aside from being a degree holder. I think it's important to keep this in mind when discussing undergraduate degrees.
> ... vast majority of the technology related jobs are the modern day equivalent of 'blue collar' work ...
That's certainly how most of tech-workers are treated. However - should they? Even for non-degree bearers (or those like me transitioned from other fields), it's a highly creative non-mechanical work. The notion of treating tech workers as blue-collar ones is I think stemming from the black-box sophisticated nature of work (and perhaps introversion of many in the business) which the industry bike-shed into previously known moulds.
It didn't sound like "anti-college anti-credentialling" at all. All the OP was trying to say was that the traditional method of teaching ie. "all theory" didn't work for him, while a mixed hands-on/practical/theoretical approach did.
Your comment, while true, is fairly irrelevant in context of this article.
I'm the OP. I meant that the experience that you have matters, the degree doesn't.
Pursuing a degree gives you valuable experience - it would be a disaster if it didn't. There are other ways to get experience as well and some of those are better suited for certain individuals like myself. Our industry, when it works well, is meritocratic. If you are great at what you do the way you collected that experience is irrelevant.
I couldn't tell you who at Shopify has CS degrees and who doesn't. It simply never comes up. What comes up a lot is how good and how helpful people are and there seems to be little correlation with the degree.
The caveat to this is that having a CS degree does not guarantee that valuable experience was gained. There were people who stood next to me when I received my CS degree that were unable to craft basic HTML.
On the other hand, I enjoyed my entire time in college, and I feel that I received a great deal of valuable experience, but I also did a great deal of coding outside of school. I think in my case I would have been fine without getting a degree, but it helped to hone some of the areas that I was not very strong in.
We had a similar experience at my last company I worked for - except even worse. On average, applicants for the Data Science team that held degrees in CS/CIS/CE were on average FAR WORSE than ones who held degrees in other disciplines or simply did not have an undergraduate degree.
It got to the point where we heavily weighted applicants who studied Physics/Mathematics/Economics over the CS ones.
As my co-worker said: If someone in our city has a CS degree and needs a job, he probably really sucks at software development.
The real competitive advantage was hiring people with very good math/quant skills and teaching them software development concepts through Coursera and pair programming. We saved a lot on salary and we got very good developers.
I think that it's more useful to look at the whole paragraph that that quote comes from:
"Not that degrees matter anymore. They do not. Experience does. That is one of the things my apprenticeship and the dual education system in general taught me: experiencing and learning things quickly is the ultimate life skill. If you can do that, you can conjure up impossible situations for yourself over and over again and succeed."
This is only my opinion, but when I look at the OP's statement in that context, I think that he's arguing that a credential isn't as important as the ability to trust that you learn your way through hard problems as they come up. In that regard, I completely agree with him. I think we all know some people with great educations who, when faced with a seemingly insurmountable problem, will spend days finding literature to support the conclusion that the problem can't be solved. And conversely, we also know people with little education who look at insurmountable problems as fun projects. Personally, I suspect that this difference comes down to attitude and experience. On one hand, it takes a really great attitude to consistently stare down difficult problems. But on the other hand, I think that with experience comes confidence and solving really hard problems takes as much confidence as diligence.
That is, of course, all my opinion and there's a high probability that I'm wrong....
I'm definitely not one that thinks credentials / college matter for most software developers (or frankly, people in general) but setting that aside and looking at what options exist:
I think a big part of the problem is the irrationality of getting a degree in 'Computer Science' to be a programmer (aka 'Software Engineer'). My degree is in Electrical Engineering with a Computer Engineering focus and I would never have gone for an Electrical Physics degree. I wanted to build things, not be a research scientist.
So, why is the de facto degree for programmers Computer Science? How much do you actually learn about building software in a CS program? My experience indicates, not much. You learn a lot of computational science, great, most products have 1 or 2 difficult algorithms at their core, but they often represent an amazingly small % of overall development time, where is the training for everything else that needs to be done?
The biggest problem is that there seem to be no good Software Engineering programs. Software Engineering degrees do exist but they seem to be woefully outdated and only address a small subset of those people whom wish to 'build things' with software.
I agree. I feel as though my time spent in computer science courses in undergrad and, even more so, graduate school, helped me be a better programmer than I could have hoped than if I had spent those years just programming instead. It taught me to think differently.
Of course, this doesn't apply to everyone. A huge number of people skip computer science degrees and are still highly successful.
But one swallow does not a summer make, which seems to be the approach of many of these articles: Hey, look at me, I didn't go to college and I'm successful!
This seems to be an argument that is very difficult for either side to argue, because I don't see a way you could really look at a statistical analysis of the careers of CS grads versus non grads and make some kind of conclusion.
I think where the college and credentials bit is failing--for me at least--is the lack of differentiation between "learning to do" and "learning to think." I went to a liberal arts college and spent most of my four years learning to think. Liberal Arts are good for that kind of thing, and depending on your background (I'm not the product of highly educated parents) it can be extremely useful and a completely justified reason for going to college. One can learn to think elsewhere, but college is still a great place to do it.
As recently as ten years ago, it was impossible to learn to do outside of a formal training program, but today it's completely possible to learn to do almost anything via Youtube, iTunes, and the rest of the internet. And the problem is that today's university system--except in fairly rare cases--actually hinders learning to do. The world outside moves too fast for the educational bureaucracy to keep up. Formal education is valuable, but maybe more for learning to think than learning to do, at least in modern times.
>I simply do not understand this anti-college anti-credentialling sentiment
Speaking as an anti-college, anti-credentialist person, well, a lot of it, for me? is that I didn't go to college.
I mean, everyone likes to pretend to be altruistic, but in the end? we all see the world from our own perspective.
And really? most people seem to think that you go to school, you get a cs degree and you will be pretty good. And that's simply not true. I've hired people with CS degrees only to have to fire them, because it turns out, they didn't actually learn anything.
I mean, I've also worked with people who really did learn incredible things in school. Things, as you said, that I certainly have been unable to teach myself.
I also think a lot of this anti-college stuff is people who went in to debt for life, having been told they'd get useful job training and, you know "find yourself" (you know, the class thing. No matter how much money I earn? I'll never be middle class; in the eyes of most people, i'll never be a 'professional' a 'real person' unless I go get a degree. I'm the guy who fixes the pipes. Which, eh, I am mostly okay with at this point.) - but anyhow, yeah, these kids graduate and find that the market value of their degree is, well, pretty close to zero. (and yes, a lot of these kids got degrees in philosophy or fine arts... And yes, we laugh at them for expecting to turn those degrees into money. But they were 17, goddammit, when they made that decision. What kind of asshole expects a 17 year old to make good decisions, especially when they receive bad advice from every trusted figure they talk with? Then we go and say "unlike every other bad loan you will take in your life, the person giving you the loan takes no responsibility. You have to pay this one off. No bankruptcy.")
This idea that "you can do anything you set your mind to" also permeates education, and it's incredibly destructive; it's how we end up with those people with CS degrees who can't outcode me.
You don't learn to code in college, or at least not in class. Good coders almost universally learn outside the classroom. This is true for people who go to college and those that forgo it.
So if you don't go to college to learn to code, why go at all?
You go to learn the fundamentals of computer science and math which underlie everything that we do.
It's certainly possible to obtain this knowledge on your own with serious self-study. But it's a hard route (albeit one getting easier thanks to Coursera et al.) and given two candidates with equal coding ability, the one who went to college is far more likely to have a strong grip on theory.
Is theory actually useful? I would claim that it is, even for programmers doing CRUD apps and the like. Knowing the fundamental abstractions of computer science and the ways people have applied them in the past saves an enormous amount of needless reinvention. As a concrete example, parsing is a very well-studied problem in academia. But somebody without that background trying to write a parser will struggle far more than another familiar with CFGs or PEGs.
Being able to program is just scratching the surface of computer science. It's necessary but not sufficient for being a great programmer.
>So if you don't go to college to learn to code, why go at all? You go to learn the fundamentals of computer science and math which underlie everything that we do.
This is why my company hired Math/Physics graduates instead of CS graduates - they had far better command of advanced mathematics and came much cheaper than CS graduates (who were generally worse applicants anyway).
>It's certainly possible to obtain this knowledge on your own with serious self-study. But it's a hard route (albeit one getting easier thanks to Coursera et al.)
Now, what little math and theory I have learned, well, really, what anything I've learned... I've found that it's dramatically easier to learn from books than from a lecture. First, people talking? really, really slow. I ain't no speed-reader, but I can manage 400 words a minute, give or take, without skimming; of course, I can go much faster when I'm just skimming over the stuff I already know.
My usual strategy is to buy several books at the same level on the same subject; Preferably by very different authors. (I want at least one of the books to be a classic by the person who came up with the idea.) the idea being that each one is going to explain it in a slightly different way, and while I'm only going to retain a small portion of each book, well, books read fast, they don't cost much, and if I take away 10% of each book? I'm doing pretty okay.
(I mean, that said, my math and my theory is still pretty weak, compared to many of my educated peers who work at the same payscale, So I'm not saying my strategy is good or anything... it's just that I've never gotten much at all out of lectures. Payscale is also interesting... it seems to scale more with negotiation aggression than anything else.)
>Is theory actually useful? I would claim that it is, even for programmers doing CRUD apps and the like. Knowing the fundamental abstractions of computer science and the ways people have applied them in the past saves an enormous amount of needless reinvention. As a concrete example, parsing is a very well-studied problem in academia. But somebody without that background trying to write a parser will struggle far more than another familiar with CFGs or PEGs.
Why the fuck would you write your own parser for a CRUD app?
Seriously, that's whats wrong with the world.
I'm a SysAdmin. The way I see the industry? you hire a bunch of php monkeys to slap something together. customers don't like it. You pivot, come up with some other business idea, hire php monkeys to slap something together (usually using the same monkeys and the same code) you repeat until the market likes the output.
By this time? It's a giant hairball. It's disgusting. But you are getting users, and it's making money, so you've gotta scale.
Now, you could pay a bunch of 'real programmers' to write you something good, but that can take months or years even with competent management.
So what do you do? you hire someone like me. I show up and put a caching http proxy here, I put some indexes on the database server (and put it on a beefy server, and maybe even setup a read-only replica for the database) etc, etc.... i slap on duct tape until you get around to having a competent person re-write the whole mess. That's the "computer janitor" role.
So yeah. that's why I hate CRUD programmers trying to re-invent the fucking wheel. There are plenty of parsers out there. Use them.
This, this is why sysadmins hate NoSQL. seriously, in a few days I can make a crashy access db 1000x faster and more stable fairly easily by ODBCing the data out to a reasonable database. relational databases are incredibly easy to tune and improve, and I don't need to understand your giant PHP hairball that is full of global variables. USE A RDBMS. then you can do your job, and then if the thing takes off and you need to scale, I can come in and do mine.
That's sort of my point. People without a computer science education often lack the awareness of the gaps in their knowledge. So they don't set out to write a "parser," because they don't know that word.
They're faced with the problem of parsing some custom text format. Maybe they'll try some terrible regex hack (see: http://stackoverflow.com/a/1732454). Maybe they'll stumble onto recursive descent parsing. But if you've taken a class on compilers (or automata theory) you'll know when regular expressions are not up to a parsing task, and you'll know about parser generators and how to write a grammar for one.
How can these CRUD programmers avoid re-inventing the wheel if they've never been exposed to it?
"relational databases are incredibly easy to tune and improve"... only as long as they are on a single beefy server. When it is not enough, and very often it is not enough, things start to become very hairy up to the point where you have to rewrite your application using a proper NoSQL solution and with some people who understand databases a little better than "See ma, I put SQL here and it automagically evaluates..."
servers up to 512GiB ram, these days, are pretty cheap. that is /big/
The thing is? last I looked, none of the NoSQL databases handle multi-master replication, either. In all cases, if a server goes away, you have issues. With SQL, you promote your most up to date read-only replica to read-write master, re-point the other slaves and run. With modern SQL databases, you can even control how out of sync you allow your read-only replicas to be (to the point of making it so the transaction isn't complete until it's been written not only to the master, but also to the slave... of course, that costs time. It's a tradeoff you can tune, depending on how much your data matters.)
Now, if you just need more write-performance than a single beefy server with 512G ram and a bunch of SSDs can bring (which is a lot) then you shard. At that point, you are pretty much where most NoSQL systems are, except that most sql engines come with a bunch of neat tools for finding slow queries (and for figuring out how to make those queries fast without changing the php) that the nosql stuff seems to lack.
Author is simply trying to say that going to college was not for him since he is a kinesthetic learner and prefers learn by doing.
I believe he is advocating a dual system of education with a combination of college or apprenticeship since there are different types of learners out there. College is the 'only way out' for many people, otherwise you would be considered a failure and cannot find a job.
A dual system, if you wanted to just turn out programmers who know the basics of scripting, how to use a language, and build applications might work.
If the "dual" system were to include architecture, algorithms, discrete math, and deeper subjects that a typical CS curriculum usually covers, what's the point of an apprenticeship system if it is replicating academia?
I can see a need for a trades like class, but here in the US we already have an assortment of community colleges, certificate programs and the like that replicate that model.
Exactly. I feel like every topic that enters HN become a replication of some of the old HN discussions. The post is much more about creating an institution of educating people that is alternative to high school/college than about diminish the value of college. The author actually explicitly says that this is common in Germany.
And saying that personal experiences in college was important to oneself, so everybody should try is the same that saying that my personal exeperiences in playing competitive soccer were important to me, so everybody should try.
Unless there's money to burn a career should be treated like a business. For many people getting a CS degree would be a big net loss. One can certainly master Dirichlet allocation from the comfort of home, no fees required.
Is it intrinsic to this treasure trove that the knowledge it contains must be transmitted for pay, with exercises to be completed on a deadline, and with little choice on the learner's part as to what is learned?
Have you ever seriously considered PhD programs? No one that I've ever heard of has ever had to pay tuition to attend college for their PhD (myself included). It is usually a "work exchange for education"; a research or teaching assistantship while taking classes and writing a dissertation.
And to say that the learner does not get to decide what they will research for their dissertation is just flat-out wrong. It is assumed that the student will pick what to write their dissertation on - they need to study it in-depth for 2-4 years and picking something that they do not find interesting will most likely lead to dissatisfaction (but it is still a choice).
Granted, a PhD program requires a prerequisite BS degree or equivalent which is generally not paid for and follows a typical regime. However, not all knowledge is the same - highly specialized "brink of human understanding" type learning is paid, unstructured and definitely has no exercises to complete (since the one learning them has the most understanding of the topic).
Honestly, that sounds like paradise to me, but for some reason I wish I could fully identify and figure out how to beat, I've been unable to negotiate undergrad.
No, it mustn't be transmitted for pay. In Argentina, for example, public college is good and free.
More importantly to your question, teaching a hard curriculum to a lot of students at the same time is a hard problem, and exercises with deadlines and relatively tight syllabus are a method that has been shown, for many years, to work for a large number of people. It certainly doesn't work for everyone, it certainly isn't the best way to learn, but it's an effective tool for the problem at hand.
I wont argue that private college in the US isn't brokenly expensive for most mayors. I'm not even saying that college is a good idea for most of the population anywhere. What I am saying is that for some important fields of knowledge that it would be good to teach to some not small fraction of the population, college is a good solution; maybe the best that has been actually tested. Of course not going to college would be a great choice for a lot of people who are going there. But it is also the right choice for a large number of people.
>I wont argue that private college in the US isn't brokenly expensive for most mayors.
The University of Washington is $13,000 per year for residents, who are preferentially screened and rejected because tuition for in-state residents is too cheap.
UW costs $30,000/year for out-of-state residents who are more likely to be admitted since it's more than twice the cost.
By the way, the University of Washington is a public school. Private schools in the area start at $45,000/year.
There is literally nothing you can study in undergraduate school that would be worth that price. Not even close.
UW is overwhelmed with demand. They've set up satellite campuses in Tacoma and Bothell to handle the overflow, especially for business courses.
When I went there in 2003-2007 it was still a deal for the quality of education, and my degree was definitely worth what I paid for it (about $5,000-6,000/year) but the price has more than doubled since then.
If I had to choose a university at current prices I'd probably go to Western or WSU instead.
I think $13,000/year is absolutely reasonable at UW. However, you have to be exceedingly intelligent to get in there - which most are obviously not. They screen in-state residents because they don't get enough tuition from them, so the standards are very high if you live in WA state.
So I question whether or not the University of Washington is really a public institute in that regard.
Let's not even talk about what it costs to go to Seattle University or Gonzaga.
I'd argue that it has not been shown to be effective. We're reaping the fruits of that today: grade inflation, disinterested professors, and new graduates without the jobs that served as the carrots to get them into school in the first place.
College is expensive, and if you need to take out a loan to go there (most do) it is risky. Not only that, but credentialism (the idea that college exists in order to get credentials) coupled with the enormous expense has led to declining standards and quality at American schools. It is not unreasonable to ask why one should be paying so much and taking on such a large risk for an education that is of questionable quality, particularly in fields where vocational skills can be learned elsewhere.
In many engineering cultures, employees are perpetually required to play the role of pupil as a form of submission despite credentials, education, and experience. This is where all the downplaying of college and credentials stem from. There is almost no corporate culture which does not require new employees to play a submissive role to whoever is already there. Find one, and you'll maybe find people who value college and credentials.
The point isn't that you shouldn't learn latent dirichlet allocation, but that the best way to learn it is to come upon a problem that warrants it and then have a mentor point this fact out to you, motivating you to learn it so you can expand your capabilities.
There are plenty of engineers who love to pour over academic research of the bleeding edge who have no problems to solve with it, yet when you ask them to hack together a prototype of an idea they don't know where to start. I think there is a clear personality type that prefers to continue reading before doing, since there is an ever-present fear that just around the corner there is some kernel of knowledge that will remove the need for a massive body of work. In reality, this is almost never the case, and elbow grease and experimentation turns out to be the solution to many problems, not digging through libraries, frameworks, algorithms, and academic research.
There is large category of jobs that don't require complex math or a good understanding of algorithms, yet we treat them like they are 4 year degrees. This is bad, because it wastes a lot of time and causes a lot of pain.
What I don't understand is this anti-learning-from-books and anti-learning-from-computers sentiment. In many cases and for many people learning in nonconventional ways is much more efficient then going to school.
Most of the knowledge you will ever need you can attain for free on Internet with MOOCs.
And some of the more advanced concepts that you mentioned are not beneficial to know for majority of things you will do in day-to-day work, although I bet you can still learn a lot of it for free with online e-books.
If you want to do research on some really advanced topics then a degree is a must, but an average (high-)school education is a complete waste of time.
That knowledge didn't just appear once there was an internet; it had to come from somewhere. You're able to make geo-local picture sharing apps inside of instant messengers because someone with an advanced degree figured out how to make transistors. Then some other person with an advanced degree figured out how to make combinations of those transistors perform coherent operations to achieve complex goals. Then some other person with an advanced degree distilled the mathematical theories required to parse languages. And so on.
It's fine to say that you're getting by just fine with stuff you learned on the internet, but to call education a waste is to declare that what we have now to be sufficient and there's no point in learning anything new. That might be working for the Amish, but it doesn't work for me.
You are strawmanning. I wasn't claiming that all the knowledge that comes from people with advanced degrees is useless.
Most people don't need an advanced degree to contribute to society. Proportionally, only a small number people are needed to make transistors and develop mathematical concepts for computers compared to the amount of people using their work.
While it is necessary to have people with PhDs conducting research to have progress, hackers and doers (which base their work on the research) are also needed to exploit the results of research.
It is also possible to not have a degree and still succeed in life, and do things that you love.
Moreover, I think that nowadays it is becoming easier to get knowledge (that traditionally was only accessible in Universities) for free on Internet. I think traditional education system is extremely limiting and archaic. It permits people which excel in only certain kind of environments to conduct research.
Most people reading this site are not doing machine learning or advanced technical work. The day to day work of the vast majority of programmers does not require completion of advanced formal education (or the self taught equivalent).
Even then it is not actually that hard to learn about principal components or matrix regularization if you have some mathematical background and the desire to teach yourself...
That's not the tone I got from the article at all. Your comment seems incredibly defensive and largely blinded by your own experience, how is your view any more valid than his? You must have never encountered any of the numerous CS graduates that can't code their way out of a paper bag.
I wouldn't characterize his post as anti-college in the least. It's cheap to say that Tobi's post espouses only one viewpoint; rather, he's giving an anecdote that suggests there's more than one way to do it when it comes to a career.
You could spend years in college or you could just start trying to solve problems collaboratively that lend themselves to principal components analysis. You'll learn PCA much faster via the later approach.
I feel like confirmation bias is in play when you read about successful people who have dropped out of school, succeed, and then blogged about it. You have to keep in mind the hordes of people who have followeded a similar path only to archive not enough to blog about.
Self education may appeal to many of us here, but it applies to less than it appeals to.
> Self education may appeal to many of us here, but it applies to less than it appeals to.
That's missing the major point of the piece, IMHO. The OP isn't describing "self education", and (coming from a US perspective) is not even a typical drop out.
What's being described here is a vocational pattern of learning, where on-the-job experience is backed up with classroom instruction. That's not exactly what "drop out" or "self educated" imply in the US.
Yup. In the UK we are trying to reconstruct the 'dual system' and we have things that are called apprenticeships but not quite as well organised as the ones they have in Germany. The OP is not a drop-out. He has followed an established path!
Ah you mean the Torry plan to bring back the 11 plus and ship off poor kids to dumbed down Modern Apprenticeships so they can stack shelves at safeway.
Yes, that 'scheme' has lost me a really good student who was attending a college course off his own bat. He has been required to waste his time totally in a mickey mouse scheme that won't get him anywhere. We will try to catch him up when he is let out.
That sucks. My nephew managed to get out of it by calling his manager at Tesco "fucking spineless arse licking cunt". Worked wonders. He now fixes laptops at the local computer shop for a reasonable amount of cash.
No, I mean the real apprenticeships with companies like Siemens and GKN that you need a minimum of 5 GCSEs to get onto, and that lead to BTEC National Diploma then HND qualifications with 1 year degree conversion.
I accept your point that the word 'apprenticeship' has been made meaningless by our Present Leaders but there is some good stuff out there as well.
But that is NOT an apprentice that is a Technician (aka Associate professional) doing the a traditional day release course (ONC/HNC/BTEC) for Technicians which is how I came into IT.
Clever apprentices would only go on to do this after doing there 4/5 years.
And ok my BTEC was a some what specialized one (mech eng with Thermofluids) but we looked down on the "apprentices" form the local Garages.
Though I suspect (borrowing John Cleses line) alowing "jumped up F%^&*ing Caterers" to devalue the term that fight is lost.
"But that is NOT an apprentice that is a Technician (aka Associate professional) doing the a traditional day release course (ONC/HNC/BTEC) for Technicians which is how I came into IT."
Actually, it is. The Ordinary National Certificate was replaced with the B/TEC National Diploma half a decade before I came into teaching in 1989. You must be a mature person!
And yes, the whole program takes 4 to 5 years. With another couple of full time years for degree top up.
Those programmes do still exist but I agree entirely with your point about the shelf-stacking and mickey mouse stuff the current administration are bringing in (as their political forefathers did in the 1980s).
cough well I can still recall having to hand load the boot strap into our PDP 11's when the boot loader failed a couple of times.
And remember being dead jealous of the management school at Cranfield having 40!! color pc's donated by HP (this is pre IBM PC) - when we had 4 or 5 total.
the UK system is an extremely poor version of the German system. To implement an apprenticeship model, the state HAS to take direct control over the hiring of almost all entry level employees. otherwise the incentives and work culture is simply not in place for a large number of meaningful training opportunities to exist.
The state doesn't control hiring in the German system. If you can't find someone to sponsor you for your apprenticeship that's your problem. The state does have to regulate the conditions of work much, much more than is the case in countries like Britain though. In Germany becoming a florist requires a three year apprenticeship and you can't open a florists without someone who has done said apprenticeship. Half-arsing it and just trying it out, entry level jobs that can serve as an entree into a good career without much in the way of formal training; these happen much less in Germany than in the Anglosphere.
Er, no, we need to rebuild some kind of manufacturing sector first! Then make sure companies have their own apprenticeship schemes (proper ones not the shelf stacking ones)
the vast majority of German apprenticeships are not in traditional industrial roles or trades like plumbing. the existence of quality post-school training opportunities has little to do with the existence of a strong manufacturing sector.
Obviously - the system clearly doesn't just produce huge successes. I simply wanted to tell my story because it's sufficiently different from most people's background to be interesting, or so I was told.
A key point of the post is that in Germany it wasn't dropping out. It was joining a school of a different sort, a much better one for certain kinds of learners.
Yes, but you could say the same thing about people who went to traditional schools. How many people went through that system and succeeded--and then how many people went through that system and didn't?
I agree with you in that I don't know we have the data to argue that apprenticeships are better, but I don't think we have data to argue that they're worse either, and I can't see how having it as an option is bad at all.
> Yes, but you could say the same thing about people who went to traditional schools. How many people went through that system and succeeded--and then how many people went through that system and didn't?
I think the whole point is that, statistically speaking, many many more people go through the system and succeed than otherwise. That's why it's the system.
Yeah, but correlation isn't causation. Maybe unsuccessful people on average will be unsuccessful in school and the successful people on average will be successful in school. While school itself has no actual impact on success.
I'm not saying I believe that, but I haven't seen it ruled out yet.
More people start an undergraduate education than finish it. If you're only looking at people who got through the system, you've already filtered out a number of those who have low motivation or low ability.
More people start _anything_ than finish it. Since starting is a prerequisite for finishing, it is always the case that a maximum of 100% will finish, and likely fewer.
If your point is that more people start school than finish and somehow that weeds people out, you could also say the same thing about apprenticeships.
There is a very long sliding scale of success attributed formalized education (either through academic or vocational studies) or otherwise garnered from personal experience.
There is value in both, and the confirmation bias is apparent but it may not have been the intention of the author.
There's also a bias if you look at dropouts as a homogeneous group, because they aren't. It's just as ludicrous to predict the same outcome for someone like me, who was always way ahead and bored to death of school, and a poor kid from the city or country who couldn't read at grade level.
I doubt Tobi ever had reading comprehension problems and I bet he was passionate about his hobby leading up to his track switch.
As for me, I'm a high school drop out and everybody told me "You'll end up stacking shelves at 7-11!" because that's what dropouts do. They made the same mistake you are accusing us of making, when we talk about our own pasts. I knew several outstanding HS and college dropouts among my online friends at the time and they inspired me to stop wasting my life. I'm so glad they did.
I completely agree with you. You expressed exactly what I was thinking.
I am 15, and I am planning to drop out of school.
It is extremely frustrating trying to persuade my parents that dropping out of school doesn't mean I am giving up on life, and that I am not a failure.
I cannot function in this artificial society that exists in schools, and I learn much better by myself. Finishing school would be complete waste of my time, for a stupid piece of paper. During this day and age, it is extremely easy to attain knowledge for free without attending any institutions. Currently, I have several dozen textbooks on my kindle, and I am taking 3 classes at Coursera.
My parents are trying to compare me to all the stupid kids that usually drop out, and I cannot comprehend their close-mindedness and ignorance.
Because of their stupidity and effort to "help" me, I may even end up homeless by the end of this year.
Perhaps you need to work on persuading your parents about your intentions by describing a complete plan. Do you have a plan to get a job from the self-study through books and Coursera? Have you considered dropping out of school and getting a GED so that you still will have a piece of paper while spending more time on your personal projects? I have heard of this approach from an entrepreneur who was building a business around your age. Are you planning on applying to college after dropping out of high school? AP courses in middle/high school can be used to get college credits, saving a lot of money and time.
The "stupid piece of paper" is used by employers as another way to confirm that a person has skills they need. It's about reducing risk. Some companies might not be willing to hire someone who doesn't a piece of a paper from a respectable university. And you might want to work for these companies. There are always exceptions, but you will have to be exceptional in their eyes.
I'm not saying you shouldn't drop out. I definitely have issues with the schools and understand that time can be wasted for some students. Have a plan for how you will achieve success and understand that all decisions have trade-offs: benefits and costs. And consider how your plan might fail and how you will handle it.
> There are always exceptions, but you will have to be exceptional in their eyes.
This is spot-on. People take certain prejudices to their modelling high school dropouts. These are formed by the sheer repetition of observation. Dropping out is something Bad Students do. It's low status. Even an average student who drops out will have the story of their life coloured in terms of: 'he could have done _even_ better if he had stayed in school.'
So to get social approval for dropping out, you have to be exceptional. Such that their predictions of your future outside of mainstream education are so positive, that the 'low status drop out story' can't be made to stick to you. The balance of probabilities isn't enough to get social approval for your actions, the argument has to be overwhelming.
It's unfair, in a way, that there isn't a cultural idiom to support people who, for good reasons, don't want to learn through the high school track, but who aren't amazing individuals.
But in another sense, dropping out to learn faster is in itself to state that you are exceptional--that you have a iron-clad self-belief in your capacity for self-motivated learning. You shouldn't expect anyone to believe this about you; it's a trait that habitually we assign to people after they've been successful, not before. It's natural for people to model others as falling near the median, until they've demonstrated otherwise.
I''m less productive with fewer obligations. Most people are the same. You need to be _certain_ that you are naturally inclined towards setting useful goals and then following through. (I've wanted to write a novel for the past five years. All I have to show is a thin pile of abandoned drafts and margin-doodles.)
Soft skills matter. And removing one huge social component of your life without another to fill it has been, for me, a disaster. If you are 'neuro-typical', but still believe you will be more productive by removing 'wasted' social interaction from your life, you are wrong. If you are miserable, you can't sustain productivity. (And, not least, you might go crazy.) Even anti-social might sometimes be better than non-social.
This is HN, so I share a lot of beliefs about how lousy a state high school education can be. But culturally, we're not geared up as a society to support dropping out as a genuinely equal tract to education and employment. Be careful.
I think you're overstating the risk and need to be exceptional, actually. For the kinds of jobs we're talking about.
# of employers who asked why I didn't list any high school on my resume: 0. # of clients who asked where I went to school: 0. I may be exceptional now, but I wasn't always, and I still got good jobs.
I either put nothing about education at all on my resume, and explained that I left college because xyz, or jokingly put "The School of Hard Knocks" and that worked for me.
FWIW I have done everything from working for a local software dev co., to consulting for Pepsi, and I was employed as a consultant for Bear Stearns ("hired" by their staffing agency — it's a weird setup), with these (lack of) credentials. Never had a problem.
Priority one should be to be self-sufficient. It might be hard to get sufficient wages at that wage, and as a dropout, but this needs to happen.
If you end up in an unstructured environment, chances are you'll lose track of what you wanted to do. So - even if it's totally unrelated to what you want to do for the future - work like your life depends on it. It will give you a feeling of worth, and give you habits that will eventually make you the right man for the job that you want.
So keep in mind that there are two sides to this: the beaten path is boring and frivolous because it's easy. The unbeaten path is hard, if for no other reason than because it's uncommonly trod. If you are finding it difficult to deal with other people's expectations of you now, you should probably not expect that to change immediately.
Learning is obviously not the point in any of this, so try to evaluate your situation without taking it into account. You're being asked to tolerate some awful people and jump through stupid hoops. Probably not for the last time.
I've been in this situation, whatever you choose will probably not matter as much as you think it will. This is much more dramatic and momentous to you now than it will be in ten years. You will get over your high school experience, whatever that is.
I've also, in an unrelated matter, been homeless. Try not to have to worry about where/when/how you're going to eat/sleep/bathe next. It's not the most fun or productive thing you could be doing. I do recommend being thankful that you live somewhere where this is remotely an option: being homeless in, e.g. Alaska would tend to be fatal. If you have any, go live with your relatives for a while. Just being in a different place can make a lot of difference.
The essential problem of your situation is that you're wanting to do something that statistically leads to worse outcomes, and with justifications that you can essentially only guess at. And it's not a terribly informed guess either; you're too young to have any kind of experience to bring to bear on this choice. Your parents aren't wrong, nor are they stupid.
They're also not right. You have as much information as anyone can about what you want to do, and what you're capable of doing. You'll probably fuck up a lot, and you'll probably recover from it. So relax. Try and have a sense of perspective about it all -- or a sense of humor. That will help with the fuckups, trust me.
Lastly, it's a terrible thing to try to raise a smart kid, I think I'd rather be in your shoes than your parents'. Go easy on them.
Get a GED and apply to community college if the alternative is homelessness. Present it as a fait accompli. High school sucks ass but homelessness is worse. If you're not in the US, sorry I think you're pretty fucked unless they have something in the same line as community college.
Good luck. I'm 17 and finishing up high school now but was thinking about dropping out a year ago too. No one but me thought that was a good idea and in the end I guess I was just too undecided to really follow through, so yeah... btw I'd recommend you to read this essay, it describes the role and artificiality of school quite well, though it seems you're already familiar with it http://www.paulgraham.com/nerds.html
Anyway I wish you the best of luck in your self-learning. Here's hoping you'll be able to spend your time more productively than would have been possible otherwise!
Get the book "The Teenage Liberation Handbook." It's a bit facile, but it's all about unschooling and how kids like you (and me, at the time) can and do succeed. Dig up the statistics on unschooled/homeschooled kids going to college. My parents were assuaged by the idea that many homeschoolers get into excellent colleges (meanwhile I never had a moment's intention of going to college; I had exposure to too many older friends in allegedly high-end university programs to think it was worth my time).
Your parents just want what's best for you but because they probably haven't investigated it, they believe the hype and durm and strang about dropouts.
Since you're the one who wants to do something "weird," the burden of proof is on you. (That's the position to take whenever you want to persuade anybody of anything.)
This is well written, but I feel as though I'm missing something.
The best way to get better at being a career programmer is to be a career programmer. This is understandable! And the author's initiative at 16 years of age to identify his passions and stick with them at the exclusion of higher education is commendable.
But I've learned a whole, whole lot in college -- and yes, I completely agree with the author that the amount of time I spent tinkering around with computers is smaller than it otherwise would. Instead, I spent time joining a fraternity; taking classes comparing Milton to Bradbury; learning how to pitch a stock; volunteering with the homeless; getting blackout drunk on a Tuesday night; learning the differences between Brahman and Brahma.
Do those things make me a better programmer? No, but I absolutely think they make me a better person than had I spent the past four years as an apprentice. (And, I'd wager that they're better for my career in the long term, but that's not really relevant to this discussion.)
So, I guess, my takeaway: if you know with absolute certainty that computer programming is your sole passion in life, then college is probably not your best choice.
(I'm not saying that the author is being anti-college in this post: but I fear most of the readers might interpret his post as such.)
I did both, I first did an apprenticeship, and then some time after that went to college. I think that's a great way to do it, because I first learned the pragmatic way, and then could expand it with theory. In addition to that (I think), I had matured enough when college started, to better decide what to do, which courses to choose.
I wholeheartedly agree on all the other things you list about college; doing an apprenticeship doesn't give you any of that. I'm confident that going to college was one of the best decisions of my life, maybe the best decision, given all the contacts / friends I made, the things I exprienced, the new topics I learned about, the discussions I had, the parties I had, etc.
I wish I did things this way. In college I formed a lot of uneducated opinions (why would you ever not have a completely normalized database? That's dumb) that only thanks to my extensive coop experience did I retrospectively see the value of.
I dropped out of school (college equiv.), started parachuting from airplanes and solid objects, joined the military, dropped out of the military, ended up as a software developer.
All that matters in the end is that you like what you do. And if you don't, you can always quit. You might not always know what you want, but you'll figure it out.
Most kids don't actually read Milton or Bradbury in college when it's assigned. On the other hand, people who do want to read classics can do so while also being a software developer.
I'm all for enrichment, and I did enrich myself in college, but no more than I do on my own now that I'm in the real world.
(Edit: Also, I didn't learn how to really party until after college =)
the ability to do all those things without having to work at the same time is a real luxury. it is certainly a nice thing to do, but someone (you or the state) has to pay for it, so the costs and benefits of different types of education/training still have to be considered.
I think the confusion here is that Tobi is telling his story, not your story, and he's not telling anyone what to do. If you reread the essay and don't believe he's talking about your choices, it will make sense.
The OP was incredibly lucky to find a mentor like Jurgen. Being handed a thoroughly "proofread" review of your work is perhaps the best way to improve at almost anything. Unfortunately, creating such high quality feedback demands more time than most people are willing to spend, especially if it's above and beyond their normal duties.
I don't know, but I can think of several things to make it more workable:
---you could probably pay less. Programmers' opportunities for meaningful, understood-by-the-recipient service are few and far between. I don't think it gets any more meaningful than this. One of my favorite gigs ever was tutoring Python for Tutorspree, and watching my students progress.
---It has a higher meaningful skill ceiling. The problem with "architects" is that every programmer is an architect, or should be. The title creates the idea of "one smart architect, many stupid implementors." But the 10x phenomenon means this is the last thing you want: you want a few smart developers, not a lot of dumb ones. So why waste your talent managing labor, when the labor is useless and what you need is more talent?
In the US, I see an apprenticeship program not necessarily as an alternative to college (yet), but as a way for companies to groom junior engineers into senior engineers. If top talent is hard to find and costs a lot, it makes sense to invest in your employees to build them up. I can't see a 10x return from such a program, but just 2x would justify an investment. Like code reviews, it would reduce rework with more feedback to avoid future mistakes.
We did that at my last company; we hired brilliant out-of-work mathematicians and physicists and turned them into developers and data scientists. We paid less for labor and got way better product out of our training program.
I find that Github pull request style discussions are a good approximation of this ideal which strikes a great balance between effort required and social acceptability.
It may be worth recalling that Americans have been interested in the apprenticeship system for a very long time. For instance, Booker T. Washington's strategy for racial uplift at the Tuskegee Institute was based on the apprenticeship/vocational training model -- that's more than 100 years ago!
His critic, the famous sociologist W. E. B. Du Bois, had the following reaction after a trip to Germany in the 1930s:
The Siemens AG factory, in Berlin-Siemensstadt,
particularly excited him, with a training-and-
apprenticeship system that he believed could
provide the model for American Negro industrial
education.[1]
(Yes, that's the same Siemens that Tobias refers to in his post.)
More recently scholars like Katherine Newman and others have looked at such programs as a model policy not for racial uplift but to boost the US's shrinking middle class.[2][3]
With college debt now at $1 trillion and rising, it definitely is not a bad idea to explore alternatives to the way education works in the US.
I wish I could have a mentor like Juergen in the article. Ever since I started writing code, nobody has had enough time or dedication to go over my work line-by-line like that. I learn those lessons by trial and error when my code breaks. And they aren't lessons I could have learned in college. I've got a long way to go, but one day if I'm actually a good programmer I'll try hard to be a mentor like that to the new guys.
This is a good point. A university CS education will not be about writing good code in any particular language (at least mine wasn't). If you are not at an engineering school there will not be a lot of emphasis on software engineering practices. And you can't really lean on your peers very much because they are as inexperienced as you are. Even your TAs and professors likely don't have any experience writing production quality, maintainable code in a commercial/business setting: they are more likely to write "proof of concept" code for their particular research interests.
In short, a traditional Computer Science curriculum is not designed or intended to churn out e.g. Rails developers who can be immediately productive. An apprentice-style training system could do that, however at the expense of not teaching some of the more theoretical computer science (or teaching it in a much more applied style).
I actually met with some programmers from Shopify at a conference this week. They spoke of Tobi's leadership very well and I could see he's worked hard to cultivate a certain culture at Shopify. Reading this essay really validates a lot of what his programmers said about him.
In Portugal we adopted the same system, 5 years ago or so, and i can say its not working as good as in Germany, for young adults who live in rural areas they don´t have the industry to get an apprenticeship like you did,not everybody gets a chance to work with smart minds like you did, and have the adult discern like you did to make yourself useful at such early years of life. That´s is a good story, i can tell you that. But it does not means that its reachable to everyone everywhere.
I can see the problem there. Germany has the advantage of the Mittelstand, a strong net of middle class companies layered over the whole country. Even ever-so-small villages oftentimes have one mid-size company that does processing, engineering, or something else to modify or edit products for another companies toolchain.
However, oftentimes these jobs are mostly catering to blue-collar workers. If, instead, you want an apprenticeship as a programmer or something other more white collar, then - in a small village - chances are dim, too. In my case I had to move to a different city, so I could find one. Which is something many of my friends did, in order to find a suitable apprenticeship: Move away.
God. If only the US had something like this instead of the stupid everybody go to college, everyone spend years studying vapid idiocy after already wasting years doing the same in high school. I'm not anti-college. I'm anti no choice, one size fits all, we don't care if you actually can do anything as long as you were able to put up with enough wasted time to prove you are not the type to buck the system and maybe cause problems.
In the US a model akin to this exists in certain trades, such as sheet metal workers, plumbers, etc. The trade unions essentially act as guilds (rather than the more worker vs company model of UAW and the like) that sponsor apprentice programs. The apprentice has to obtain instruction at a trade school for basic skills and then apprentices through the union for an employer or employers. The unions have their own insurance plans that the members pay for themselves, and in essence the group of workers are "contracted" to the companies.
In order for something like this to extend to programming, you'd need someone to establish such a guild structure and trade training capacity.
Whether such a thing ever occurs is doubtful in my mind due to the established interests of those who are already credentialed and in the workplace. Much as becoming a lawyer was once a matter of simply passing the bar (no Juris Doctorate was required) but now has erected barriers built by the ABA to protect its membership, I suspect that there would be resistance by established tech workers and managers. (as an amusing aside, the state of Washington actually still has an apprenticeship program for lawyers but due to the ABA those apprentices can only practice in the state of Washington and will not receive reciprocity with regards to taking and passing the bar in any other state.)
I was an apprentice, fairly recently actually, only last year. I loved it - the crappy pay, the meaningless jobs and the terrible teaching aside - I found that I was in my element.
Half my life I've been fascinated with computers, for a quarter of it, I've been actively building programs to populate them, replacing the typical childhood experience with code and logic.
When I got my first job in programming I had been a hobbyist for a few years and I was a fresh mind to mold, but I felt used, I had a house and food to pay for and it was a hard experience.
It's more than a year ago now and I'm at another company, one which valued my skills in a better way, more money, better prospects and far better training, I feel like I learn more every week at my current job than my entire time at my last job.
To anyone out there who is young and jobless, or unsure of what they want to do, or sick of stacking shelves at Asda, I implore you, try one out, the job satisfaction and the change in your mentality will be more than worth the effort.
You don't need to program from your youth like me, most people start between the ages of 16 and 21 (so far as I can tell) and codecademy and other services are making it a lot simpler to learn these days - anyone else remember learning HTML from W3SCHOOLS?
I said this to my best friend a few months ago, when he had just had his baby and had no job: Why do nothing, when you can do something you will love?
I live in the UK, in the north, the company was tiny: www.cicsolutions.co.uk, only a small 3 person company, don't get me wrong, they were a great bunch of people, but the teaching style was all wrong - I was punished severely for infrequent mistakes (accidentally deleting a CSS file instead of renaming it, there was no backup system etc in place) - and the money was fairly horrific.
err a 3 person company is in not in an position to support apprentices - this is the problem with the half assed Modern Apprentice system its abused to hell by tax dodging coffee shop chains and supermarkets to get cheap 1/3 the minimum wage trainees for non skilled work.
I couldn't agree more, like I said, I was in a position where I was already capable on the day I walked in the door (I sat down on day one and head my first website live by day 6) - I dread to think how it would have turned out if I hadn't have been.
For a start, the college taught the most irrelevant of things - how to use Microsoft word, how to set up a router, what an email was - I mean, in what world should you seriously consider jumping in to the deep end of web development in a paid job if you don't even know what a fucking email is?
Then there was the poor time management, I was given only one afternoon a week for my coursework which I was to complete in work and not at home - I was royally screwed the first time I got behind and playing catch up after that, I could not be given more time, couldn't do any at home and no one really seemed to care.
I was on of only 2 technical people, and the other one was my boss, who almost never had time for my training from day one, in 9 months there, I had 3 lessons from him, one of them a one on one on how Joomla components worked, another a 15 minute tutorial on the class structure used in CodeIgniter and the third (and this was the only truly useful one) was a 2 hour lesson on Database design, not just "Well, that should use an ID and be an int(6)" but actual useful theory, not just how two tables interact, but why they interact, and what joins do. In 9 months, I only had one lesson where I walked away knowing more than when it started.
In a way I feel sorry for the person they replace me with, but in another way, having to do all the work on my own, to deadline and design was probably the best training I could have had.
No source control, anything I worked on came directly from my own machine, there were only two copies - the one on the server and the local copy, until my first major incidence, my own source control (in the form of automated backups) was none-existence as I had never encountered a situation where my beginners brain had deemed it necessary.
Good article, and most of it sounds very familiar.
I went through the apprenticeship system in Germany after dropping out of Uni (I guess I wasn't cut out for German literature and philosophy after all).
At the time there was a true disconnect between the real industry and the schooling part of things, mainly due to the fact that unlike baker of carpenter, front-end programming was such a new thing, so it got thrown into the same basket as print publishing, and thus I had to spend my once-weekly days at school memorizing various paper-fold patterns and Colorspace and DPI settings which were highly irrelevant to what I was doing throughout my days building websites at a digital media agency.
Like the OP, I got taken under the wing by a guy called Thomas, who was a pretty decent coder, and to whom I owe a lot.
Germany wasn't doing so well economically at the time, so shortly after I migrated to the UK. My three years of industry-relevant experience gave me a great base to build my career upon, for which I am thankful to this day.
What he doesn't say is the the dual system in Germany is very stratified it can be very difficult to go to a tier 1 university in Germany if you don't get steamed into the right sort of high school.
note that he moved to the USA where the stigma of going to the wrong sort of school is less of a problem.
Apprenticeships are awesome, but a lot of comments here refer to dropping out and just going it on your own, which is a lot different from an apprenticeship, which, for better or worse, we don't have here. I would recommend the apprenticeship route if we had one, but as we don't, a college degree will make your life a lot easier.
And one of the best reasons to go to college for computer science is making friends who share your interests, those are the people you will network with to find great jobs, start new companies, etc. So while the classroom environment might not be thrilling, there is plenty of education to be had outside the classroom. If you are super enthusiastic, you might even get to work on cutting edge research as an undergrad in a university lab.
As someone who essentially went the same route (though I finished high school, and took a slightly more circuitous route), I've often wondered what I missed out on by not going to college.
Don't get me wrong, I don't think it would have made much of a difference in where I'm at in my career, but I wonder about the rest of me. The people I know who went to college tended to have social experiences that I didn't have (though perhaps working at a startup these days offers some of that). They took classes in subjects that I have only a basic understanding of (physics, chemistry, politics). In some sense of the phrase, they're more "well rounded".
I'm not certain how much that matters. Maybe it doesn't matter at all.
Now I love that the company job board conveys the same type of ideals. http://www.shopify.com/careers?posting=ruby-developer. Nothing gets me more than founders saying "I didn't go to college and look how great I did" while requiring their employees to have a CS degree to even get an interview. I know this is more of a filtering tactic but it seems so disingenuous. The biggest take away from the article wasn't dont go to college, it was find an environment that suits your learning style! College isn't right for everyone especially with student loan debt just about to eclipse 1 trillion dollars.
I also live in Germany and am currently writing the thesis for my masters degree in CS. In my case, I wished I left college after getting my bachelor. I had a solid foundation of theoretical CS knowledge after 3 years. I continued to study only because I wanted the degree, in case I "need" it later to get a job.
For over a year now I didn't see any lectures, but have been working at a company instead. I had all my exams, the only thing I have left to do is my thesis. It's hard motivating yourself to do scientific work if you know you can get by just fine without it. And all just for a degree that doesn't matter (to me at least).
What's the cost for a semester these days? Did they introduce fees?
What you're doing would be a very unlikely scenario in systems where studying is setting you back a couple of thousands every term, i.e. Australia, UK or the US.
I very much doubt that he "dropped out" of "high school" and was able to get an apprenticeship, this is probably a bad translation.
He probably left a Gymnasium after tenth grade without getting an Abitur or didn't go to a Gymnasium after finishing Haupt- or Realschule. Unlike dropping out of high school in the US, this would still leave him with a diploma which would make getting an apprenticeship as a Fachinformatiker plausible, which is practically impossible to get without some kind of diploma.
btw. you can't just drop out of school as a minor in Germany as not attending school regularly would be illegal.
I'm the process of getting a H-1B visa denied because of my lack of degree on IT. I order to get working H-1B visa without a degree one would need to have near 12 years (which I have, but not 12 straight years obviously with a few months lacking here and there) of working verified experience. My company however, seems to find me valuable enough to want me to work for them even if remotely. The US gov does not....go figure....
If you don't have a degree then simply leave an education section off your resume and don't bring the topic up. Ignore degree requirements for jobs; apply regardless. Doing this, your lack of degree will probably have little remaining impact on your career. This strategy works because a CS degree has small actual value to an employer, and most employers know it.
tl;dr The OP is not alone in finding a real problem highly motivational to learn the solution; there is a missing component to computer science education that doesn't address 99% of what application programers do; apprenticeship programs would particularly benefit from certain practical additions to the curriculum.
His learning "disability" is all but universal: teaching style doesn't give students a real problem to solve. That's how science is supposed to be taught. Ask your students: can you build an engine out of a pot of water, a tight-fitting rubber cap that expands, and a small weight that can be attached and detached from a crank at any point in it's motion?
This is how you introduce temperature, heat, pressure, volume, work, etc. And I can't help but think that an apprenticeship basically achieves the same thing: it motivates the learner with real problems that motivate them to find a solution.
This is great in theory, but in practice CS doesn't really answer the problems you have as an application programmer. Much of CS "book learning" is focused on things like compilers, systems programming, or data-structures and algorithms. I don't know about you guys, but I spend very little of my time designing languages, compilers, or systems programming. I don't even spend that much time choosing data-structures. No, I spend most of my time learning the interfaces that other people have built around these things - learning how to parameterize and operate within someone else's higher-level environment (which is also known as a platform).
So what should ordinarily be an exercise in data structures and algorithms becomes a piece of techno-social detective work: nothing less than the determination which library/tool/framework is appropriate for the project, and then to get busy learning that combination to be able to release real software. If there exists, anywhere in the world, a class on how to discover, evaluate, and integrate libraries into an existing project, I don't know of it. In the same way, I doubt there exists a class on comparative application architectures.
I'd say that Tobias' post portrays both: his individual choice to make certain choices (and pursue Jürgen's team), and the context of the German apprenticeship.
I work for a US company and have had a similar experience to what is described here! My employer had that type of practical education, and so even though I have a bachelor's in Physics I am working as a programmer, gaining valuable experience and feedback.
Actually the apprenticeship model exists in Canada too. But it`s restricted to trades like electrician and plumber and does not extend to engineering or law.