Mort, Elvis, Einstein, and You

Here’s a pretty good article on the philosophy of mentoring. It’s about testers, but I think this advice applies to all facets of software engineering.

http://www.testingreflections.com/node/view/6283

If the majority developers were less insular, less selfish and better communicators then I believe this statement would be more easily achievable – from my experience an agile\xp\scrum environment helps to address these issues.

In agreement with ‘thatguyintheback on December 2’ when he talks about money being the motivator. But if you’re in the 80% group, remember that you will undoubtedly be fired and your work will be outsourced to some third world programming company. Why not? They can do exactly the same ‘boring/repeating’ stuff as you/me/we, but much cheaper.

Attention Management: I do my best work when allowed to work as Elvis. And I’ve written some real crap when forced to work as either Mort or Einstein.

Its always context that decide what function or behaviour that is needed to set a particular type of persona.
I am not suprised people try to fit one typ of persona into a simplified categorical organized subtype.

The risk by doing so which rarely is talked about is the following,
what happens when the programmer identifies with the stereotype?
And that will happen…count on it.

If they are in the 80% category that could be devestating but the 20% who do the same can create earthquakes and run satelites into the surfaces of Mars due to a progam error.

Its been popular to try to map peoples behaviours into some category, what isnt taken into acount is how we shift behaviour due to context.
The test profiles a lot of companies buy are working as far the enviroment is stable, when it shift due to economical or other variables they profiles goes out the window.

BSOD :smiley:

I’m fortunate, and I know it. Nearly half of my 20 developers fall into the 20% category. As for the others, I regularly share links to resonant Coding Horror, Bug Bash, Worse Than Failure or even Shark Tank articles, hoping to plant the seed of interest in habitual skills improvement.

Great article… and you are indeed correct, software development is more than a job, it is a craft, heck it is a life!! But my fear is that the better we get, the smarter all the IDEs get, then would there not come a time when even the average Joe can fire up an IDE and write software? And when that happens, where will our craft end up in?

Both of Jeff Atwood’s posts on this regard aren’t nearly as inflammatory or as divisive as they probably ought to be. Let’s be blunt and clear:

In the profession of software development, almost nobody has any idea what they are doing.

Jeff is right that all of us who are talking and thinking about it are the only signs of hope, but there’s a Coding Majority out there that just fires up editors and clickety-clacks away without another thought. No other technical profession in the world is so utterly dominated by unwashed amateurs. No other class of systems is as unreliable and poorly managed as software. We’ve got to do something about this. The question is, what do we do?

I personally teach new developers at a University course and try to impart a sense of scale and responsibility. What do YOU do? How do we stop this madness?

I think we need social networking sites for programmers where the “wisdom of the crowd” can elevate everyone’s standards. I’ve become more active on IT Toolbox but its focus is too broad for developers. I’m also blogging on ASP.NET Weblogs which is a good way to participate in the ASP.NET community. I attended an Amazon web service developers meeting in Second Life just to see how that might work even though I don’t use Amazon web services. Yesterday I found some YouTube videos on Visual Studio 2008.

“Earlier this week I wrote about The Two Types of Programmers.” Rather, I’d say you commented on someones’ post about ‘The Two Types of Programmers.’

“a good start would be to stop calling it a craft and start calling it an engineering discipline!”

Software development is not an engineering discipline. I have a B.S. in Aerospace Engineering, and I develop Web applications for a living. “What is the best way to implement this feature in my application?” is an open-ended question. There is no criteria for judging the validity of any solution vs. any other solution. As long as that is true, software development is not engineering.

When you have a constantly changing ecosystem, there is no stable base on which to build an engineering discipline, i.e. “I know the melting point of aluminum will be the same next year” vs. “I have no idea what features will be supported next year in my programming language of choice.”

Engineering would require a frozen microprocessor architecture, a frozen language, a frozen compiler… and obviously that will never happen. So, software development will continue to be a craft.

I have worked with each of those 3 kinds of developers and I can say the Einstein programmer can be JUST AS BAD AS MORT.

These guys can talk in circles and re-invent the wheel at every turn.

I see the three types of programmers more used to picture how Visual Studio is going to be used, not to indentify who is up to snuff and who smells of lazy.

I have bad news. Earlier this year, I taught a community college, a course called “Enterprise Web Development”. I created the curriculum myself, and we looked (briefly) at scripting, standards like XHTML, CSS, databases, security, privacy, etc.

In a class of 24, only four students made anything more than a token effort. Some genuinely had difficulties (one older guy still couldn’t, by the end of the course, use PHP to connect to a database and extract some data from it). Most, though, were apathetic and wanted only to be spoon-fed information that they could regurgitate for tests.

Meanwhile, the administration’s only concern was having as many students as possible pass; the dean asked me politely (but firmly) to change the 40% project into a 40% in-class lab. And to make the final easy to offset the low (class average about 70%) marks.

In other words, the situation isn’t getting any better.

These threads show a good deal of misunderstanding about those personas. These are not Mort=dumb, Elvis=average to good, and Einstein=genius. The original intention was for them to encode styles of problem solving. I’d claim the fact that they became so closely attached to languages was a great disservice, and a mistake.

