Stevey's Blog Rants

Random whining and stuff.

Thursday, July 27, 2006

Get Famous By Not Programming

Here at Whiny Blog Central, we frequently receive email from Alert Readers who tell us: "THANKYOUSOMUCH for you're latest blogg entry! Youve saved my BABY from becomeing an evil manager or a VIM user or whatever! Heres a personal check for $500!" And we can appreciate that sentiment, although we wish it would come from people who realize holding the check up to their screen so the email program can "see" it doesn't actually send anything to me. To us, I mean. We mean.

It is nice to hear that some people like what you write, though, since anyone who does anything noteworthy in the world will have critics, and criticism can really sting, even if you have a thick skin, or even a cephalothorax like some bloggers out there. But then, the critics are often critical because your writing stung them in some way, so I guess it's an eye for an eye in this writing gig.

Almost Famous

Earlier this week, my coworkers and I were astonished and more than a little amused to hear that I'm one of the ten most famous programmers in the world. Yup. That was the rumor, anyway. (Some versions of the rumor even had the number right.)

See, this guy named Jarosław "sztywny" Rzeszótko (he also goes by "Stiff", even though it clearly contains a vowel right there in the middle) sent me a nice email about six weeks back, saying, well... here's exactly what he said. You be the judge:

Hello!

I'm an 18-years old programmer wannabe from Poland and I run a blog in my native language. As an interesting (at least to me) experiment I'm trying to ask some questions I always wanted to ask the programmers I admire most, but never had the occasion to do that... The question and answers would be later translated, and published in Polish on the weblog. If You don't have time, find the question stupid, whatever - just answer a part of them, or simply throw out the email and forget that I bothered You. So, here we go:

(10 questions)

Because his mail was nice (not to mention flattering) and his questions looked interesting, and also (I think mostly) because he'd offered to translate it into Polish, it piqued my curiosity. So I told him I'd give it my best shot, and answered them.

Jarosław's idea was brilliant, of course, and I see a lot of people are kicking themselves for not having thought of it. Because who knows how much goodwill he used up from the seven other actually famous people who responded. There may not be another chance like that one for a long time.

But he didn't tell any of us who the other interviewees were, nor did he set any expectations around how much to write in response. In retrospect it's somewhat amazing that he got eight replies, but it's certainly no surprise that they varied so much in their tone and level of detail. We didn't know what to write, nor who we were writing for.

Seven famous people, plus me. Pretty cool interview.

So how did I get in there? I haven't done anything amazing.Wyvern's pretty cool, but you probably wouldn't know, since (a) it's mostly young teenagers playing it, for the most part, and (b) I haven't published most of the source code, since I'm frankly embarrassed to have anyone see how bad it is. The game only works as well as it does because I spent seven years of my life on it, NOT because I'm a great programmer, or even an especially good one.

So I'm guessing Stiff didn't really choose me for my programming ability. What could it be, then? HMMMmmmmm... I'll give you two guesses.

Yup, you got it, on the first try I'll bet: it's because I'm a damn loudmouth. We're all using the same media here in BlogLand, but my volume is turned way up. "Blah, blah, BLAH," I'm known to yell semi-incoherently. BlaaaaAAAAAahhh!!! Gets their attention every time.

You know how after you watch a new X-men movie, you come out afterwards and ask whoever watched it with you which superpower they'd want if they could be an X-, ah, -person? You do ask, right? C'mon, you do. I know you do! Everyone does. Which superpower would you pick? Invisibility? Flying? Unstoppable momentum? Walking through walls? Telekinesis?

Well I'll bet you a dollar you'd never have picked 'Loudmouth Jerk'. But I guess beggars can't be choosers.

In any case, evidently due to my loudmouth superpowers, I got to be in the list, and my friends laughed at me a lot, and that was that. But it was fun.

Thanks for including me, Jarosław!

Famous programming heroes

Do you have any programming heroes? I do! Oddly enough, though, I've never really seen much of their code. Most of the famous-ish programmers I respect have actually made their impact on me through writing, and it's usually just prose, with maybe a little code interspersed.

There are programmers I admire who've built things that I use a lot. But when I try to come up with a list of programmers I admire (and I specifically mean people I don't know personally), I find they almost always fall into one (or both) of just two categories:

