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:
  1. People who wrote a useful programming language, an operating system, or an especially important framework.

  2. 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.

BlaaaaAAAAAahhh!!!

18 Comments:

Blogger Kurt Christensen said...

I agree with your ramblings, although by chance I happen to have one counter-example - John Carmack of id Software. The first Quake really was an amazing technical achievement (real-time texture-mapped 3D graphics done in software that looked good on a Pentium 75?!?). And if you look at the source code (which you can download for free), it's some of the prettiest, easy-to-follow C code I've ever seen. And aside from a few interviews, Carmack hasn't written smack.

6:30 AM, July 28, 2006  
Blogger Derek said...

Since you asked,

- Donald Knuth;
- Bjarne Stroustrup;
- And to a lesser degree, Kernighan and Ritchie.

7:48 AM, July 28, 2006  
Blogger David said...

"big hairy ball"? The formal name: Big Ball of Mud

9:19 AM, July 28, 2006  
Blogger Zeljko Dakic said...

You are so right and I love you for it, even thought you are not that great programmer.
Programmers focus on their code being great and perfect, great enterpreneurs, with programmer background focus on getting product on time.
I don't think that getting XX$ or XXX$ (I crossed actual figures before posting)per hour for what you do, even without world wide recognition is that bad deal after all. Only few other professions make as much money as we do. And lastly any programmer can recognize great code when he see's it.
Thanks for writing, it brought up some good points.

Regards,
Zeljko

9:19 AM, July 28, 2006  
Blogger David said...

In addition to being erudite, entertaining, and having a loud mouth (Thank you!), your audience understands and agrees with your point of view (mostly). You can not lead people where they are unwilling or unable to follow... Unless you have a goon squad to back you up. Are any famous programmers coercive?

From "Stop, Hey What’s That Sound": "hurray for our side"!!!

Are you influencing the evolution of computer science, or reflecting it?

You want to change the world? Create a main stream alternative to "early von Neumann". Please.

10:00 AM, July 28, 2006  
Blogger Sebastian Wagner said...

> And aside from a few interviews,
> Carmack hasn't written smack.

Well, he has published quite a bit of technical material in form of .plan updates. Those probably helped a lot with getting famous in coder circles, but I agree the primary reason must be his phenomenal success and constant stream of stunning work.

10:34 AM, July 28, 2006  
Blogger Phil said...

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.)


The only person who breaks this rule on my list is why the lucky stiff. But then again, he breaks all the rules.

10:43 AM, July 28, 2006  
Blogger dfghdfhdsgtsdgsddghjg said...

Heh, my list of favorite programmers is rather narrow, as I'm not much of programmer.

Programmers I adore/appreciate the existance of:

Steve Yegge - Wrote wyvern, which satisfied years of rpg itch. Also, his blog rants are both funny, way over my head and as best as I can tell, true. It's like when someone plays peek-a-boo with a baby, each time is simply hilarious and enlightening, even if I have no idea what is going on.

Walter Bright - Created the "D" language, which as best I can tell is better than C++, easier to write in and is just as fast (whatever people may say about computers getting faster, those same people need to realize not everyone has a couple hundred $ computer, especially in other countries... I despise java because of this :\).

The masses who create BZFlag - Best arcade-like FPS. Quick, easy to learn, hard to master. More like real time chess.

7:28 PM, July 28, 2006  
Blogger AL said...

>from *becomeing* an evil manager or a

becoming not becomeing. Typo

12:07 AM, July 29, 2006  
Blogger milkchaser said...

Most programmers are indeed wealthy, but perhaps don't think of themselves that way. I consider making 2 to 3 times the median income (which is around $33K in US) to be wealthy.

6:56 AM, August 02, 2006  
Blogger Lexx said...

Hi!
Man, you ARE getting famous. Did you read THAT?

4:29 PM, August 07, 2006  
Blogger Unknown said...

Interesting parallel here:

A mathematician's reputation rests on the number of bad proofs he has given. - A.S. Besicovich, quoted in A Mathematicians miscellany, 1953

Pioneering work is often clumsy.

9:15 AM, September 28, 2006  
Blogger taw said...

When I was reading the article, I felt some sort of enlightenment.

I'd go even further than you - writing programming blogs is the best way of becoming a famous programmer.

