Scott Hanselman

Beyond Elvis, Einstein and Mort: New Programming Stereotypes for Web 2.0

July 6, '07 Comments [38] Posted in Programming
Sponsored By

iStock_000002842776XSmallWhat are the skills that a Programmer needs?  Internal to Microsoft there's a old meme about the three types of programmers. There's Elvis, Einstein and Mort.

Einstein is like employee #3 at your company, very smart, possibly socially a little off, he knows the owner of the company personally and probably wrote the original program you sell. Elvis is a late-hire, he wants to rewrite the whole thing in WPF/E and speaks a lot at user groups. Mort is the rest of us.

These are simplistic labels, and oft-overused; I'm as guilty as anyone in using these too often. But, hey, labels are fun and (when used for good) help us understand the ecosystem.

Here's some other more useful stereotypes labels... 

Copy/Paste Guy

One resume we received said  "I'm the best at my company at copy/paste...I can copy/paste code better than anyone." This guy can't code at all. Doesn't understand computers, programming, literally has trouble finding the door to the building in the morning. But, he can Copy/Paste like a ninja.

Google Gal

"I don't know how to do it, but I know that someone has already done it. Solving this problem means finding someone else's solution." It'll take an hour either way. An hour of doing it, or an hour of searching. This person will always choose searching over doing. Sometimes the search will go on for days, trying different keyboards, perhaps building incredibly complex queries "IUnknown AND Cheese BUT NOT Gouda" in order to give Google more insight into what the problem might be.

MSDN Trivia Person

I can't remember what my wife and I had for dinner last night, but I can remember the internals in System.Web.UI.WebControls.ObscureNamespace. This programmer has no concept of the larger picture, the ultimate goal, but they know that the class you're using is marked obsolete in early betas of the next version and you had better stop using it or else! They also tend to know more than IMDB about movies.

Visio Boss

This boss "used to be a programmer" and "played some with .NET" when it first came out "and didn't see anything revolutionary" during the first five minutes and hasn't given it much thought since. They tend to spend time in Visio, almost to the point that they are frustrated you're not compiling directly from their "Visio Source." They also get +2 Charisma against DBAs if they have an English Accent.

Super-Excited Dude

It's new and we need to be doing it. Sure, it's a pre-alpha personal not-for-external use build from his friend in Microsoft QA but seriously, have you seen it? We need to get on board with this before it's too late. To start, we need to send me up to Microsoft for a short 5 week Skull & Bones Meeting Software Design Review where they will teach me how to control my powers without creating a singularity and destroying all mankind with my new-found LINQy goodness. Then it's all going to rock. Seriously. I'm super-excited about the future.

Tall but Ultimately Disinterested Programmer

You can't teach height. This guy (or gal) is so freaking naturally talented it's obscene. You hate him for his skills and love him for his skills. He not only codes well, but also documents well, types fast. Dogs trust him, women want him and men want to be him. He was meant to program. However, he prefers rock climbing/motorcycle riding/some dangerous non-computer-related-hobby so-very-much-more than programming. Hey, it's 5:01PM, can I punch out? A bunch of us are doing sky diving. You wanna come along when you're done with your Halo Deathmatch? So sad. If only he used his powers for good.

Flaming Potato Guy

Hey now, that's not my fault. That wasn't in the spec. Where is the spec? See, there's no spec, how can I possibly be blamed? Talk to QA, they're insane. Truly. Listen, it compiled. It totally worked yesterday, something much be wrong with the Build Server. Freaking .NET, it sucks. Come on, this is clearly a Windows Bug, I mean OpenFile() has never worked correctly, ask anyone.

Ajax Ajax Ajax

So how does Ajax come into the picture in this solution? Ok, and this is where we add Ajax, right? And the request for JSON happens here? Now, is this Dojo or JQuery? You know that God prefers JavaScript, did you know? DHTML is better because it's like HTML, but with a "D" at the front. So, it's more Dynamic.

Used to Do HTML

