Learn to Code in 3 Months—or Less
thedailymuse.com
thedailymuse.com
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
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.
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.
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.
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.
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.
Average salaries are around (but slightly less) than San Francisco junior industry averages.
This is after an 8 week course. These programs work.
Disclaimer: I now work for DevBootcamp.
What's the industry average? (Sorry, I'm from Oz so don't know.)
This is particularly pertinent because the vast majority of the students here end up working in the Bay Area.
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 think that's the point they are trying to make.
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.
Both are valuable in their own way but the comparison is just rediculous.
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?
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?
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.
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.
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.
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.