Ian Bicking: the old part of his blog

Re: Training for Failure

The Java schools that Joel Spoelsky writes about are simply trying to maintain their existence by keeping student numbers up as the overall market for programmers increases. They are teaching what a former colleague used to call "programming with a trowel". Of course it's getting harder to sort the wheat from the chaff, there are just that many more people out there claiming to be programmers. Ask the BDFL what he thinks of the skill levels of the typical Bay area Java coder.

That's not to say that someone like Bruce Eckel couldn't produce good Java, simply that there aren't that many good Java programmers around. But then the overall programming standard seems to have gone down as the programmer base has increased, so Java is probably just the populist end of this trend.

I think the most interesting part of your post is the bit about fear of inadequacy. If students don't learn from problems that make them aware of the possibility of failure then they will probably not get as much out of their attempts. However it's then very important to have a supportive learning environment that will highlight their successes and reference the failures simply as aspects of further learning than as inadequacies in their approach.

It's still true that "the person who never made a mistake never made anything", but it's important to encourage what we might call "constructive failure", and for that I don't think you can beat a vocational education. In fact there's a lot to be said for the old apprenticeship schemes: you were acknowledged to be learning for five years and you had that length of time to become competent - not a master, but someone who had the capacity to turn into a master.

It's good to see Fog Creek are supporting an internship program, and I hope that Google's experience with the summer of code was good enough for them to think about running something equally useful next year.

Comment on Training for Failure
by Steve Holden

Comments:

Well, part of the problem here is obviously Java. Most really good programmers choose their language for the language itself -- and they wind up with things like Scheme, Ruby, or Python. People who are in programming just for the money learn Java, Visual Basic, or C#. Paul Graham's Python Paradox is that as Python grows in popularity, the quality of Python programmers may decline as people use it out of job requirement, not desire to program in Python. (http://www.paulgraham.com/pypar.html)

Regarding apprenticeship -- the problem here is that a lot of experienced programmers aren't good. Having 10 years of experience writing bad software is just that -- reinforcement of bad skills. The truly good programmers don't always (but not never) have the aptitude for guiding a creative skill. Joel himself comes to mind.

# Ken Kinder

It's ironic that even as the video-game generation is coming of age, the ranks of U.S. computer programmers who create those games — plus more practical software — are thinning out.

But what if you could make programming into a video game?

That's the basic idea behind Alice, a software program developed at Carnegie Mellon University to ease students into programming painlessly. Instead of meticulously typing in lines of commands, the users of Alice 2.0 users move animated characters around the screen to tell a story — kind of like playing "The Sims."

Now Electronic Arts Inc., the company that produces "The Sims," has struck a groundbreaking deal with CMU to make Alice 3.0 even cooler — in an effort to reverse the brain drain and particularly to get more girls interested in computer science. Story continues below ↓ advertisement

"Getting the chance to use the characters and animations from 'The Sims' is like teaching at an art school and having Disney give you Mickey Mouse," CMU computer science professor Randy Pausch, director of the Alice Project, said in Friday's announcement of the collaboration.

Pausch told MSNBC.com that Electronic Arts will underwrite development of the new, improved Alice over the next 18 to 24 months and give CMU free use of the 3-D models and animation data for "Sims" characters. "We're going from low-end amateur to state of the art," he said. "These are the characters and animations from the best-selling PC game in history."

Used at scores of schools Not that Alice 2.0 is all that shabby. The object-oriented, Java-based programming environment is already being used at more than 60 colleges and universities as well as an estimated 100 high schools and middle schools to teach introductory computer courses. Two textbooks have been written based on Alice 2.0, and Pausch said "there'll be a dozen" once Version 3.0 comes out.

ALICE ON THE WEB

System Message: WARNING/2 (<string>, line 18)

Block quote ends without a blank line; unexpected unindent.

The Alice software and supporting materials are freely available over the Web: • Alice home page • Download the software • Teaching materials • Another Alice textbook • Alice community

System Message: ERROR/3 (<string>, line 24)

Unexpected indentation.
Image: Alice logo

System Message: WARNING/2 (<string>, line 25)

Block quote ends without a blank line; unexpected unindent.

Alice.org Alice was created to get around the frustrations that keeps many students from getting beyond the intro classes — and in the longer run, reverse a trend that has seen a 50 percent drop-off in the number of computer science majors over the past five years. Statistics also show a widening gap between male and female interest in computer science.

With Alice, students start out with a natural-language, drag-and-drop interface that puts colorful 3-D characters through their computer-generated paces. Instead of typing lines of Java code like this: public static void moveTo(Thing t, Map m, int tx, int ty ) { ... you just move your mouse or type in commands like "rotate one left quarter turn." The idea is that Alice can lay a fun foundation for future computer courses.

"The new version that we're now beginning on will gradually morph into a more traditional Java programming environment," Pausch said. "So we're talking about the training wheels gradually dropping off."

Alice emphasizes a storytelling approach to building a program, rather than a shoot-'em-up approach. "We found that when we targeted Alice as a storytelling vehicle, girls were three times as likely to be engaged and motivated to write computer software, as opposed to just moving 3-D characters around," Pausch explained.

How the deal was done That user-friendliness is what appealed to Electronic Arts, Pausch said. He and his colleagues at CMU have been working with Electronic Arts for years, and the company has agreed to hire 10 students from CMU's computer science program annually. A couple of years ago, Pausch spent a months-long sabbatical at Electronic Arts, and the executives there were particularly intrigued to hear of Alice's success with middle-school girls.

"EA comes to this with the goal of doing well by doing good," Bing Gordon, the company's chief creative officer, said in Friday's announcement. "Inspiring next-generation game-makers is a primary objective. Alice has already proven to be a powerful tool to engage all kids — most particularly girls. Our hope is to contribute in a way that further accelerates its success."

The terms of the deal call for EA to contribute its intellectual property for free use in the Alice program, which is distributed freely by CMU. "The way this license works is, if somebody picks up the open-source Alice and the 'Sims' data, they can't do anything with that that isn't noncommercial educational use," Pausch explained.

That means Electronic Arts won't be offering a souped-up commercial version of the program — and Pausch acknowledged the deal also means neither he nor CMU will profit from Alice 3.0. "Put the handcuffs on me," he said jokingly.

"We all want kids, particularly middle-school girls, to have a better path toward computer science," Pausch said, "so it really is this pure play in terms of, for lack of a better word, nobility." http://www.projectslist.biz/freelance/Java/

# Petro