People who wrote a useful programming language, an operating system, or an especially important framework.

People who wrote a really neat book about programming.

Any sufficiently flexible and programmable environment — say Emacs, or Ruby on Rails, or Firefox, or even my game Wyvern — begins to take on characteristics of both language and operating system as it grows. So I'm lumping together a big class of programs that have similar characteristics. I guess you could call them frameworks, or extensible systems.

I've developed a personal distaste for the word "framework" because it's used to describe so many technologies that are unbelievably cumbersome and overspecialized. You know which ones I mean. But realistically, framework might be the best word for the kind of system I'm talking about. Unlike libraries, frameworks are hard to learn and hard to reuse, so for any given framework you probably love it or hate it.

If someone builds a library that I find useful, I might notice their name, but I'm not likely to remember it or think of it when I think of great programmers. Ditto for most applications or utilities, even highly useful ones. I'm thankful, sure, but that's a far cry from eternally grateful.

But when someone builds a framework — any environment that we live in and actually enjoy programming in — and there's one person who's chiefly identifiable as the primary author of that framework, then I think we tend to admire that person, and unlike other programmers, the person starts to become famous.

Even if they're a crappy programmer.

Not that we'd really know, because how often do we go look at the source code for the frameworks we use? How much time have you spent examining the source code of your favorite programming language's compiler, interpreter or VM? And by the time such systems reach sufficient size and usefulness, how much of that code was actually penned by the original author?

Sure, we might go look at framework code sometimes. But it just looks like, well, code. There's usually nothing particularly famous-looking or even glamorous about it. Go look at the source code for Emacs or Rails or Python or Firefox, and it's just a big ball of code. In fact, often as not it's a big hairy ball, and the original author is focused on refactoring or even rewriting big sections of it.

I suppose an individual who manages to get a big system built and marketed and adopted by lots of people can't really be a crappy programmer, by definition. Some people (e.g. Richard Gabriel) have argued convincingly that writing crappy code has evolutionary advantages. I know it's easy to despise someone who's written obviously ugly, unmaintainable code. But our industry is still figuring out how to do software engineering properly, and a lot of very important code was written before modern software engineering ideas were widely disseminated.

And even then, sometimes the schedule just gets you. Given a choice between having significant impact by getting something out the door, and spending a bunch of time up front writing every line of code to be beautiful and high-performing and robust, which would you pick?

I'll pick impact. You can always fix the code later.

I know on my last project (at work), I wrote a lot of quick and dirty code. I mean, it's not terrible, not the kind of code that you'd fire someone for. We have coding conventions that I adhere to, and I tend to organize and document and refactor my code pretty conscientiously as I go, out of habit. But it's been this incredible six-month race to the finish, and I've made a lot of decisions out of expedience that I knew I'd have to revisit later, stuff I wouldn't exactly be proud to show off.

Anyone who looked at my real-life code, without knowing anything else about me, would probably conclude that I'm an ordinary programmer. And I'd guess that if you looked at random chunks of code from your favorite framework, written by your favorite programmer, you'd conclude that it had been written by mortals.

So what makes a programmer famous? Apparently not programming! Or at least not their actual code.

You can try the experiment yourself. I'm actually curious. Go through the list of programmers you admire most (people you don't know personally), and decide why you admire each of them.

I think you'll find the same thing I did: each person either wrote a framework you like, or they write about technical topics really well (or at least in a way that keeps you coming back for more.)

Get Rich By Not Programming, Too

Can programming make you rich? Well, let's figure it out: think of all the fantastically rich programmers you know. Not a very long list, is it? And did they get rich by virtue of being incredible programmers?

Tough question! In practice, virtually all the wealthy programmers you know (or even know of) got rich via startups. They were early employees at a company that became phenomenally successful, either through a public IPO or through a high-dollar acquisition.

Were these early-bird programmers great, or just lucky? It's not easy to separate the two, because their quality as programmers (however you choose to measure that) probably had at least some direct impact on the company's ultimate success. But some may have been average (or even bad) programmers who wound up in the right place at the right time. I know I've seen it happen. And some successful programmer-entrepreneurs might attribute their financial success to (their own) great programming ability, when it may be wholly due to their keen business acumen, or to their great decision-making and execution skills.

