Beyond Elvis, Einstein and Mort: New Programming Stereotypes for Web 2.0
What 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.
About Newsletter
Great and fun!
Now all we need to do is get Microsoft to retire Elvis, Einstein and Mort and replace them with these guys :)
Kirk
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.
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.
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.
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.
\
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.
So what is the label for an "agile developer" having all the good quality habits and working ethics and what are they?.
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
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
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.
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.
Maybe a list of what one does want, as well?
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....
AH! I totally forgot Agile/XP guy!
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 :-)
Uninterested is simple and straightforward..
But most smart asses try to tell it differently and screw it up!
By,
Know-it-Ali
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.
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.