21 ms·
The Apprentice Programmer
- walshemj 14y agoWhat 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.
- gdsimoes 14y agoI wish we had these type of programs in my Country...
- SparrowOS 14y agoI have a master's in Electrical Engineering and I'm a genius.
- uokyas 14y agoIn 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.
- terhechte 14y agoI 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.
- templaedhel 14y agoI 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.
- jdotjdot 14y agoYes, 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.
- jmduke 14y ago> 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. (I'm not saying that's still true.)
- drcube 14y agoYeah, 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.
- ams6110 14y agoMore 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.
- shanelja 14y agoI 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?
- oliverhunt 14y agoWhat country do you live in and what company did you do your apprenticeship with?
- shanelja 14y agoI 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.
- walshemj 14y agoerr 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.
- jmduke 14y agoThis 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.)
- terhechte 14y agoI 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.
- MikeKusold 14y agoI 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.
- dreamdu5t 14y agoI'm so sick of success being portrayed as an institutional choice rather than a process of individual choices.
- mijustin 14y agoI'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.
- blt 14y agoI 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.
- ams6110 14y agoThis 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).
- icelancer 14y ago> Ever since I started writing code, nobody has had enough time or dedication to go over my work line-by-line like that. Commit big changes to open source projects. I bet you get a wide variety of reactions.
- hkarthik 14y agoI 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.
- ender7 14y agoThe 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.
- xal 14y agoI 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.
- seubert 14y agoI wonder if a company that stressed a role like this up the career ladder as an alternative to a high-level architect role would see much success.
- invalidOrTaken 14y agoI 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?
- vermasque 14y agoIn 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.
- inquist 14y agoI 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.
- deleted 14y ago[deleted]
- mijustin 14y agoAre you in the Austrian or the German system?
- deleted 14y ago[deleted]
- larrywright 14y agoAs 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.
- joeycfan 14y agoI wish I could have done this. My career was sink or swim over and over. Also, the lilies question is the kind of thing people screw up all the time. I worked with no master teacher. I had colleagues who regarded me as competition and would angle their bodies so I couldn't see what they were typing on the command line.
- dxbydt 14y agoI 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.
- ismarc 14y agoI'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 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.
- mickgardner 14y agoI would love to have done an apprenticeship in Programming. Australia really needs an apprenticeship program like the one Germany has.
- vladsanchez 14y agoLove the fact that we share a love for Delphi and its VCL. I still treasure memories of rapidly prototyping projects with ease and packaging fully windowed apps in a 3.5 floppy disk.
- genwin 14y agoIf 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.
- jboynyc 14y agoIt 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. [1]: http://chronicle.com/article/WEB-Du-Bois-in-Nazi/1896/ [2]: http://books.google.com/books?id=1jfAhghdH7MC [3]: http://dx.doi.org/10.1007/978-94-007-2272-9_10
- phatbyte 14y agoI'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....
- namank 14y agoActually 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.
- pascalo 14y agoGood 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.
- lucian303 14y agoGreat article. I think this is really the only way to help people learn real world skills. So many college grads have a lot of theory but no real world practice. It also helps the people who take apprentices on, as teaching is learning.
- DasIch 14y agoI 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.
- davidroberts 14y agoGod. 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. And by the way, I do have a degree.
- zdgman 14y agoNow I love that the company job board conveys the same type of ideals. http://www.shopify.com/careers?posting=ruby-developer 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.
- javajosh 14y agotl;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.
- sebastianmarr 14y agoI 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).
- pascalo 14y agoWhat'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.
- fallous 14y agoIn 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.)
- coldarchon 14y ago"Stift" does not mean "Pen" in this case, it is an unfinished nail - without a head (like an apprentice) ..
- zenbowman 14y agoApprenticeships 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.