Showing posts with label rubyconf. Show all posts
Showing posts with label rubyconf. Show all posts

Friday, November 02, 2007

From The Mouth of Babes

The tech world, perhaps like many other niches, has its share of superstars. Of course, superstar is a bit of an exaggeration. Even within the programming community, not everyone has heard of "Matz", not everyone has heard of David Heinemeier Hansson. I was able to meet up with "Matz" and ask him a pretty silly question. Although he's attended many a Ruby conference, and although he has pretty good vocabulary, American accents and speed of talking seem to confuse him.

I asked him whether he thought about writing another language, possibly a crazy one, and he said that such languages have a very short lifetime, while languages like Ruby, being more general, have a longer lifetime.

I asked him this question because I recall that Niklaus Wirth, who wrote Pascal, wrote at least two or three other languages. But perhaps Wirth wrote languages at a time where its growth was not expected. Wirth probably figured he'd write it, and he'd be done with it. I'd guess that he would weary of thinking about what feature to add, what had to be supported, and so forth. I'm completely speculating of course.

On the flip side, two Duke students asked Matz about using Ruby as an intro language. He said that it has been used in Japan, though someone (Amy Hoy, to be precise) asked whether Ruby would make a good introductory language, and he said that some parents avoid giving their kids sharp knives, but some people give it to them. He wrote the language for himself, a programmer, and he was unsure how well it would work for beginning programmers.

I was curious why these Duke students were interested in Ruby as a language. I talked to Justin Wickett, who apparently runs a small company, and Michael Ansel, who are in computer science and computer engineering, respectively. They mentioned how there was too much math and theory, and while this would make them well-rounded, there was this huge world of web development that they were missing out on.

There is a though, prevalent in college, that students should be taught something, and taught something useful. The ultimate lesson in college should be that you can teach yourself. Even so, it's funny how most colleges, despite having this as their underlying theme, don't address the point directly. Why don't they tell students how to go about learning on their own? Indeed, it's often done by doing a poor job teaching, thus forcing themselves to pick up a language or a skill or a concept or something.

The computer industry is weird in that way. The people who best succeed need a combination of curiosity, initiative, and smarts, and it helps to have all three. the smarts will give you the ability to understand difficult things. The initiative (and/or patience/persistence) will compel you to work through times when things seem idiotic, or particularly challenging. And you have to be curious to find new things, because the industry is so faddish. People try this, or they try that. And as a conscientious developer, you need to pay attention to all sorts of things.

And that can be completely infuriating to many people who don't like that.

But back to Justin and Michael. They reflect a common belief in students that computer science departments fail to keep up with the real world, and while there's cool stuff being done, they don't seem to be doing it, and they feel bad that they lack these skills. But in particular, they feel the teachers should teach it to them (perhaps for the tuition they are paying, they wonder why they have to go through all the mistakes). But if the profs lack experience in these fields, then they lack experience, and they would be better served trying to find other resources to accomplish the tasks they want to achieve.

If that sounds like an indictment on the way we teach computer science, perhaps it is, but it also reflects the kind of reality of practical software development which flies in the face of the kind of knowledge that universities are used to imparting. Computer science professors are likely to say the only useful information is that which stands the test of time, thus compiler theory, automata theory, algorithms, data structures, are all stuff that seem to stand the test of time despite the fact that most of these subjects are less than 50 years old. In the computer industry, 50 years is a lifetime.

The problem with real world development is that it's not clean and sanitized as it is for computer science courses. Often, many of the real world difficulties are hidden away to give students one less thing to worry about. I recall talking to Jaime and he said that he ended up doing some of the work for a student working on a project because it was hairy, and the student wouldn't be able to figure it out. And yet, that's the kind of tedium real computer programming often involves.

At some point, people have to see it.

So that raises the question. Is Ruby a good programming language for beginners? Is there some suitable subset that can be taught that, while it doesn't fully show the power of the language, still covers enough of the important topics?

Many students struggle with programming, which is why a sanitized version is often given to students. And of course, they have other courses, which is why stuff is sanitized.

Conference 0.1

Ah conferences. They are ultimately undone by the fact that hotels haven't much changed the way conferences have worked in years. The biggest change has been getting wireless connectivity to handle the masses that need Internet all the time. Indeed, for a tech conference, that's what people crave.

Here's a typical situation. You have three rooms, or maybe four, and one talk is really popular. The rest are so-so. And wow, just no place to sit. It's hoped that all talks are about the same.

There's no simple way to redistribute the seats, no polite way to deal with a talk that seems boring, no way to flip from talk to talk to talk, short of seating everyone in their own room, with their own close captioned feed, and then they would lack the immediacy of talking to the person up front.

I was sitting in a talk by Andrea O. K. Wright. I'm sure she's an accomplished developer, and it helps to have a woman in a field that seems utterly dominated by men, but why oh why can't she be a better speaker? I know it's a lot to ask that someone be both a good coder and a good speaker, but it can really help.

I was sitting listening to a talk by Nathan Sobo. I mean, he's talking about frickin' parsing! It seems to be a solved problem, except he has a way to move beyond regexp (though to be fair, most parsers can do more than regexps--it's composition that's probably more interesting). In any case, he was a compelling speaker, did a live coding session that didn't suck.

Did I mention I was sitting by Obie Fernandez. Now, if you had asked me yesterday, nay, even this morning, who the hell Obie was, I couldn't tell you. To be frank, I can't even tell you now, except that he had his book sitting out titled The Rails Way (I own The Ruby Way so I know this book was out there, but had not thought it was published). Obie had his unique John Hancock on his nametag, his schedule, and so forth.

This is Rubyconf for you. You can bump into "famous" folks and not even know it, and they might think (haha) that they are similarly sitting by someone famous, except I happen to like sitting up front.

Sometimes I feel, when I attend these conferences, that it's a little like attending a physics conference. I feel like an outsider, an interloper. I don't play enough with Ruby nor Rails to really get what I need to out of these conferences. These conferences aren't particularly aimed at beginners (though David Black, he of the Amish beard, made a game attempt, but realized that running a free-form session, as appealing as that may be, really requires a bit more direction--I could probably suggest a way to do it. Instead, it turned out to be a crowd that wanted a break from the talks, and were pretty knowledgeable. A tough bind to be in, I'd say).

But then, I get to meet some folks that are learning Ruby too. The real problem is that these conferences range the entire gamut, from Ruby power coders to Ruby wannabe coders, and no one knows which one is which.

I see some of the same faces I saw at Railsconf at Rubyconf, even though it's a trip from one coast to the other. Apparently, DHH doesn't attend Rubyconf, though it would be a bit of a sin not to have Railsconf without DHH. I suspect he's given a pretty penny to show up.

Anyway, back to the theme. We deal with the most modern of technologies, but it seems so much easier when it's bits. It's so much harder when it's physical sites. Even if people have great idea for how to improve presentations, the implementation is the bottleneck. It costs too much, and so hotels simply don't bother. They already find it painful to switch 300 dollar televisions for 1000 dollar televisions. The furniture that the TVs fit in simply can't accomodate 32, 40, 46 inch televisions, and they aren't prepared to ditch that too.