This programmer parlayed a career typing <table><tr><td> into one typing if(true){}else{} and wonders why that line never runs. A job doing FrontPage turned into one doing Visual Interdev turned into one doing Visual Studio turned into one as Lead Programmer on Super Complex Project v3.

The Premature Optimizer

Never use String.IsNullOrEmpty! Didn't you know that there's a huge bug in the Framework that makes that function kill kittens if you call it on a multi-proc system with more than 4.5 gigs of RAM? Plus, it adds five microseconds of overhead as it accesses eax twice necessitating 4 extra clock cycles. Measure it? Should I have to, it's SO obvious that's inefficient!

Coasting on Charm Coder

It's unclear when this programmer last checked something in, but he or she is so darned clever, so persuasive, so innovative in their designs, does it really matter? They put together amazing PowerPoints, give compelling talks, use just the right sprinkling of buzzwords like "architectural cohesion" and "cyclomatic complexity" that you can't look away.

O(n) "Order n" Architect

Has a chart for everything. "Where's the whiteboard, let me explain..." No matter what YOU do, it won't work, and here's the computer science principle that explains exactly why. No, no, you won't possibly understand it, but trust me, it's true. You see, that's an order-n algorithm and you want to be order-log-n. You see? Here, let me illustrate by writing a perfect QuickSort in F# from memory... 

Mr. Dr. Programmer or Ivy League Dude

"I didn't spend six years going to evil doctor school to be called mister." This gentleman or lady went to a school so exclusive that you may not have even heard of it. You've been published on MSDN? They've been published in Science magazine. You went to community college? Bill Gates was their roommate. You filed a patent? Say, you know angle-brackets? This guy invented them. 

The Open "Sourcerer"

If it costs, it's crap. Free love, free software, no patents, no intellectual property, no big business. Just Solar Panels, Biodiesel and Open Source Software. Works in Windows, codes in .NET, but hates himself for it. Likes to recompile the Linux Kernel during lunch just to prove he still can. Wants to know when the last time you submitted a patch to a public project. Has a man-crush on Miguel from Mono.

The Blogger

Dude! Let me blog that. Can I? I'll totally give you credit. Can you send me the code? Where do you blog? You don't have a blog? Er...OK, how can you possibly code then? I mean, join the conversation, man. Step up, seriously. You've got no juice. I googled for you and found nothing. That's going to make it hard for you to be a good developer. Listen, I'll make you a blog, stop by anytime. You watch, everything will be better once you blog. Coding? Really, who has time, I've got a dozen subscribers that are counting on me.


Who are you? I'm afraid I am probably all of these, except Dr. Programmer and Tall Guy.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web
Friday, July 06, 2007 1:04:59 AM UTC
So as a Tall but Ultimately Disinterested Programmer, what the hell do I do with myself??
gb
Friday, July 06, 2007 2:04:57 AM UTC
Jajajajajajjaa ROLF! At the office all agreed about me being The Open "Sourcerer"

Great and fun!
Friday, July 06, 2007 2:38:05 AM UTC
Very funny!

Now all we need to do is get Microsoft to retire Elvis, Einstein and Mort and replace them with these guys :)

Kirk
Friday, July 06, 2007 3:26:24 AM UTC
Nice, I just started my new job and can already identify a few of these folks there :)
Nate
Friday, July 06, 2007 3:40:22 AM UTC
Brilliant.