Most programmers aren't rich. It's a good job, no question, and it pays pretty well in most places. But most programmers are a far cry from "wealthy". Is it even possible to get rich by programming?

Sure, if you take a risky pay cut, and you pick the right product or service, and you bust your ass like nobody's business for at least 12 to 18 months, and you do a great job of marketing your product, and you find a buyer, and you do a great job of negotiating, and you get a little lucky. If all those things happen, you can get rich as a programmer.

But we didn't list "be a great programmer" or "write great code" in there anywhere, did we? They may not be essential ingredients. If your code just barely works, then it's good enough. A startup that manages to get acquired doesn't have to have had great code; they simply had to either establish a lead in a new market, or put on a damn good road show.

If not rich or famous, then what?

I've spent a lot of time thinking about improving my productivity, and advocating in my blogs that engineers should work to improve their own productivity, skill set, and knowledge base.

But what do those things really get me? Apparently it's not going to make me rich -- certainly not on its own, anyway. And it's not going to make me famous: a small amount of code (something that thousands of people could look at) isn't going to be impressive, and a large amount of code won't be digestible.

So why bother getting better?

Well, there's personal satisfaction, I guess. It does feel nice to be able to crank through stuff quickly. It feels related to why I prefer biking to running -- the scenery changes faster. But if you're more the type who likes to sit on a bench and admire static scenery, then staring at the same function for six days might be more rewarding for you.

And personal satisfaction just blows compared to being filthy rich. Right? Well, they do say money can't buy happiness, but every time someone's tried to buy me some happiness by giving me money, it's worked on the first try. Never fails, in fact. So I think "they" may be full of it.

I love programming, don't get me wrong. But I'd love it even more if I were a fat old dragon sitting on a big pile of gold, because then I could buy a zillion-inch monitor and work on programs I like, rather than the (only occasionally intersecting) set of programs that my boss tells me to work on.

In the meantime, I keep working on improving my skill set, on the off chance that my skills will actually matter, should the ideal startup scenario ever present itself. And it feels nice to learn new stuff, at least after you've gone through the pain of learning it.

Until then, all I really have of my own is my Mouth of Great Volume, which I'll keep on applying in my blogs so I can continue to reap the benefits of being mistaken for someone famous.

Saturday, July 01, 2006

Wizard School

It's hard to believe it's only been eleven years since they opened the first Wizard School. I hear they just opened new campuses in Singapore and Istanbul. That's, what, sixteen or seventeen locations now? And enrollment is already backlogged five to ten years at the new campuses. The money involved just defies the imagination. Mine, anyway.

In retrospect it seems pretty obvious. Who'd have guessed they'd make so much money, though? We were all there, all programming in the same industry, but somehow the two founders saw an opportunity there that the rest of us missed.

I think it's worse than that, actually. I mean, I thought it was a joke when I first heard about it. Didn't you? But I'm such a late adopter. I didn't know about Napster, not really, not until they were being shut down. I didn't buy a DVD player or a CD player or an iPod until they'd been out at least six or seven years each. Stuff like this always feels like it happened overnight, but I guess they've been building to it for a quite a while.

I mean I'd heard about the Wizard Academies, sure. But it was this subculture, this thing interns and high school kids were buzzing about, should they go to college or wiz school, blah blah blah. I wasn't really paying attention. Then suddenly it was this mega-phenomenon, growing faster any educational institution in history.

It's not just that we didn't think of it. Face it: we would have scoffed if someone had suggested the idea. C'mon... "Wizards"? It sounded like someone was just jealous of J.K. Rowling. Especially the more you hear about the campuses.

Some people have been mailing me lately, random people asking me if their kids should go. It's expensive. Way expensive. Tough choice to make, even now, with Wizard Academy grads making anywhere from a quarter million to a million a year, while the rest of us plod away in 5-figure territory. I'm not exactly going to make that decision for them, but I threw together some notes — most of it old hat for anyone who hasn't been living under a rock — to help them make their decision.

I'm dumping my notes here until I think of a better place to put them. For now, I can just forward this stuff to anyone else who asks.

None of it should be new to you.

Why Not College?

It's still an honorable thing to get a Ph.D. I think that'll hold true for another twenty years, at least, because people like to hold on to their traditions. And even an undergrad degree in CS can still get you a job. If you can't afford the Wizard Academy, or you can't pass the entrance tests, or you just got on the waiting list too late, then a CS degree from a good university is still probably the best way to prep for a job in the tech industry. It's not as if the Wiz Schools have killed CS at universities. Not yet, anyway.

