This is how you actually teach people to program
jmtame.posterous.com
jmtame.posterous.com
I think the main thing we discovered about teaching was that we weren't going to get anywhere by relying on other people to do the teaching for us, or with a fancy web application. The thing I find most interesting about our story was that it took us four iterations to realize that the best way to teach people was also the simplest -- teach what we know and do it directly. As far our methodology, it's going to be pretty simple: try to teach people, online, as if they were all in the room with us. That means lots of Skype calls, chat room, etc.
Not many websites are offering the personal touch online, and I personally think more people should. I think http://railstutors.com/ are an example of two guys doing it right.
Judging by the success of DevBootcamp/Hacker School/Etc. have had, I think it can safely be said mentorship is a pretty effective teaching model. Our job is to make that model work online as well.
Figuring out a business model that results in a better clientele is an achievement, but we learn how to find good people to teach rather than "how to actually teach people to program" in general. This model dismisses those with a casual "tourist" interest in order to focus on those who are already motivated. Business wise, that's a great idea for Jared, but companies or teachers looking to have a mass impact will need to keep doing their research because many a tourist has turned into a fine developer (and some are finding success in this area with wildly differing models - Treehouse, Code School, Zed Shaw, etc.)
I think lots of models can work, but we tried what we saw as the holy grail of "we'll deploy on your behalf, build the editor, and structure the guide" model and keeping the user in the browser just doesn't work.
Bloomberg LP, Zoho and Infosys all have very good versions of this in-house. Convert a economy major into a developer who knows C,C++,Fortran or Cobol in 4 months.
Zoho does it with high school grads but their process takes like 2 years I think for them to be contributing engineers.
I like the part where they get people to commit to atleast 3 hours. In my model I assumed you would need 8 hours of full commitment per day.
We draw the line at 3 hours and weekends are required, plus you can't be gone more than one week during the 8 weeks. If people can't commit to any of those, we would rather try again with them in the future when their schedule works out better.
I figured out some other interesting business models. Especially applicable in NYC. Email me (in profile) if you want more info.
My take is that a key part of learning how to program (or anything new, in general) is in the motivation - if your student is just "kicking the tyres" then forcing them to commit $3k or making them digest an entire book is only going to deter them.
Once they're motivated though, they'll usually plow through obstacles that would've stopped them just last week. So give them small wins at first and give them an idea of what it's all about, then ramp up the difficulty once they've figured out what they want to do.
A common "tell" for this I find is that they move from "how does 'x' work" to "I need to do this thing; how do I do that?" combined with doing lots of stuff (They might do it in a weird, non-programmer way, but they'll still be doing it).
Udacity gets you thinking on your own. It teaches you principles then presents a blank screen and says 'now make something that does XYZ'
That's a whole world away from a pre populated page of code where you type between the quote marks.
Going from a blank page to something that works - where the steps, logic and reasoning are all your own - THAT's what makes beginners jump around the room with excitement.
Beginners also often need to be reminded that if you get stuck your job is to stop coding and find out.
If that sounds like something that interests you, I'd encourage you to apply!
None of them address the frustrations of WHY other programs don't stick.
After an in-browser coding course - the pupil isn't left with anything. (except a false sense of achievement)
There's no project to put in your portfolio. Nothing live on a website, no repository in GitHub.
It's also pretty much impossible to show others what you have learned outside of the website.
After a course, comes the question, "if I want to start my own project or replicate what I just learned outside if the learning environment, how do I go about it?"
That makes you feel like you're back at square one.
Learners don't get a sense of achievement from "Hooray, you built your first app" they get it from building something they can either use or at least show to others that it works.
To actually teach people to program, you can't do it in an online environment that is far removed from actually building real projects.
I look forward to seeing something that combines the support that Bloc offers with the working projects of Udacity - helping to set people up with their own development environment that they can use for their own ideas.
Beginners don't have that, so I picked as wide a variety of programs as I could get away with for each chapter. Presto! More-or-less-instant set of bits for creating simple UIs, games, business-y programming (csv, web scraping+parsing, emailing, etc.)
1)An in-browser coding environment that starts with classes and then supports any project you build.
Once this type of environment exists and experienced developers prove that it works with impressive applications - people will see it as a viable learning route. This could be monetized as a SaS, monthly subscription.
2)A package to download/install that creates a local development environment. It could even be some progression of Light Table, with classes, forums & support!
Bloc was on my radar but the $3k price point just didn't make enough sense. I have a pretty strict burn rate (~2k month) for the summer. Using Bloc sounds amazing, but it takes a month and half out of that runway. I don't want to be worried about money, I only want to be worried about learning. Maybe you take a cut when I'm hired at a startup?
Sans Bloc, I squeeze every resource I can find online to learn (Zed, Hartl, Pine) and connect with people who can do casual office hours. Set a cirriculum for myself and bug dev friends / SO when I run into something I cannot get past. Tougher but I'm learning the whole time.
In my experience, the code review, office hours and peer-peer cohorts are super valuable for someone learning on their own. Good luck w/ Bloc and hope there's a good fit soon!
I then asked him if I could join the second cohort. This time I learned that the price moved to $1000, and he again told me that he would contact me as soon as they open a class.
So is the class now $3k? What made you switch the price point?
Also, I am still interested in going through it, but I really need someone to reply to me. Plus, as fellow UIUC alum/enterpreneur, would truly appreciate that.
I just want to be a part of it.
Sorry about that, things got a little hectic and it just slipped my mind. Sending you an email right now.
It may be that this can be handled, but it needs to be discussed. You can't just gloss over it and talk more about the stuff that is interesting to programmers to implement.
You pay a personal trainer, and you (theoretically) grow from the experience and get value. But you still need to show up to the gym.
I've been learning to code over the last few months, and while I've got a reasonable handle on it now, by far the most difficult thing for me was understanding how the dev tools work together (terminal, git, virtualenv etc.)
There seems to be a tendency for coders to underestimate how steep the learning curve on dev environment is for noobs. I think there's also a reticence to deal with a fiddly topic that depends so much on the settings that the individual has on their computer.
The irony is, you HAVE to understand dev environments before you can actually make code do stuff. I know more than one person who's been turned off by how hard it was to get started.
I know that means they probably didn't have the commitment needed, but for those that do, setting up dev tools as a hazing process still isn't fun.
Like you noted, a lot of the complexity comes from how the tools work together. There's version control, editing, code intelligence, test suites and test runners, different sorts of environments, and more. And every possible permutation and nuanced setup depending on the runtime you're using and depending on how opinionated and/or fickle the community is around whichever language you're using.
Meta-problems of this kind are seldom discussed directly and are difficult to improve upon. I suspect things will get better slowly, and problems we have now will seem trivial and quaint in the future.
EDIT: What heroku has done for the production environment, I want for the development environment.
Don't agree on the plateau so far as dev tools are concerned. Would be surprised if you haven't come across Bret Victor's ideas (http://vimeo.com/36579366). In my view, implementing those principles could really change how things are done. Can't wait to see what he comes up with over the next few years.
As to solving the core problem for now: the only solution is to just be really opinionated so far as beginners are concerned. Reasonable minds can differ on textmate/vim etc, but just showing students how to setup one solid set of tools on windows or mac (and more importantly, explaining it) would be a hell of alot more than is already out there. :)
Just proves how much opportunity exists for those willing to stick their necks out and think independently, even in this world of supposedly very smart and "rational" people.