Does Mort Know We're Talking Smack About Him Behind His Back?

0 comments suggest edit

And if so, is he angry? I wondered this after reading Is Object Oriented Programming The Problem? in which Don invokes the programmer archetype, “Mort” to make a point.

Who is Mort?

For the uninitiated, Mort is a creation of arrogant software developers (I don’t exclude myself from this group) used to lump together and define the quintessential “average” developer. Actually, “creation” isn’t the correct word. In the same way that Design Patterns are discovered, not created, Mort is a discovery. He’s a Developer Pattern (If nobody has that term trademarked, I hereby claim it for myself).

Mort isn’t the only Developer Pattern I’ve seen in the wild, but he is the only one famous enough to go by a single name (think Pele, Madonna, etc..) that I know of. Other Developer Patterns that come to mind…

The Bleeding Edge Liberal
This one thinks Release Candidate software is so five minutes ago. Alpha and Beta software only, baby. The Conservative Curmudgeon
This one still promotes punch cards as the solution to all software woes and believes things were better when a bug was best taken care of with a can of raid and a fly swatter. The Trainer
The last time this one wrote a try/catch block was during the lesson on exception handling. The True Believer
This one thinks that for any problem, there is one and only one correct solution. This person also believes there is only one true programming language and that language is…

I digress. As I stated before, Mort is the prototype of the average developer. He works 9 to 5 in some cubicle farm of a large bureaucratic corporation (perhaps he’s a government employee), and he rarely if ever attends a developer conference or discusses software development outside of the workplace. He almost certainly is not a technical blogger.

We worry for Mort.

Yet, so many advanced developers, trainers, language designers, get their panties in a tussle over how Mort is doing and what he is capable of. Is Mort switching from VB to VB.NET? Why not? Is Object Oriented Programming too difficult for Mort to grasp? How can we make it easier on poor old Mort?

What I’d like to know is just how many Morts are there out there? For example, if you ask the average developer if he or she is Mort, will you get an honest answer? I may have been in the mold of Mort when I first started writing software, but I most certainly am not Mort now, right? Right?!

Does Mort even know he’s Mort? Or is the “other guy” always Mort. There’s not much you can do for Mort unless Mort takes the first step and admits that he is indeed Mort. If Mort is defined as the “average” developer, we can’t all be “Not Mort”

Personally, I’ve never given Mort much thought. If Mort indeed does exist, I personally don’t have much interesting working with Mort. I’d much prefer working with a Jane or Juan. As a manager, my whole job was to hire someone better than Mort, though I can’t claim I was always successful.

From my experiences with Mort-like developers, Mort is capable of writing crappy code in any language, OO or not. Alot of times, this was due to what I call intellectual laziness. “Hmmm, this seems to solve the problem, I’ll move on.” Mort spends very little time reading up on the tools and platforms he uses to get his job done. Call it, programming via Intellisense. We all do it at times, and I wouldn’t want to program without it, but when Intellisense is the only means of learning an API, that’s a problem.

Mort cares little for learning about tools outside of the IDE that can help him be more productive and less error prone. For example, Mort won’t write automated unit tests, instead settling for a quick spot test, leaving the broken code for someone else to discover and fix.

Sorry Mort, but you know it’s true.

What is the Problem?

In any case, in answer to Don’s question, Is Object Oriented Programming the Problem?, my response is no, it is not. The problem is that developing Software is an extremely complex and difficult task. Engineering a sky-scraper sounds like a complicated task with many moving parts, but consider that the number of moving parts in a typical software project makes building a skyscraper look like building a small tower using Duplo blocks.

The problem is complexity and how to manage it. I am afraid there are no easy solutions. Consider that 80% of the time spent in all software projects is during the maintenance phase. This phase is typically where the use of procedural languages causes pain if not done well. If a developer cannot understand OO principles, then that developer will also very likely have trouble with writing modular code in a procedural language. Using a procedural language requires even more diligence due to its lack of language constructs to enforce encapsulation, etc…