Mort explores, is opportunistic, and trusts in the tools and solutions provided until betrayed by them. Elvis balances understanding the tools or solutions provided with making progress, and typically trusts with some verification. Einstein must understand before commiting to solution or tool, and extends no trust to something until completely understood. You can defintely have a ‘dumb’ Einstein, and a smart ‘Mort’.

It’s difficult to have an Einstein that does not want to learn, but it is possible. A lack of trust and understanding doesn’t necessarily come with an open mind to learn. Also Mort’s trusting of tools doesn’t always mean a lack of curiousity, just that it is not necessarily directed at the craft of programming.

It should also be clear that different problems will have a most appropriate problem solving style. It’s good to have a paranoid untrusting Einstein if you are working on a critical component. It’s better to have an exploritory Mort if you are working on a fluid, changing environment, where a fast solution is the most important priority, or quick prototyping is king. Most software developers will reject the last statement claiming a careful pragmatic approach is always better than a ‘fly by the seat of your pants’ approach. Most software developers also don’t run a business and fail to balance the business concerns with the software concerns.

The only saving grace to the current misunderstanding is that most people self categorize as Elvis or Einstein. At bare minimium that means they might understand their needs are not the same needs as Mort.

Glad I read this Jeff,

You went a long way to clarify from the first article. Thank you.

Good stuff as always. I agree with the assertion that you made the 20% sound like the elite. When, in fact, neither is holders of the keys. What I am warry of is technology for technolgy’s sake. And the pushers who think they are making the world a better place by blindly pursuing that latest technological fad. I may be a very small contingent, but I still deliver a lot of DOS-based servo controllers.

It comes down to footprint, and ‘good enough’ I an deliver an entire OS and application in less than 1MB. My servo loop is running at 10khz with a 1usec jitter.

I’ve been oh so tempted and have even tried to port my stuff to RTAI, and of few other flavors of real-time, but I always end up concluding that DOS works better.

I’m not blind, and I know DOS is not keeping up (though I love my FreeDOS and swear by it), but this is again, an example of not upgrading for technology’s sake. Windows and Linux can’t do what I do easily from my DOS prompt with my little Borland and/or Watcom C++ compiler.

I work with a lot of junior programmers, and most insist are using the latest version of C#, which is fine, but if you are using the compiler to sum a long line of numbers, where is the benefit?

The two main factors should govern tool use:

  1. Familiarity
  2. Efficiency

Familiarity is obvious, though some times we need to ‘invest’ in learning new stuff. The benefits of the new tool outweight the learning curve.

Efficiency: now this one can be interperated a bunch of different ways. Is the programmer’s time more important than the CPU cycles used, or drive space? Licenses, overall cost. Even beauty can be considered.

My take is that most shoe-horn familiarity into justification of a course of action without considering efficiency. This somewhat defines that line of 80/20 to me.

Thanks for the post
Doug

If programmers tools (aka. APIs, languages, frameworks, etc…) were perfect, we could all happily be morts and still get the job done.

Because this will never happen, we will always have to either depend upon an Einstein or be an Einstein ourselves.

I mean, not just a place like worsethanfailure.com where people show other’s bad code to be bashed up, but where, “in an ultimate act of humbleness”, you post your own bad code in order to improve yourself as coder more than to improve the code itself.

Isn’t this what open source is about?

Please stop writing posts on this stuff. The comments are recursively depressing.

If we can’t talk about it, or do anything about it, what do you propose?

Unlike Electrical Engineering, there are no barriers to entry for software developers. You can spend 5-6 years earning a masters in Computer Science, only to work under someone who never even considered going to college.

That’s exactly it. So it’s incumbent upon us, as peers, to cultivate the people that are good, and pray they eventually outnumber (or at least counteract) those that aren’t.

Thanks for clearing that up Jeff. I really am amazed at the people who presume to get by without curiosity. They really are unreachable. But that is the American attitude. The majority of us expect to have everything handed to us just because we are Americans. Between that attitude and our President’s war mongering, the face of America is changing for the worse right before our very eyes.

Don-- maybe we should roll programming back a thousand years…

http://www.codinghorror.com/blog/archives/000446.html

First impression: So what, what’s wrong with that?
This clarification and the prior article are interesting, it makes us think about what we are.
I believe many people reacted on their first impression, like if it was wrong to be part of the 80%. And there is nothing wrong with that, I believe.
Software development is now an industry. As in so many other fields, there are “leaders” and “followers” (and many other qualifying terms in between, I dont’t like black or white, positive or negative judgements, especially when speaking of people …)
The so-called 80% “() know exactly enough to get their job done”. Great! Who can blame them of having the competencies needed?

More than a century ago, while Gustave Eiffel was building the Tour Eiffel, his colleagues engineers or architects were building conventional housings, offices, straight bridges and train stations.
Not so interesting, nobody can recall their names, etc Was it useful? Of course yes! Family lived and still live in these housings. Perhaps many of these architects were passionate about their jobs too, go figure? At least, there was nothing wrong with that, these architects were needed. And we still need both types of them …