Here's another one for you:
Speedy Gonzales
Loves to churn out code, and produces it in prodigious volumes. Managers love him, saying how "productive" he is. Unfortunately, what he churns out is reams of crap. His productivity comes from writing stream-of-conscious code without a thought toward design, and from skipping unimportant stuff like error handling, Other people are left to pick up the pieces and deal with the maintenance nightmare - by then he's on to other projects.
Friday, July 06, 2007 3:47:05 AM UTC
Great post but I had to literally pick myself off the floor with "+2 Charisma against DBAs if they have an English Accent". Too funny and too clever. From one code and RPG loving dork to another, I salute.
Anson Goldade
Friday, July 06, 2007 3:51:45 AM UTC
Kevin: Every time we run across code from a person like that we call it a (insert first name)-turd. For example, if i were that coder, and you came across such evil code, you would declare it a Mike-turd.
Friday, July 06, 2007 5:11:45 AM UTC
I never thought I suffered from multiple personality disorder until now. So I Googled it and copied and pasted this ("a mental condition whereby a single individual evidences two or more distinct identities or personalities") from Wikipedia. And I'm super excited to diagram my own programmer types as a complex type from which other types might be derived thereby extending my life and usefulness. I'll blog about it after I get the chart optimized in UML form from which I can generate code stubs. But before I do that, come on over to my office and let's work through all of this on the whiteboard to be sure we're all on the same page. We can do it, just me, myself and I.
Friday, July 06, 2007 5:57:47 AM UTC
How about "bored and overworked" - gets the entire week's worth of work done by lunchtime on Monday, spends the rest of the week reading news, posting to blogs/forums, or organizing and enjoying his/her ipod music/movie collection. When the boss comes around, he or she looks really busy, acts all stressed out, and complains about how big a workload they have. But always leaves for the day at 5pm sharp, or 4:30 if nobody's looking.
Tara
Friday, July 06, 2007 6:16:37 AM UTC
Here are a few more I've seen:

The stwaynge coder (often named Wayne)

Often breaks the build with new and unfathomable bugs after a minor code change such as incrementing a version number prior to a release build.


OOPaholic

The dateless wonder who can do nothing but objectify everything around them (ex: woman) and looks for any reason to include copious amounts of objects within even the simplest code base.


The bored one

Gets the week's work done in the first four hours of Monday morning, and then spends the rest of the week reading blogs, daydreaming, and listening to music on her ipod while making sure to look plenty busy and always complaining how busy their workload is and how they don’t have the time to take on any new projects.


Stitch-in-niner

Fights to have hours or even days of design reviews and considerations over numerous seemingly trivial decisions that could potentially maybe one day, possibly make a new version or adding not yet conceived of features trivial... provided the proper decision is made now… maybe.
Friday, July 06, 2007 6:17:56 AM UTC
Bah... it seems that Tara beat me to posting one of the ones we'd discussed.
Friday, July 06, 2007 6:43:19 AM UTC
Compulsive Declarer
Must. Use. Declarative. Approach.

Spends half a week to automate a process that manually done takes less than ten minutes.

Writes 4200 lines of semi-auto-generated, badly documented, mostly untested ASP.NET controls and business layer code to avoid directly emitting a single HTML tag.

Works an entire weekend without sleep to prove you can use msbuild instead of omake to automate builds with Rational ClearCase.

Can't wait for LINQ to get out of Beta to start eliminating every loop in the entire production code base.
Henry Boehlert
Friday, July 06, 2007 6:43:38 AM UTC
I guess I have been all of them at one stage or another. I wonder if these are all like some kind of stages of Programmer Evolution.
Friday, July 06, 2007 6:56:41 AM UTC
Seminal work Scott, with a couple more edits, this will need a quicklink /blog/personality :)

As to the hot potato guy, dealt with a few of those. If you find one of these in your company, fire them, if you are assigned on a project with one of these, switch projects. Seriously, in a land of lazy managers, these guys are career suicide. They'll make your projects fail and lazy managers may just assume it's your fault. Doesn't matter if they're right, they think they're right and they're the manager, therefore they ARE right and you're looking for a new job :( (I just recently started a new job, slightly before the lid at my other project blew, after I left, hot potato guy started dumping on another consultant, so the managers started catching on, but he's still working there)

I'd also like to add
Not quite there guy
This is the guy who figures that he can synchronize disparate databases by making all of the primary keys into BigInts and then hashing them together as if they were regular Ints in order to distribute them. Cause goodness knows that whole SQL Server replication thing is just an excess load of garbage, data synchronization isn't THAT tough. He then writes data access code that "supports transactions" but doesn't really cover the corner cases, so that the program fails on every 10th database call as a result of excess open transactions. Code investigation reveals that he has merrilly decided that some method calls should check for an existing transaction but others don't, yet others just start a new transaction every time. Of course it works "most of the time", just don't try and Add and Delete in the same transaction, it'll think you actually have 4 transactions.
Friday, July 06, 2007 7:58:58 AM UTC
I seriously thought you were describing me in most of these. Except for the Tall guy. That sounds like Eric Gunnerson who tends to write about his biking regimen more than coding these days. ;)
\
Friday, July 06, 2007 9:22:43 AM UTC
lol - this is a really funny post and so true!