Besides, CS degrees are changing now. A lot of the more progressive universities have been overhauling their CS curricula as fast as they can, in response to the Wiz Schools. I mean, my God. The Wizards are coming in with significantly higher computer science scores than the CS grads, and theory isn't really what the Wizards are known for.

Heck, the wiz schools themselves are the newest fad in research departments (sociology and education departments, mostly) across the country — all over the world, even. Everyone has different hypotheses as to why Wizards are so damn good. Nobody seems to know for sure. But they are good, that much at least is indisputable. And they're in unbelievable demand now.

You hire a Ph.D., it's hit-or-miss. Some of them are brilliant. But then some subset of virtually every educated group is brilliant. The problem is that the notion of a Ph.D. has gradually been watered down for the last century. It used to mean something to be a Doctor of Philosophy: it meant you had materially advanced your discipline for everyone. Von Neumann, Nash, Turing — people like that, with world-changing dissertations, they just don't happen that often anymore, at least not in CS. Well, they probably occur at the same frequency, but it's one in a thousand at best.

Instead, what usually happens is a bright young Ph.D.-to-be chooses a school based on expedience: finances, or location, or parental pressure. There might be a dozen or so advisors to choose from, and the department as a whole has only one or two really big, prestigious areas of focus, areas for which the school is known (and hence funded). So if a kid goes to a school that does a lot of X, chances are pretty damn good the kid's going to do her Ph.D. thesis in X. But it's probably specialized to death, and the kid will wind up working for years on some tiny slice of almost-nothing: little prototype mobile doodads that track forest monkeys or something. And the kid will lose faith, stop hoping their thesis will ever mean anything, and they'll go through the motions until their advisor pities them and lets them defend.

I'm not saying it's a rubber stamp. These kids have to work hard for their Ph.D., and a lot of them never quite finish. But too often they finish without having written more than a few hundred lines of code in the past five years. Or they've over-specialized to the point where they now think Big-O is a tire company; they have no idea how computers or computation actually work anymore. They can tell you just about everything there is to know about SVM kernels and neural-net back propagation, or about photorealistic radiosity algorithms that make your apartment look fake by comparison. But if you want a website thrown together, or a scalable service written, or for that matter a graphics or machine-learning system, you're usually better off hiring a high-school kid, because the kid might actually know how to program. Some Ph.D.s can, but how many of them is it, really? From an industry perspective, an alarming number of them are no-ops.

The bigger, better-known companies — Yahoo!, Google, Amazon.com, Microsoft — those guys can spot a dud a mile off, over the phone even. Credentials don't matter, not strictly even for Wiz Academy grads with eight OWLs and five NEWTs or whatever the hell they're called. (I still can't believe how closely they copied Rowling's design.) What matters is what you know, and what you can do, and a Ph.D. laureate in CS these days, even from a "top" university, has about an 80% chance of failing interviews at one of these companies.

It's still honorable to get a Ph.D. But it's no guarantee of a job. Not a high-paying one, anyway, not at a company with a bright future. It is a lot cheaper than Wiz School, though, and it's easier to get in. So I'd consider it a pretty good fallback option.

Wiz School Tour

Well, you know all about the campuses; you can't watch the news for two hours nowadays without getting some sort of virtual tour, or hearing about some company's stock soaring after they won the first-round draft picks from the Nassau campus, or Kauai, or Chardonnay. They're half Google and half Hogwarts, seven-year boarding schools complete with Great Houses, robes, the whole works. Wizard Schools. Just like you'd expect, I guess.

They're always located out in remote, beautiful areas. No expenses spared. Full-time staff, like you'd find in a hotel or a cruise ship. Rich kids and scholarship kids alike, but only the brightest. Reminds me of Ender Wiggin's Battle School. Not just anyone gets to go. You've got to be a prodigy, a kid genius, and not just at math or science. They look for kids with spark, with personality, and their interviews are famous for being both gruelling and quirky. Interviews can last for up to 2 weeks. There's no guesswork involved; they keep you there until they know everything about you, or at least enough to know if you're Wizard material.