I don’t know about you, but the thought of working on a legacy classic ASP project makes me cringe (I usually turn down such projects). I’ve seen reams and reams of spaghetti code using a procedural language (some of it written by me as a brash youth) as to make me dry heave. This is not to say a large system can’t be built well using procedural languages, just that it takes much discipline.

Of course, OO is not a panacea. Equally bad code can be written using an OO language, especially when OO principles are not well understood and you end up with procedural code anyways, or really bad OO-like code. But there’s hope! With well factored OO code, with a light sprinkle of Design Patterns where appropriate, sometimes the internal workings of a class or system are well enough encapsulated that you have a chance of maintaining a large system. There aren’t as many variables to juggle in your head at any one time.

Are DSLs the Solution?

So where do Domain Specific Languages (DSL) fit in? The history of programming languages is the story of using abstractions to hide complexity. Assembly is a abstraction layer on top of the 0s and 1s that make up binary. C is an abstraction on top of Assembly. SmallTalk, C#, and Java uses objects to abstract details of lower level languages… and so on.

Are DSLs the next level of abstraction? It would make sense, but they may be hard to deliver upon. It was thought that Component Technology would deliver the building blocks to make Mort’s life easier. Simply put the blocks together like a big Lego structure and voila! You have a working payroll system! In this scenario, your DSL is simply composed of Domain Specific components (building blocks) and your general purpose language is used to glue these blocks together.

But alas, it is never so simple as that. The problem is that although we can divide the world into distinct “Domains”, the variations within a Domain might as much as between Domains. For example, the differences between Chinese dialects are more than the differences between any two Romance languages in Europe.

The result of such variation is that you will rarely find just the right DSL for your situation or the DSL will itself be not much different than a general purpose language. One solution to this problem is to build a custom DSL for your business. But I wouldn’t task Mort with that project. Make sure your Joel’s are working on that one. Perhaps with a custom DSL, Mort has a chance to make a very meaningful contribution, without causing too much damage. If he’d only show more of an interest in building better software.

So What is the Solution?

This may come as a surprise coming from a technophile like myself, but I don’t think that we’ll find a technical solution for Mort. Even if DSLs prove themselves to be the next great abstraction level for software development, we’ll just take the extra productivity gains produced to do even more with software. We’ll build larger and more complex systems, and as we’ve learned, complexity is the problem in the first place.

Rather, I think the solution is to quit pandering to Mort with our condescending paternalistic attitude, and instead demand better from Mort. If the capabilities of the average developer truly is as bleak as many make it out to be, we shouldn’t just accept it, but work to raise the quality of the average developer. “Average developer” should describe an acceptable level of competence.

We have to realize that Mort is responsible for a lot of important systems. Systems that affect the general population. When I hear of recent cases of identity thefts such as Choicepoint among others, especially those caused by lax security such as using default passwords for the database, I think of Mort. When I read that $250 million worth of taxpayer money has gone into an overhaul of the FBI Case File system, and the system has to be scrapped. I think of Mort.

Given this much responsibility, we should expect more from Mort. So Mort, I hate to say this but software development is not like working the register at McDonalds where putting in your nine to five is enough. I am all for work-life balance, but you have to understand that Software development is an incredibly challenging field, requiring intense concentration and strong mental faculty. It’s time for you to attend a conference or two to improve your skills. It’s time for you to subscribe to a few blogs and read a few more books. But read deeper books than How to program the VCR in 21 days. For example, read a book on Design Patterns or Refactoring. Mort, I am afraid it’s time for you to quit coasting. It’s time for you to step it up a notch.

Mort, Can We All Get Along?

So Mort, if you really do exist, and you recognize who you are, I apologize if I came off as a bit harsh or critical in this post. I wonder if we’re being a bit too arrogant for pigeonholing you. Is the Mort archetype really useful for this discussion?