I think I might be a mix of 'Tall But Ultimately Disinterested Programmer' and 'Blogger', but I do have one or two characteristics of some of the other types of people.
Friday, July 06, 2007 10:06:50 AM UTC

So what is the label for an "agile developer" having all the good quality habits and working ethics and what are they?.
Metaphor
Friday, July 06, 2007 10:18:47 AM UTC
Not-The-Sysadmin,-Honest Guy

Technically a developer, but seems to spend a large percentage of his time looking after the company's servers and network. Writes tools to automate systems management tasks and maintains a huge script library intended for everyone but only ever used by him. Occasionally gets dragged back to Dev Land and made to work on the company's actual product.
More likely to be found in small companies than large.


^ That's me :/ Probably not so much once we get ourinfrastructure shifted over to racked servers and VMware stuff, though.

Oh, who am I kidding? There's ALWAYS more sysadminning to be done :P
Alex Davidson
Friday, July 06, 2007 11:14:03 AM UTC
How about the Really, we should have used Agile Guy

This is the guy that is happy to point out that the latest Bug|Defect|Project Failure|Reactor Core Meltdown could have been avoided if the team had only been using TDD|Pair Programing|Agile buzzword of the day. Granted he didn't do anything to help with the current problem, and hasn't ever really been on an Agile project per se, but all the books|articles|blog posts talk about just this sort of problem. He also tends to read a lot of Martin Fowler when he should be coding.

Not that this is me or anything....well not much....at least not on Sundays
Friday, July 06, 2007 12:19:37 PM UTC
Well, I'm tall. Not sure about the rest of that description.

Otherwise, I fear I may very well have come to be Casey's Really-shoulda-gone-Agile guy. A sort of "DRY YAGNI" guy, if you will.
Mike Woodhouse
Friday, July 06, 2007 2:01:51 PM UTC
Friday, July 06, 2007 2:05:05 PM UTC
I've worked with most of these, and while I won't claim to be the world's greatest coder, I did once ride my motorcycle to go rock climbing, and then attempted to debug replication problems once I got to the top where I had Blackberry reception again.
Friday, July 06, 2007 3:42:14 PM UTC
Maybe it's just me but most of these aren't funny. A lot of the traits you are attempting to poke fun at are ones i would want in a developer.
ChristianD
Friday, July 06, 2007 3:59:26 PM UTC
Christian - I'm not sure I'd want Coasting on Charm Coder working for me...

The "Tall" Thing doesn't literally mean TALL - It's a reference to "you can't teach height." Meaning, when someone is Tall, they are naturally talented. Whether or not they use that talent is another issue.
Friday, July 06, 2007 4:13:16 PM UTC
I think I feel like each of those on different days...and yeah you should've included the TDD/Agile wannabe guy.
Friday, July 06, 2007 4:28:28 PM UTC
Heh funny. Lots of what you don't want, though. :)

Maybe a list of what one does want, as well?
Friday, July 06, 2007 4:45:36 PM UTC
Interesting - I guess I'm close to the tall personality... but you can't really label yourself that, can you? Who's cocky enough to say they're "tall" (i.e. the freaking naturally talented, it's obscene)?
However, the other stuff fits pretty good: documenting probably more than I should, types fast, and I do prefer anything non-tech outside of work to tech. I really doubt the women want him and men want to be him part (but hey, I'm married so I really don't care about the women wanting him).

But I don't get the "ultimately disinterested" part. You can be talented and obsessive about some stuff (c'mon, if I don't document stuff I just really won't remember all those little details later down the line so you just have to document it!) but still have other interests outside technology in your life without being disinterested, can't you? I try to be that way. I've got kids and a wife that I'd rather spend the time with.... there's always the in-between time at work to read up (blogs like this) and keep up to speed.