First reason - blog are usually named after their authors, so unless your blog has a weird name, every regular reader immediately knows who you are.

On the other hand most people who read books and use software don't have any idea who wrote them.

Blogs are a lot easier to write, and a lot easier to popularize than books. They also seem to generate greater feeling of "connection" between the reader and the autho .

So if you have a popular blog on programming, named after you, then you're guaranteed to be a famous and respected programmer.

Becoming famous by writing software is much more difficult. Let's say that you somehow managed to some write very popular software. Let's say that you somehow managed to make people associate the program with you. That's even more difficult and has more to do with marketing than programming. How many people can name author of libc on their system ? But somehow everyone can name author of 2% of just another reimplementation of Unix kernel.

Even then, when people use your software and know who wrote it, you're as likely to be hated as respected. If someone considers you author of some program, they will intuitively blame you for all faults of the program (for their completely subjective definition of "fault"). If the program is very faulty (few big systems aren't), the most you can achieve is infamy.

It's hard to tell whom are you going to hate. For example I intuitively consider Bjarne Stroustrup a Saddam Hussein of programming for C++ massacre of programmers. I know he's a smart guy, and he didn't mean the mess he caused, but it feelings rarely have rational sources.

I used to consider Larry Wall and rest of the Perl band programming geniuses, but then they committed one of the most unbelievable screw-ups in history of programming, and decided to abandon Perl 5 and make Perl 6 a reimplementation of everything from scratch. Everybody with half a brain could have told them in 2000 that it doesn't have a snowflake's chance in hell of succeding. If it wasn't for Pugs, they wouldn't even have pre-alphas.

I still have this deeply intuitive respect for Yukihiro Matsumoto, David Heinemeier Hansson and whoever came up with Smalltalk and unit testing, but this feeling can easily be broken.

And I somehow have a lot of intuitive respect for people who write programming blogs that I find insightful. For me Steve Yegge's blog provided a lot more enlightenment than any other (high volume helps a lot, as do similar attitude). Paul Graham's and Joel's were also pretty insightful, as were many posts by dozens of bloggers whose names I do not remember. This feeling somehow doesn't get weakened if most of the stuff on a blog is irrelevant or even plain stupid (Wasabi ...). I guess that's mostly because I can read only good posts and ignore the bad ones, with programs or books it's closer to all-or-nothing and good parts cannot usually be used without also using bad parts.

5:29 PM, October 07, 2006  
Blogger notitle said...

I'm not rich yet, but last three months have been VERY profitable (quit my job, working online now, long story...)

SO If you want to get rich then

1. Don't buy "Get Rich Quick" programs

2. Don't go to school forever

3. Do get a mentor

4. Do take a time management course

5. Do buy "money making strategy" ebooks ( ie from http://www.MillionDollarScience.com )

6. Do take occational risk

7. Do believe that you can earn massive amounts of money - I know I did!!

6:01 AM, October 09, 2006  
Blogger Jason R Briggs said...

> Well, geez, that seems pretty broad. We
> don't bother to go verify most of the
> stuff we know (or think we know) — does
> that mean we're all really superstitious?

My psych prof never told us chicken stories. He did however give us two weeks advance notice on a sex lecture.

That lecture theatre had never been so busy. There were people sitting in the aisles (most of whom weren't studying psychology and had never been to a psych lecture in their lives).

Thus proving that not only are people really superstitious, they also have sex on the brain.

J

12:30 AM, October 13, 2006  
Blogger epb said...

Great post: thought provoking, erudite, and so "crystal tower". It has spawned a good deal of discussion at our company.

Not all companies can or ever will be google, some will be successful, some not. At the heart of the successful is an A player team that sets the bar for performance and innovation. That is the common thread.

The process wogs will do what process wogs do: create derivations and permutations of methodologies that add the next widget to the 'process leatherman'. Process after all is only a tool.

4:54 PM, October 17, 2006  
Blogger Unknown said...

Did you check the anagram server before you said that EGOMANIA ITSELF was the only two word anagram of agile manifesto?

Thought not...
Still all those that are have EGOMANIA in it.

Nevertheless interesting thoughts.

7:59 AM, November 28, 2006  
Blogger Phenix2013 said...

Excellent post dude. Just love your insights. Keep on ranting dude!

4:24 AM, June 04, 2007  

<< Home