This should be rebranded "Learn to produce Average Code in 3 months or how to make the real programmers on your team miserable".
I mean seriously, it's one thing to have some cute blog summarize trendy tutorials in one place, but to have it appear on the front page of HN is disappointing to say the least. I honestly expected to open the comment and see people bashing this.
In 3 months, with serious dedication (assuming no background in science), you will at best be able to run a CRUD-app prototype on your laptop, you have no feel of "real world" problem, let alone do more "serious" (as in go beyond generating a couple of forms with your web framework) programming. (Yay! you learned to type in ... a Unix command!)
The crazy thing is that I thought this was already settled 15 years ago, when Amazon started selling books a la "teach yourself programming in 2 hours (and be insanely rich for the rest of your life!)".
Don't trust me, I'm a young old-fart. Take this guy's word instead. I bet HE knows a thing or two about programming.
http://norvig.com/21-days.html
I don't understand this attitude. Would you feel the same way if someone put up an ad saying "learn to drive in 3 months"?
A couple of years back I went to one of those "driving camps". It was enough to land me a driver's license in Sweden, which has comparatively high standards. Did I become race driver? No. A professional driver then? No. Do I know all the parts of my engine? No. I can drive my car from point A to B relatively safely and I know how to check the oil, but that's pretty much it.
You have to start somewhere. A lot of people aren't getting exposed to programming in a useful way - compared to say, driving, counting, reading and writing - and this is a good way of starting out. What's the problem with that? If you are starting a delivery business, perhaps it would be useful if you delivered the packages yourself rather than hiring a professional truck driver.
As for the reason of this being on the front page of HN: One thing to keep in mind is the fact that it, along with a gazillion other articles on the same subject, represents a change in availability of education in our industry. That and link-bait for the Zuckerbergians.
Because filling the road with half-accomplished drivers is a pain in the derriere. The average driver is already annoyed and tense on the road, I can only imagine professional drivers get very frustrated by poor driving when they're outside the tracks. (On a side note, driving is much more vital than programming, so the analogy stops here. You should have the right to drive, even at a non-professional level. Can the same be said of programming?)
Just like less-than-average drivers will annoy the pros, the less-than-average programmer will limit the field. If you look at my original comment, I clearly mentioned: "How to make the real programmer on your team miserable". If the less-than-average programmer sits in his parents basement working on his own racoon-loving social network using the most mind numbing technologies, that's okay. But as soon as he interacts with others, he will inevitably cripple the advances of the field. Think of what happens each time a standard comittee reaches the conclusion: "It's a great idea, but too complex for people to grasp".
I know I sound very elitist, and I wish I wasn't. The truth is programming is hard. Very, very hard. Sure you can use your favorite framework to generate an html form and read DB fields, but this is not programming. Dijkstra has written extensively about the subject, calling programming "one of the most difficult branches of applied mathematics" or saying about BASIC (whose usage then is very analogous to the subject at hand now) "the teaching of BASIC should be rated as a criminal offence: it mutilates the mind beyond recovery". EWD was an extremist, he argued that CS students should focus on symbol manipulations, prohibiting them to manipulate computers for the first few years, focusing on an abstract formal language instead. He criticized universities for "[lacking] the courage to teach hard science" and their "infantilization" of the "radically new" idea that is computer science.
I won't go as far. If what he suggests is an extreme, a website promising you to learn code in 3 months is the opposite extreme. A 4 year CS degree, a couple of open source projects and the deliberative practice Norvig talked about should be a good moderate middle-ground.
In short, do I encourage people to start programming? Of course I do, it's the most fun I've ever had in my life. Do I agree that three months worth of learning and couple of RoR pre-fabricated functions is enough to say they learned how to "code"? Absolutely not.
I can understand the attitude - and your counterexample. I know a few people, who have law or humanities degrees, who can come up with some working Wordpress installation or some web form much more quicker than I could (I've been programming since 12). And I would love to see more people being able to automate their everyday tasks - and more and more people can. But the problem of programming I guess is that the limit is really your mind, and that's a bottomless pit. I'm still learning to develop an instinct for code, a feeling for balance between necessity and clarity. And I don't feel my journey will end sometimes soon.
I wish there was a completely different word for self-taught people without a formal computer science background.
If there was, the people with computer science backgrounds could stop grousing and moaning, and the self-taught people could get on with using their skills as best they can to improve their lives without being subjected to all the hostility and snark.
To be fair, my diatribe is not geared at self-taught programmers. I have a lot of admiration for the people who learn programming that way, and I personally consider that most of the (theoretical, formal, CS) knowledge I got came from self-teaching, picking up a book and personal experimentation despite having earned a Masters in Engineering that taught me more about corporate bullshit like "Project Management" or "Work Ethics" than it did on programming - The sad state of engineering schools in France, a whole different subject.
What I'm merely pointing out is the ridiculously short amount of time the article is promising its readers. 3 months? Really?
I have been programming for a while now, borderline obsessing about it for the past 2 years and a half, and frankly, I feel like I still know so little. When yet another blogger tells her cool marketing friends that they too can learn to code with such few efforts, it makes me chuckle. And cry a little.
""Learn to produce Average Code in 3 months or how to make the real programmers on your team miserable"."
What team? If they had any say on the interview, they'll have brought it on themselves.
I really don't see the harm here. Within three months one can have learned something, and have a notion of what coders really do. At that point, one can decide either to give it up or to learn more.
It is written in what seems to me a women's magazine style, but male old-old farts are evidently not the target audience.
The first cohort (Spring) of http://DevBootcamp.com graduated a month ago. It was an ultra successful class, we had some amazing teachers, mentors and fellow students (I was one of them). I've just checked the current statistics and 14 of the 17 students looking for jobs have now had offers. I think at least 5 have accepted an offer and started working so far.
Average salaries are around (but slightly less) than San Francisco junior industry averages.
This is after an 8 week course. These programs work.
I don't know about "junior developers", but the average starting salary for a fresh BS from my public university (based on a voluntary exit survey, so there may be some upward bias) is around $80.5k.
This is particularly pertinent because the vast majority of the students here end up working in the Bay Area.
I'm also Australian! I'm led to believe Junior developers are at around $90,000. It's hard to say with the level of experience these people have, as it's very much entry level.
We need to start making a distinction between computer science grads and web application developers.
Nobody really believes that you can learn everything you would on a CS degree in 3 months. But with awesome frameworks like RoR, jQuery, JMVC and Codeigniter, a wealth of online knowledge and big communities it's now possible to achieve an awful lot without any formal CS education.
I am always surprised when reading posts like this one. Studying a subject is boring, one learns fastest through real world practice/experience.
Whenever someone asks me how to pick up programming I give them the following advice.
1. Think of something cool you want to build. Scratch your own itch. Presume everything is possible.
2. Find out what reading material is required by your local universities for an introductory software engineering class. Find one that has a 200-300 page reader, written by the professor that teaches the course. Go to the university, buy reader. It's cheap, max 20$, and extremely dense. Do all exercises.
3. Find a cool web framework. Program.
Before you realize it, you'll have developed something pretty cool.
I think the title is silly.
You don't learn to code in 3 months.
You learn the keywords and semantic of the language.
This has nothing to do with being a software developer and producing good and valuable products.
This attitude is the reason why out of 100 resume I get on my desk I might find 1 or 2 good developers.
Then you read about "developers" complaining they are only being paid 1,500 EUR in Europe. You know why?
Because. They. Suck!
A computer science degree means you've spent 4 years learning computer science, it doesn't mean you know anything about software development. In fact, at a university with a good CS program, it almost certainly guarantees you know nothing about software development: UC Berkeley's CS program has a single optional elective on the subject of software engineering.
Now, there is a high correlation between computer science aptitude and software engineering aptitude, but I wonder if it's just because we've conflated the two because the field is so young. I believe that one can be taught without the other, and that's what we're seeing with these academies.
Consider: on one side, you have someone who spent 720 hours over the course of four years learning Delaunay triangulation and LALR recursive descent parsing, but has never written or architected a greenfield application from scratch.
On the other, you have someone who spent 300 hours over eight weeks building applications, being exposed to good industry practices, learning how to deploy systems, how to use source control, how to use an IDE. Maybe afterwards, they could spend two weeks covering fundamental theory.
Let's be honest, when I go out to interview I do the same thing anyway.
As an employer, the latter would be more immediately useful to me. So you're right, the comparison is ridiculous, and an intense course is not a substitute for a multi-year degree. But stop and ask yourself: is a CS degree the right criteria for admission into the industry in the first place?
I feel the title of Software Engineering is misleading because it doesn't quite relate to other fields of engineering. The way Software Engineering is used is more like Software Construction, where the concern is more about programming using building blocks and tools of the trade, along with construction methods: like code organization, deployment, source control, etc.
Computer science might best be aimed at: Big Data Analysis, Compiler Writing like HipHop (Php compiler), or Distributed/Parallel Programming, Large Scale Deployment, etc.
I agree that writing an LALR recursive descent parser might not make someone an architect, but neither will a 300 hour/8 week course, mainly because I feel experience is the deciding factor.
Employers often want to create a repeatable scaleable process -- so yes this would be attractive to an employer.
Who says a CS degree is required for admission into development? I've worked at companies where many of the developers didn't have CS degrees, but there is a noticeable difference between those with a degree and those without. Those that don't have a CS degree, but somehow still make it, are often those that could have made it through a 4 year course. Sadly, there are also those with a CS degree, or even a graduate degree, that can't hack it either.
So in the end hiring is difficult, and there doesn't seem to be many indicators that some one will be a good developer and eventually an architect. But, when hiring I personally would give preference to a someone who holds a CS AND has the right attitude.
Also it's a matter of goals. If your goal is to stand up something cookie-cutter-ish, and then just duplicate that process with varying degrees of style, then sure anyone can probably learn to do that. But, if you need to integrate systems, write parsers to put data into a high-performance data warehouse, organize structures for a custom CMS, etc, would you really go to someone fresh out of a 300hr/8week course, or someone fresh from a CS program, if those were your only 2 choices?
You seem to disagree with a point I am not making. I'm saying that they are both valuable (maybe CS grads who want to work as Software Engineers should take such classes), but not equivalent.
There are values to an academically rigorous (CS) education that are unrealted to Software Engineering. Simply being aware of CS fundamentals is not equivalent.
There are many eng jobs outside of Startup land where a deep knowledge of CS is far more valuable than how to write and deploy a full stack web app.
I'm actually agreeing with you and disagreeing with chriszf. I suppose I should have called that out specifically. My comment was mainly to counter argue what I've seen as undervaluing a CS Degree. (Sorry for the confusion).
"Both are valuable in their own way but the comparison is just rediculous."
But people still insist on making the comparison and treating CS degrees as vocational training for a career in software development.
Personally, as a CS graduate I think that CS is about as relevant to most software development as an engineering degree is to being a plumber. Note that this is not intended as disrespect for trades - quite the opposite in fact.
NB I used to work for a Dean of an Engineering Faculty whose speciality (fluid flow - e.g. through materials and things like water hammer) arguably has a similar relationship to plumbing as most CS has to development tasks.
Interesting link. What would be nice would be some kind of comparison of different offerings (e.g. the online Codeacademy-style stuff) by either an experienced developer or a novice to see how they stack up against each other in terms of usefulness.
Code Avengers http://codeavengers.com is a free interactive online tutorial that will teach you Javascript. My brother created it and I think its the funnest and most effective way to learn.
I find these 'Learn to code in [any time period]' things tiring. You can learn to code in one day if you want, but that doesn't make you a good or knowledgeable coder. And some people will never be able to code in a logic manner, even after 3 years. The time period is hardly related to this, as is confirmed by lots of research.
Fair enough, but it's interesting to note that a person with little-to-no CS background can be made to resemble, in all respects, a junior-to-mid level engineer in such a short time. It suggests that the industry notion that a CS degree is needed to be a good engineer needs to be challenged. Why it exists at all baffles me, when some of the best software engineers around are mostly home-grown: John Carmack, Shawn Fanning, Ken Silverman, Bram Cohen, etc.
Because the industry is so much more than throwing preformated auto-generated web forms at a database. There are things far more serious than your average "Facebook meets Fitocracy for lumberjacks" ideas...
If Carmack and others managed to do great without a formal degree good for them. But they're outstanding people and are more the exception than the rule. If you're as talented as these guys, fine let your skills speak for themselves. But assuming every person following this 3 month "program" will now call themselves a programmer is something completely different.
"the industry notion that a CS degree is needed to be a good engineer needs to be challenged."
true enough. but whether CS knowledge is required is a more interesting question. John Carmack (picking a name from your 'homegrown' list) is extremely knowledgable about algorithms, computer architecture, graphics etc.
of course, it also depends on the definition of 'good engineer'. If you define it as "someone who can build a simple CRUD app in Ruby on Rails", then probably very little CS knowledge is required.
I think mid level engineer needs to be contextualized. Mid level at top CS companies is a huge achievement and not something that '[anyone] can be made to resemble ... in a short space of time"
Code Avengers http://codeavengers.com is a free interactive online tutorial that will help you get started on Javascript. There is obviously much much more but this will help beginners learn basic skills.
I mean seriously, it's one thing to have some cute blog summarize trendy tutorials in one place, but to have it appear on the front page of HN is disappointing to say the least. I honestly expected to open the comment and see people bashing this.
In 3 months, with serious dedication (assuming no background in science), you will at best be able to run a CRUD-app prototype on your laptop, you have no feel of "real world" problem, let alone do more "serious" (as in go beyond generating a couple of forms with your web framework) programming. (Yay! you learned to type in ... a Unix command!)
The crazy thing is that I thought this was already settled 15 years ago, when Amazon started selling books a la "teach yourself programming in 2 hours (and be insanely rich for the rest of your life!)".
Don't trust me, I'm a young old-fart. Take this guy's word instead. I bet HE knows a thing or two about programming. http://norvig.com/21-days.html