PS - I am actually quite tall...

Did something change with the Live Comment Preview for Firefox? It seems more responsive now....
Friday, July 06, 2007 6:46:18 PM UTC
Chris - Ya, we're working to speed the preview up.

AH! I totally forgot Agile/XP guy!
Friday, July 06, 2007 7:32:41 PM UTC
Scott,

did you know that there *is* a problem with String.IsNullOrEmpty...

IT was discussed some time ago , I now tend to not use it anymore.
Does that make me a premature optimizer :-)
Friday, July 06, 2007 9:03:24 PM UTC
"Used to Do HTML" made me both laugh and cry. I've known far too many people with those qualifications.
Sunday, July 08, 2007 6:36:42 AM UTC
Disinterested = Un biased.
Uninterested is simple and straightforward..
But most smart asses try to tell it differently and screw it up!

By,
Know-it-Ali
Sunday, July 08, 2007 10:23:20 AM UTC
lol ... i always love these "label" posts. this one rocks as well. i wouldnt say though that i lie in any of these categories.... yet :p. great post anyway;)
Monday, July 09, 2007 4:25:48 PM UTC
Scott very interesting post. I just don't know where I fall, but then again how a person perceives himself is not always right.
Brandon
Thursday, July 19, 2007 10:13:33 AM UTC
Lol, I think I am a hybrid of Agile/XP guy (wannabe) and AJAX^3 guys. Fun post :)
Monday, July 23, 2007 3:31:53 PM UTC
this is so funny!
Tuesday, July 24, 2007 4:03:17 PM UTC
Really funny post, I like it and laughed a lot,


So what is the label for an "agile developer" having all the good quality habits and working ethics and what are they?.


Sorry buddy, they are not exist in real world. They're some fictional characters who are generally referred in some fictional books which talks about TDD, agile development and similar rocket science related subjects.
John Ther
Thursday, July 26, 2007 11:19:28 AM UTC
My observation is that most of these represent some form of imbalance, including the original 3. With the exception of the Ivy League Guy, each represents an overabundance or tendancy toward some virtue, which leads to a lack of overall virtue. Ideally, a developer should be focused on both efficiency and productivity, seemingly opposite goals. A developer should plan and design, but not to the extent that it impedes progress or prevents innovation during the development process, which should also be held in check, but not completely. A good developer should stand on the shoulders of giants, learning from what others have done before, but should build on them, not borrow from them. Open source software has its place, but has plenty of problems as well. Some software should be open source; much should not. Copy and paste is useful when followed by "understand and extend," but only as an occasional tool. Visio and similar tools are good for communication, but often overused. Ultimately, good programming cannot be taught; it can only be learned, and that should remain an ongoing process. Writing software is always a balancing act; finding the point of balance is a skill that must constantly be honed. The greatest danger is satisfaction, which ends growth. The human brain and intuition remain the most powerful tools we can avail ourselves of, but identifying true intuition requires a disciplined process of confirmation.
Tuesday, July 31, 2007 5:18:36 AM UTC
I think the corollary to the open sourcer is the Microsoftie. The one who believes you buy the entire Microsoft stack, and the only question is how many licenses of each product you need.

To anything that appears on the web: "You can do that in Sharepoint 2007." Never mind that you have to code it anyway.

We must upgrade to the latest Office- because the buttons are bigger, and they have hidden many of the more useful ones. And you can't change it easily.

"Vista is wonderful- we must upgrade now, no matter what the cost." Even though it has limited driver support like Ubuntu and OS X- and requires a recap of all of our workstations. Never mind that Windows XP stuff which never crashes. Also, I heard the Windows Server 2008 beta is out, let's install that on our production servers.

IIS is superior to Apache as a load balancing reverse proxy, despite the fact that it doesn't do that. (I can almost hear the microsofties out there pouncing on that one because there is a wacky version of IIS that sort of does- even though the majority that I have met don't know what a reverse proxy is since microsoft didn't bundle it with IIS.)
Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.