Perhaps my experiences have been with a sub-Mort, and not with you. I really would like to think the average developer deserves more credit. But from some of my experiences, there are large numbers of just plain bad developers out there. For you, I’d like you to know we’re thinking of you, and we know best. If you’re not willing to step up, then the best thing you can do now is go grab me a beer while we work to solve this problem.

Found a typo or error? Suggest an edit! If accepted, your contribution is listed automatically here.

Comments

avatar

17 responses

  1. Avatar for Scott Williams
    Scott Williams August 2nd, 2005

    Sometimes I think that Morts don't want to fix themselves though. I have a co-worker who rates very high on the Mort, yet despite my best efforts refuses to get any better. I've loaned her some good books and linked to some excellent articles, but she never reads them.

  2. Avatar for bonna
    bonna August 2nd, 2005

    I think it's unfair to categorize this as a developer archetype.

    It's more a IT applicants archetype IMHO.



    The real problem is the fact that everyone with a somewhat university degree and minimal programming experience (I include ppl who studied Turbo Pascal for 2 hours a week - hey look I've made it work - i must be talented), considers him/herself to be applicable for development project.



    It's like "I made cookies, hence I call myself a baker".

    (or the geek version: I made cookies, hence I call myself a webdeveloper ;)



    I saw this at my first job... I started in 2000 - the year before the end of the "Golden Years" for IT people at one of the biggest Belgian dotcom companies , my team consisted of:

    - someone with a master degree in math.

    - someone with a master degree in biology.(a freakin botanist)

    - someone with a master degree in bioengineering

    - 2 "starter" peeps with a bachelor degree in IT.



    They hired these people because they needed the manpower and experienced developers were too scarce and also too pricey.



    Now comes the -DOH- part:

    - One year later this company looses some important contracts.

    (in my case it was the disastrous 6 months period after the 11/9 crashes, but that's not the point...)



    - They had to let some people go... (like 90 peeps of the 160, AND they let them go by 2 each week during a year, only to avoid a legal issue when firing a lot of employees at the same time, but

    that's not the point, again ;)...)



    - They had to pay the university dudes the most, so they let them go first. In the meantime they worked there for 1 year so there CV (resume I think you call it) mentions at the experience section: 1 YEAR PROGRAMMING ASP. (they now call themselves webdevelopers)

    While doing nuthing but rearranging some html and add ASP code to existing webapplications.

    In the meantime dotnet got releases, so they read some dotnet tutorials on the net which results in another CV entry: MINOR EXPERIENCE OF ASP.NET.



    - They did find another job however... there's always a governement branch/banking company with too much money to spend and too little time to conduct a proper jobinterview.



    - I am getting so frustrated that I'm almost forgetting my point here ;)...

    In a few years from now they apply for a job at your company. You'd then better ask the right questions and not look at their resume.



    Keep up the bloggin'!

  3. Avatar for <XSLT:Blog/> Quote of th
    <XSLT:Blog/> Quote of th August 3rd, 2005

    Does Mort Know We’re Talking Smack About Him Behind His Back? Rather, I think the solution is to quit pandering to Mort with our condescending paternalistic attitude, and instead demand better from Mort. If the capabilities of the average developer...

  4. Avatar for Don Demsak
    Don Demsak August 5th, 2005

    Even a couple days later, I still can't believe that you wrote the great response while on vacation in Japan. I agree with a lot of what you are saying here, but I've got to hold out hope that there has to be a way to develop better systems with a lot less work. We can not continue developing systems at the current pace, and still get the jumps in efficiencies that drives the world economy.

  5. Avatar for Haacked
    Haacked August 5th, 2005

    Oh I agree. But looking at things historically, we DO build systems with a lot less work. Think about how much code it used to take to build a windowing app back in the DOS days and how easy it is to do it now.



    Everytime we have a gain in productivity, we have a corresponding gain in demand for our systems to do more. However, from reading a Mythical Man Month, I agree with Fred Brooks that there will never be a silver bullet that gives huge orders of magnitude increases in productivity. It will be a slow hard climb.



    We will continue to make developing software easier, but we'll just end up building more interesting and complex systems as a result.



    Building software is pretty easy even today. It's maintaining and changing software that's hard. Or building software so that it's easy to change. That's where I think Mort fails us often.

  6. Avatar for Jack's WebLog
    Jack's WebLog August 5th, 2005

    What is a mort you say?

  7. Avatar for Rajeev Gopal
    Rajeev Gopal August 8th, 2005

    Said that, Phil, how do you define a Web Developer? What qualities should he (or do you think he should) have? What kind of technical expertise you would expect of a MS Web Developer?

  8. Avatar for Jeff Atwood
    Jeff Atwood August 9th, 2005

    Great entry. This is almost the same conclusion I reached here:



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



    We need to stop paternalizing. Java guys are the worst in this regard, though some of the more zealous C# purists are nearly as bad.



    Instead of wasting time complaining about Mort and VB corrupting the minds of innocent young developers, we should be pulling ourselves up by our bootstraps.



    Similarly, time spent arguing about "pure" OO is better spent instilling a culture of hard work and professional investment, so all developers CAN become talented.

  9. Avatar for Jay Kimble -- The Dev Theologi
    Jay Kimble -- The Dev Theologi February 7th, 2006

    [I started this as a comment on Don's blog and decided it was getting too lengthy for a comment]

    Don,...

  10. Avatar for Java Developer
    Java Developer September 27th, 2006

    Even a couple days later, I still can't believe that you wrote the great response while on vacation in Japan. I agree with a lot of what you are saying here.

  11. Avatar for Morty
    Morty November 22nd, 2006

    "Does Mort even know he’s Mort? Or is the "other guy" always Mort. There’s not much you can do for Mort unless Mort takes the first step and admits that he is indeed Mort."
    I have to admit, im a mort. Im actually the worst kind too. It felt like you were describing ME in your article. I work at a place with way too much money, i have a mediocre IT-degree, and the best approach i know towards something that even resembles OOP, is how to define a function in PHP. None the less, i have buildt enourmous stuff. Full on CMS, Webshops, even digital versions of the punch in card. It all works, and it works rather well. However, thats also where it fails. For when the day comes were someone discovers a bug, or when it needs general maintanance, they will come to me. If i dont work there anymore, i will give a blatant no. If i still work there, i will probably politelly ask my employer if i could rather clean the toilets with my face.
    There's a fair chance that not even the best developer in the world could clean up my mess.
    Don't worry though, i've realised all of this, and im quitting in a few months, so that those who actually know what the hell they are doing can take over - and et paid accordingly.
    M

  12. Avatar for youngin
    youngin March 20th, 2007

    Some would argue that by definition, Mort does not know he's Mort. Furthermore, one could easily extend that and say that even if she knew she was a Mort, she wouldn't respond on a blog she's unlikely to stumble upon.
    Unlike Morty, I don't *think* I'm a Mort, but there is that sinking suspicion that I'm only fooling myself. And if I were fooling myself, than it's only more indication I am a Mort.
    *circles!*

  13. Avatar for Coding Horror
    Coding Horror November 30th, 2007

    Earlier this week I wrote about The Two Types of Programmers. Based on the huge number of comments, it seemed to strike a nerve. Or two. This surprised me, because it was never meant to be the inflammatory, provocative...

  14. Avatar for AndyB
    AndyB December 2nd, 2007

    Sorry but its not Mort that's the problem. Its you. Really.
    See, consider the problem, Mort is an average programmer and he has difficulty learning everything he needs to learn in order to create the quality software you demand. Well, ok, I've got no problem with that... what I have a problem with is that you demand he learns new stuff all the time. I'm sure Mort has gotten to grips with VB6, he knows the tricks and tweaks over time and is comfortable with the language and the IDE. So what do you do? Yes, you tell him all that is obsolete and legacy stuff that makes you heave and that he has to learn a new language.. and framework.. and API... and all the little tweaks and tricks that he needs to make the software work properly.
    If the designers at MS could make a perfect system then we'd be fine, but they cannot. Understandable, creating software is hard after all, and creating architectural systems is hard too, but changing things only makes Mort's life a lot harder. Now, lets say he's had to learn C# (to pick the current flavour-of-the-month) he only needs to forget to litter his code with try/finally/using statements and he's written below-par code. Just like that. So easy, its not surprising Mort writes poor code. So he gets that drummed into him eventually, and he learns about all the other bits of pieces he'll need to know... do you think he'll be allowed to continue writing C# code with the API he's become familiar with? Of course not - there'll be a new design block, or new server, or new framework that he must start using, new 'features' in the system that he'll have to learn to remember.

    Is it any wonder Mort is in difficulty? *We* need to step up to the plate and realise that writing software is about producing business applications that solve business needs, not anything to do with 'technology' and definitely nothing to do with 'coolness'; we need to let Mort (and ourselves) learn to better use what we have, not become n00bs all over again.

    (an example for you: when MS released .NET there was a flurry of evangelical talk about how great the garbage collector was, how nobody would veer have to worry about memory ever again, just let the GC take the strain for you... and then a few weeks ago one of the DARPA autonomous vehicle robots failed the test due to a ... memory leak. Those Princeton PhD grads who created an autonomous vehicle .. are Morts. What hope for the rest of us?)

  15. Avatar for millenomi
    millenomi April 28th, 2008

    @AndyB; I think you miss the point.
    Most of the framework changes that are made are advances over previous situations. We strive because no matter how much the tools seem well-suited, we -- in the sense of the programmers and scientists in the field -- always find areas to improve or challenges to overcome.
    Thus, I feel that it is not unreasonable to demand of a programmer that he or she keep in touch with these advances. They're usually done for a reason, not for some Sadic Scientist's whim.
    About " *We* need to step up to the plate and realise that writing software is about producing business applications that solve business needs, not anything to do with 'technology'", I cannot really understand how you can take technology out of information technology. I agree that systems should not be built out of some new technology just because it appeals to the programmers, but this is no excuse for keeping track of changes and trying to understand why they're occurring. If we didn't, we'd still be programming in COBOL.
    Re: GC, .NET's garbage collector does make it much easier to avoid inadvertently leaking memory. In VB6, if you have a cycle of objects, they'll never leave memory, due to the reference counting that's done under the scenes -- and you'll be none the wiser. With .NET, this is no longer true, because cycles are collected. This does not mean that it's impossible to leak memory, only that it's much harder to do so from programmer code. (Your rebuttal also reveals your ignorance of the gist of the problem: it's probably the underlying .NET virtual machine that leaked memory, not the Princeton code, -- I don't think Princeton PhDs are Morts, nor the virtual machine designers, but the VM was likely written in C and we know how much of a hell low-level manual memory management is.)

  16. Avatar for David Walker
    David Walker April 28th, 2008

    This is what i refer to as "passion for the art of your job". if you don't have that, you are Mort. Though skill is certainly critical, skill is nothing without passion. Give me an average developer - but one who has passion for what they are doing - and i've got a investment worth having on the team.
    As for those that have no passion - even the ones with some skill - (to me they are Mort as well) - we need to stop coddling them. i agree, it's waAay past time to raise the bar so that the average developer is someone we can count on to get the job done - and done WELL. Instead of trying to accomodate Mort, we need to be showing Mort the door ... before our clients show us the door.

  17. Avatar for K
    K October 6th, 2012

    Hilarious!
    I always thought the Morts were exactly who moved to .Net, either out of boredom (I've skinned all I can skin, form over function baby), poor reviews (I'll move to C# and the boss won't be able to read and criticize my code), or forced march (Dear Diary, we are now a .Net shop).