Just getting invited to the interviews is a big deal, something to brag about; being selected probably qualifies you for any early-entrance program at any school in most countries. Only 20% make it to the third day, and only one in fifty interviewees gets an offer to attend the school.

I hear they're giving more and more scholarships now. At first it was all rich foreign kids: kids whose parents couldn't get visas, due to the stupid U.S. immigration regulations at the time, which were later relaxed after the big Brain Drain hit. That's another story, of course, and one you already know about. But it explains why there were so many kids from countries like Indonesia and Thailand and Hong Kong in the first graduating classes: insanely brilliant kids from rich families who wanted the best education money could buy, and who were willing to take risks and be early adopters for what even today sounds like the craziest stunt (or scam) ever pulled.

It wasn't crazy, though, and it was no scam. Those first kids that graduated, seven years later, all of 18 years old, they're the youngest crop of CTOs and senior architects and company founders our industry had ever seen, and maybe that any industry had seen since, I don't know, the Gold Rush. Wiz Kids. A well-deserved pun.

Are They Really Better?

Oh, man. You have no idea. A fifth-round draft pick (companies bid for draft picks, of course; you can't just hire any Wizard Academy grad you want, and the process is now independently regulated to ensure fairness) comes "stock" with a skills lineup that would make any hiring manager drool uncontrollably. Probably with fear, since a kid like that will obsolete anyone with the title "hiring manager".

They type 140 to 160 words a minute, almost soundlessly, and always bring their own keyboards. They disdain mice, although recently I hear they've been using pointers attached to their foreheads. No idea how they control them so easily — makes my neck hurt just to think about it. Lots of practice. Hours of drills. Start 'em young, and they all say it's a snap, just like you'd tell your grandmother that using a mouse is a snap, when it's pretty obvious it really isn't.

They know their discrete mathematics and CS theory cold, of course, although I hear it's at the expense of more traditional disciplines like trigonometry and physics, unless they choose those subjects as electives. They're in class for 8 to 10 hours a day, and their homework load is at least equivalent to a full-time college degree, but they're starting it all at 11 or 12 years old.

But all that aside, they're probably most famous for their coding. Just plain, basic coding. I mean, we all think of ourselves as good coders, but the Wizards do it as easily as we breathe air. While a "normal" programmer is puzzling over design patterns, or trying to simplify complex code paths, a Wizard is blasting out code at the rate of hundreds of thousands of lines a year. And it's all amazingly high quality. Numerous studies have shown their code, on average, to have 80% fewer bugs and at least 100% (2x) better performance than the industry average. It's safe to say the Wizards graduating at the bottom of their class are still safely in the top 1% of industry grads.

Of course, blasting out hundreds of thousands of lines a year is missing the point. If a Wizard is given complete technical control over a project (which is usually the smartest thing to do, but companies are rarely very smart), the Wizard will typically write in one of the super-succinct "folding languages" they've developed on campus, usually a Lisp or Haskell derivative.

They call them Folding Languages because they write code that writes code that writes code... Wizards swear by it, and there's no question that they can produce amazingly compact, fast, clean-looking code. But 90% of the devs out there claim they can't read it, and whine a lot about it to their bosses. Given that most companies can only afford a few Staff Wizards, the Wizards are usually forced to capitulate and use Java or C++. They're equally comfortable in any language you throw at them, though, and if you force them to use a verbose language, well, you get what you ask for. It still amazes me that companies are bragging about how many lines of code their Wizards have produced. Potential startups take note: your competitors are usually idiots.

Will My Kid Be Normal?

Good question. It's not exactly "normal" to be a millionaire by age 22. But if you're worried that your kid is going off to join some strange Scientology-like cult, just go visit the campus. Online, of course. You can't actually get onto one of the campuses unless you're press, family, police, a guest speaker, or a Personage of Note like, say, the President of some country. They don't want you bothering the students. But you can take online tours, and they're all quite amazing, using technology largely developed at the campuses themselves. And it's pretty much what you'd expect: a carefully monitored boarding school. The robes and Wizard stuff is mostly there to make it fun, and to imbue it all with a sense of seriousness that always comes of wearing uniforms.

The professors are uniformly entertaining and brilliant. They're always seasoned industry pros, usually famous names. Everyone knows Larry Wall as the Head Wizard of the Aspen campus, the first campus they opened on U.S. soil. Most young folks don't realize Larry was the inventor of a language called "Perl" that was really popular in the 1990s and 2000s, up through 2010 or so. He was independently famous in his own right before taking the job, but these days he's famous entirely because of the Headmaster gig. He's won the Dumbledore Award for three consecutive years, so he's obviously popular with Wiz Academy students worldwide. And I hear Jamie Zawinski just left his S.F. club to take the second-in-command and Tools Master position in the Christchurch campus. Wanna be a prof at Wizard School? Gotta be famous, funny, proven, brilliant, and seriously committed to the students' success.

The kids do more physical education and activity than at most other schools. No, it's not Quidditch — that would be a neat trick — but they have soccer and golf and archery and horseback riding, and they're graded on physical fitness and physical dexterity. They also have to learn a musical instrument and a significant amount of music theory, as the schools claim it makes them better programmers and designers. They all do tons of electives in the arts and sciences. And they all come out fluent in at least 3 languages (one of which must be English) chosen from a list of nearly 100 possibilities. The students are pretty well-rounded by just about any objective standard.

In addition to their math, computer science, and unrivaled coding skills, Wiz Academy grads all seem to know how to draw. At least I've never known one who couldn't. They're not all great artists, of course, but they all receive a substantial amount of training as artists, and seven years of practice at anything, even part-time, can really add up. This puts them at a natural advantage when they're creating UIs and documentation, since they rarely need to wait around for a UI designer. Or at least they can whip up a sketch that a full-time designer or artist can use as starting material. The rest of us programmers have to pantomime what we want until the artist finally draws something that looks like what we (vaguely) had in mind. I'd never have guessed basic drawing skills would be so useful, but now that I see Wizards using them all the time, I've had to change my mind about it. I think we all have.

All the Wizards I've ever met personally have seemed nice enough. I'm sure you can find a few who are arrogant jerks, but you can find people like that anywhere and everywhere if you look hard enough. Most Wizards I've known have been ordinary, nice people. Sort of like Olympians, or Cirque du Soleil performers, or any other elite group of people who've trained since childhood to do what they're doing as adults. They're just people, and a lot of their personality is probably a function of how well you raise them before sending them off to boarding school.

What's Next for Wizards Worldwide?

Wizard Schools are the darlings of the press. Who knows how long it'll last. The idea that started as a half-joking blog entry in 2006 has rapidly turned into the biggest phenomenon of the past decade, with no end in site. It's possible that Wizard Schools could eventually obsolete "regular" schools, with lower-end competitors (Fairy School? Somehow I doubt it...) stepping in to siphon off unmet demand.

It's equally possible that traditional schools will continue to borrow ideas from the Wizard Schools, in much the way that big companies circa 2006 started copying Google's philosophy of massages, free food, and other amazing perks in order to attract and retain top talent. That stuff was innovative back then, but it's fairly commonplace nowadays. Once Google had proved it worked better than frugality, everyone else had to follow suit: economics demanded it. Everyone who didn't got the second-best (or more commonly, the nth-best) employees.

One thing is clear: regardless of whether you think the Rowling-style environment is strictly necessary for producing Wizard-quality grads, the enrollment backlogs have shown that there's a huge, worldwide craving for improvement. People were only going to college because there was nothing better out there. But universities aren't really there to produce superstar programmers; their primary job is research, not education, and at least until recently they hardly focused on the students at all. Some profs even considered it beneath them to teach undergrads; it's no wonder so many CS students were graduating without knowing the fundamentals of their discipline: compilers, operating systems, algorithms, computation theory, and other key areas. Let alone Unix, the Web, and the tools of the trade.

Now that the Wizard Schools have proved the market exists, it's hard to imagine that competitors won't appear. Right now it's hard to get first-rate professors, since of course they all want to go off and teach at the existing Wizard Academies. But with a suitable thematic marketing twist, or a sizeable investment from a charitable billionaire, just about anyone could become the next hot education destination.

I'll tell you this much: I'm sending my kids, if they can make it in. In fact, maybe I should start a Wiz Academy Prep School... I'd better not tell anyone about this; it sounds like an idea worth going after. Yeah... I'd better look into it. There are an awful lot of people in this world who care about improving their skills and knowledge, and they want to do it as fast as humanly possible.