For those of you not familiar with the term “Mort,” it comes from a user profile used by the Devdiv team. This team has created imaginary “people” that represent key market segments. They have talents, and goals, and career paths. An the one that developers love to bash is poor Mort.
I like Mort. I have hired many folks like Mort. Mort is a guy who doesn’t love technology… he loves solving problems. Mort works in a small to medium sized company, as a guy who uses the tools at hand to solve problems. If the business needs some data managed, he whips up an Access database with a few reports and hands it to the three users who need the data. He can write Excel macros and he’s probably found in the late afternoons on Friday updating the company’s one web site using Frontpage.
Mort is a practical guy. He doesn’t believe in really heavy processes. He gets a request, and he does the work.
One fellow who I know, and who worked with me on a project here in Microsoft (and who reads this blog) once told me that he considers himself “a Mort” and was quite proud of it. He introduced me to CruiseControl. I already new NAnt and NUnit, but he showed me how CruiseControls adds continuous automated testing to the mix. I loved it. You see, my friend was a programmer, but he was also Mort. He believed in getting things done. He was no alpha geek, to use Martin Fowler’s terminology. (Yes, I know that Martin didn’t originate the term, O’Reilly did at MacWorld many years ago. But he repeated it, and he’s a pretty important guy).
My friend had taken a typical “Mort” point of view. He is a really good programmer. He could write fairly decent C# code and his code worked well. But what made this guy “better than your average bear” was the practical point of view that he took to his work. He believed like I believe: technology is a tool. It is like any tool. You can use it too little or too much, but the point is to use it well.
The world needs MORE people like Mort. In fact, with the movement towards mashups and web 2.0, the world will soon be taken over by people like Mort. And I couldn’t be happier. Put architects and BDUF designers out of work! That would really shake things up.
Most of my open source friends either are a Mort or know a few, because the underlying philosophy of Mort is a big part of the open source and agile movements: People come before Process. Solving the Problem comes before negotiating the contract.
So when I got this reply to one of my posts from Sam Gentile, I have to admit that I was really confused. He starts by quoting me and then provides his feedback.
>In this response to Martin, Peter argues eloquently for including tools in the toolset that support ALL developers, not just Martin’s “alpha geeks.”
I don’t think you are getting that point. MSFT is making tools for Morts (the priority) at the expense of every other user (especially Enterprise Developers and Architects). They have nothing for TDD. And I would further contend that making these tools “dumbed down” has significantly contributed to why Morts are Morts in the first place and why they are kept there. Think VB6 and the disatrous code that was unleashed everywhere. If Microsoft took some responsibilty and created tools that advocate good software design principles and supported them then things would be different.
Wow, Sam. I didn’t know you had so much animosity for the Agile community! Are you sure that’s what you intended to say?
Do you really mean that Microsoft should make a priority of serving top-down project managers who believe in BDUF by including big modeling tools in Visual Studio, because the MDD people are more uber-geeky than most of us will ever be? I hate to point this out, Sam, but Alpha Geeks are not the ones using TDD. It’s the Morts of the programming world. Alpha geeks are using Domain Specific Languages.
I think you are wrong about Visual Basic. As a trend, VB brought millions of people out of the realm of Business BASIC and slowly, over the course of seven versions, to the world of object oriented development. Microsoft, whether on purpose or not, single-handedly drove millions of people into the arms of C# and Java.
Microsoft cares passionately about good design principles. So does IBM and so does Sun. Each of these companies (and others) has one or more dedicated groups of people publishing research for free on the web, supporting university research programs, and funding pilot efforts in partner companies, with the expressed goal of furthering Computer Science. Do NOT underestimate the value that Microsoft Research and our humble Patterns and Practices group has provided to the Microsoft platform community. You do yourself a disservice by making any statement that reeks of that.
VB.Net is object oriented. It is not compatible with VB6. Microsoft took a LOT of community heat for that… much more so than the current TD.Net dust-up. If that isn’t taking responsibility, I don’t know what is. We alienated millions of developers by telling them “move up or else.” We are the singlehanded leaders in the space of bringing BASIC developers up to modern computing languages. NO ONE ELSE HAS DONE THAT. I dare you to find someone else that has forcebly moved millions of people to object oriented development.
Lastly, where do Microsoft’s own add-ons, in the paid version of Visual Studio, actively PREVENT any of the agile tools from working? Give me a break! If an agile tool does an excellent job, and it is free, what motivation does MS have for spending real money to add that capability to the product when it cannot possibly increase the value of the paid Visual Studio product for the people who are already using the free open source tool?
We didn’t add MSTest for the users of NAnt and NUnit. We added it for the poor folks who wanted to use those tool but their corporate idea-killers wouldn’t let them. To be honest with you, we made mistakes. Our first attempt at those tools are flawed, but they are an improvement over the previous version, and I’ve been told that there is further interest in improving them.
Just like Toyota’s first Corolla was a boxy ugly car that bears no resemblence to today’s sleek little sedan, steady improvement is a mindset. It takes time to understand. Toyota is winning, and the reason is the same as for Microsoft. Both companies share a relentlessness of improvement. Slow, perhaps. Steady? not always. Customer-driven? yes. We don’t win by being monopolistic. We win by being persistent.
No one is asking you to stop using the free tools you are using, ever. If those tools continue to improve faster than Microsoft’s attempts (something I expect) then you have won the “uber-geek” for the platform, not us. Thank you. Keep it up.
Nick had another follow up this morning on the agile thread: Tools for Mort Nick has a more positive
Hey Nick
Thank you for the high praise.
Can I link to this post for my own personal marketing?
Also, have you seen the new buzz phrase for TDD? Pretty much, they just changed the name from Test Driven Development, to Behavior Driven Development.
It’s an NLP experiment that I’m looking forward to seeing fleshed out.
Long story short, the problem with TDD is the word "Test"… *WAY* too much baggage, and charge on that one single word"
Consider:
"Testing your code is a good if you’re a new programmer"
"Our department does testing at the end of a project … if there’s time"
"I’m a developer, I don’t get paid to do tests"
"As a tester, I believe that most developers couldn’t write a good test if their lives depended on it"
Here’s the two links that I think are the most concise summations of BDD.
http://behaviour-driven.org/Introduction
http://behaviour-driven.org/GettingTheWordsRight
>Wow, Sam. I didn’t know you had so much animosity for >the Agile community! Are you sure that’s what you >intended to say?
What?? Where? Where do you see that in the post? Do you see Agile people as what we would call "cowboy coders?" By tools that advocate "good software principles" I mean TDD, DI, IOC and all the things we do in the Agile community. I know you to be a smart reasonable guy – how on earth did you twist this post into something I never said??
>Do you really mean that Microsoft should make a >priority of serving top-down project managers who >believe in BDUF by including big modeling tools in >Visual Studio, because the MDD people are more >uber-geeky than most of us will ever be? I hate to
What are you talking about? Have I EVER advocated BDUF? Please, you read my blog. BDUF is NOT a good software practice. What you call Alpha-Geek is very diferent than what I call Alpha-Geek. My definition is not people into big design but knowledagble skilled developers who do many of the practices like TDD, DDD, etc.
>point this out, Sam, but Alpha Geeks are not the ones >using TDD. It’s the Morts of the programming world. >Alpha geeks are using Domain Specific Languages.
Baloney. Most of the Morts I know and see Drag and Drop and hit F5 to "unit test" and don’t do TDD. Prove it.
All, in all, either we have very different definitions of the terms, but you appear angry at what I have said and have constructed a post that in no way represents my positions. In fact, I view this post as an insult.
> Lastly, where do Microsoft’s own add-ons, in the paid version of Visual Studio, actively PREVENT any of the agile tools from working? Give me a break!
You’re kidding right? What about TestDriven.Net?
Nick,
I think you may have misunderstood Sam’s intention in his previous comments. Sam is a friend of mine and one of the most pragmatic developers I’ve ever met in my over twenty years in the industry. He is also one of the most pragmatic "agile" architects I’ve ever met and in my opinion, he has always supported both Microsoft and the agile community. I believe what Sam would like to see is Microsoft look more closely at some of the current and emerging "agile" tools such as NHibernate, nDepend, nUnit, etc. and methodologies (TDD, etc.) to see how these tools and methodologies can better fit within the Visual Studio Team System family of products. As with most of the architects I’ve met, Sam is very passionate in his views about using the best available methodology and toolset for his projects and I believe he hopes that Microsoft will come to "embrace and extend" these in future versions of Visual Studio.
As for Morts and Alpha-Geeks, it’s really kind of funny considering how "young" our industry really is. I can remember when the difference between a Mort and an Alpha-Geek was who got to key his code in at a terminal rather than through a card reader.
Redefining reality
@Sam,
Sorry to insult you. Not intentional. I came off as kinda harsh, but your message smacked of "elitism" and I didn’t think that is what you meant. I don’t know you personally but I HAVE read your blogs. I know that you are an expert programmer who believes firmly in "solve the problem" and "people before process."
That is why your previous response so puzzled me. I cannot imagine someone who wants the whole world to write better code saying that the most popular coding tools in the world should not be targeted to more than a handful of elite developers.
There is a big difference between Mort and a bad programmer. Mort writes good code. He just doesn’t view the world of programming as an ‘end into itself.’ He likes solving problems. His code is usually written once for a specific need and often not maintained. But his code works.
I’d bet that 2/3rds of the software development community share at least some of his values: don’t design more than you need, don’t write for a future case that you do not know will come, don’t write code for the sake of code, make the customer happy. To put it bluntly, Mort writes unit tests.
Perhaps we have a different definition of "uber-geek". Folks who use agile tools are not uber-geeks in my opinion. They are simply smart developers, but if you want to make the distinction, how about we call them agilists.
If the agilists are using TDD and CI with Visual Studio, it is because Microsoft provided a plug in interface and the open source community wrote the tools. If the agilists are using TDD and CI with other company’s tools, it is for the same reason. Open source has led the way here… not corporate players. Why attack Microsoft for that? We played our role, and the OSS community played theirs. Is that bad?
Oh, and if you scratch the surface a little on TestDriven.Net, which I dug in to this week, the request from the attorneys was to remove the ability to upgrade the FREE version of Visual Studio. It is not an attack on open source. It is an attack on someone who wants to intentionally undercut Visual Studio by creating an external marketplace for low cost upgrades to a free tool.
The author of that tool is perfectly within his rights to sell add-ons to the FULL version. No one has asked him not to write add ons.
So reread my question. Microsoft’s own add-ons DO NOT CONFLICT with the add-ons written as part of Test Driven .Net. If they did, the programmer would be free to disable or uninstall them.
@Jeff
I kinda took Sam’s comment to it’s logical conclusion, to show where it goes. I know that he didn’t intend to insult 50% of all software developers, including a large part of the agile community, but he did, and I felt the need to point that out.
I was rather astonished by his remarks, because I’ve read his blogs and always found Sam to be an honest and passionate advocate for excellence in software development.
I agree with Sam that Microsoft could do more to include agile thinking in the tools. That said, where Microsoft goes in the platform, innovation tends to be stifled. Folks who are passionate about adding their own plug-in for one thing or another can quickly be dispirited if they learn that Microsoft is planning to release a plug-in that will do the same thing.
Why do you think the work in the agile community on Ajax slowed down after MS announced Atlas.Net?
Sam, if you are listening, consider carefully what you are asking for. If a large corporate player like Microsoft adds a test-driven add in to Visual Studio, that will have an effect and a cost. The effect is that large corporate accounts will get the tool within two YEARS of it being added to the product (the time it takes between RTM of a product and the point where more than half of the upgraders have upgraded). That is a Very Long Time. In the mean time, our tool will be much more difficult to upgrade and add features to than tools like Nunit because it won’t be open source.
Therefore, Innovation in that tool will come to a slow steady crawl, and innovation will only move forward when a business person inside the corporate giant decides to make a business case for adding a slate of features to an add-in that won’t released for 2-3 years. Incremental innovation, the hallmark of agile development, stops.
Is that what you want? I do not believe that it is. Trust me, Sam, you DO NOT want Microsoft to smother the agile tools.
And, as long as the tools are not trying to undercut the investments we make in the core (very extensible) product by providing value adds to a free product, we all benefit by having those innovations happening every few weeks, not every few years. It’s win-win.
Respect, Nick
Nick,
Thanks for your reply. I just rushed off a reply above on my blog before I saw this. I’ll delete it if you want as I had a hard time with it as I do with this whole conversation.
I had this conversation by phone with Harry last night and I welcome the opportunity to have it with you. I think it’s safe to say that neither of us (or Tomas or Ayende) understand what you mean in the post and your definition of Mort is very different that Harry’s or mine or most people I know. Morts have no freaking clue about TDD, DDD or the things we are talking about. They drag some things around and hit F5 in the hope of slamming something out by 5. They say, what the hell, I don’t have to MAINTAIN it? I want to UPLIFT the WHOLE .NET community to take advantage of best practices not the elite!!
>That is why your previous response so puzzled me. I cannot imagine someone who wants the whole world to write better code saying that the most popular coding tools in the world should not be targeted to more than a handful of elite developers.
I’m not sure how you come to us as well as your next comment. Instead of keeping the programmers dumbed down with the tooling, uplift the WHOLE .NET community to produce good MAINTAINABLE code versus quick code. The tools support producing quick code, not good code. The code out of wizards is unmaintainable, impossible to test code. Support a way of development that has a life cycle like Agile and has the focus on good sound practices.
So there’s weird dust-up in the .NET community regarding some fictional persona named Mort. Like Oren Eini, I can’t seem to figure out what in the world the argument is. Mort is good? Mort is bad? Mort is "Agile"? The…
I appreciate your responses. Since so many people misunderstood the first part of your post (Sam, Ayende, Tomas, Harry, etc) have you thought about that you may have it wrong? That most people don’t think of Morts the way you do?
You can defend them all you want but my experience is that guidance and mentoring them do not help as they would rather do anything than care about improving their craft. He or she is just not inclined to do so.
As I said to Harry, its a Chicken and Egg question? Did tools like VB1-6 make this problem or was this problem there and classic VB make it worse? I think some of both.
Nick,
I have left more comments that have not shown up. Please consider this link to describe what I am. I am not Mort, not Elvis, not Einstein. None of the DevDiv arcgetypes represent me but Hugo does,
http://codebetter.com/blogs/scott.bellware/archive/2006/02/08/137715.aspx
Its fine to have all the others. I am just trying to have you guys consider another one.
@Nick,
A big miscommunication here is the definition of "Mort". Since a team at Microsoft originally created these personas, I won’t pretend to know the actual definition of Mort/Elvis/Einstein. I live in Texas, so I can only relay what the developers in Texas mean when they say "Mort". This probably differs from Washington State. In Texas, when developers say "Mort", they are usually referring to someone who can code but has not educated themselves in software development. They may be able to use the tools to create an application that solves the immediate business need, but it is usually write-only code and cannot be extended or maintained. The tool likely will end up costing the company more than expected because the proper solution does need to be maintained. These folks are in the .Net space, Java, etc. They may be using an OO platform, but the code is purely procedural and drastically coupled both statically and temporally with many globals.
Mort doesn’t appear to be a good pattern name for dialog relating to a type of developer. Many of the traits you described: practical, solving business problems, etc, I would associate with myself. I see myself as embodying your descriptions, but no one in Texas would label me as a Mort. Mort is not something you would aspire to be in Texas.
Clearly this is not a term that has any shared meaning across geographies, so I won’t be using the term going forward since using it would ensure miscommunication on many levels.
> If the business needs some data managed, he whips
> up an Access database with a few reports and hands
> it to the three users who need the data.
Now fast forward two years later. The number of these ad-hoc Access reports have grown and are integrated into various business processes. In fact, some have been copied and tweaked and stored all over the place without any centralized version control. Not to mention that nobody but Mort even understands these Access databases as they are terribly denormalized and complicated. There was no eye for maintainability.
The business has grown, but Mort hasn’t. It was fine to start with Access, but at some point, they reached a point where they should have switched to something more scalable and maintainable. Now the business is severely struggling because of their immense dependence on these databases and Mort has left the building.
This is not a fairy tale I’m making up. It is an actual case study of a former client.
This is a common occurrence. Are the tools at fault? I wrote before that I think not.
http://haacked.com/archive/2005/08/03/DoesMortKnowWeAreTalkingSmackAboutHimBehindHisBack.aspx
It’s a culture issue.
So to say that Mort is a good programmer because his code gets the job done. Well that’s not good enough. It’s good enough for the moment, but Morts need to learn to scale with their business and with the solution. The scenario I wrote is very common.
And Microsoft is in a great position to help and foster that sort of culture.
In response to Phil (Haacked)… I agree with your argument, however there is a question no-one seems to be addressing. Why are these Access databases, VB hacks and ‘quick fixes’ being used in the first place.
I was (am) a Mort. I used to work in a Retail Organisation, in a large corporation. We were one of many departments/divisions. We, like millions of others in all types of businesses, were over-worked, under-resourced… we had budgets to work to, we had to make a profit.
Under tight budgetary and resource constraints, you "do what you can with what you have" and you do it as quickly as possible to keep ahead of your competitor in the marketplace.
Most of my ‘hacks’/’projects’ came into being due to the following reasons.
I had a deep understanding of the business
We had to get results (answers) quickly
We did not have the money to pay for the IT dept to get developers onto each project.
Even if we did have the money, we would have to ‘get in the queue’ and justify the project (ROI etc)
In most cases (33 out of around 38 projects) the codebase was discarded once the results it was required to produce were finished with and there was no further use for the code. ie it had served its purpose, solved a particular issue or had given the business the analysis it needed at that point in time.
In the other 5 or so cases, the database and code continued to be used and expanded upon… thereby becoming one of the projects that needed to scale.
Questions – Did those 5 projects end up costing more than they would have if the ‘real’ developers had gotten hold of them at the start?
Yes. Most certainly. When it came time for the organization to admit that this was a project that had to be nurtured and maintained for the good of the business, it took the Developers time to understand and rewrite the solution.
Did the return on the 38 projects justify the expense of rewriting the 5 that were kept going?
Absolutely. Without doubt.
If each of the 38 projects had been given to IT and Development at conception, would the business have gained as much as they did by having ‘Mort’ hack together a quick solution?
Absolutely not. For 2 reasons-
Timeliness – getting results quickly is paramount. Having to wait 4-24 months for results means that by the time you get the information, it is so far out of date that its useless.
Cost – 38 projects, the cost of Development, the time it would take to bring Developers up to speed with what the requirements were, the cost of UAC, etc etc..
We simply didn’t have the budget to do it.
The cost also far outweighs the cost of rewriting 5 apps that go on to be long-lived.
So my point is… "live with it". There is an awful lot of business value being provided by the Morts of this world.
It might be inelegant, it might be hell to work with once its thrown in your lap.. but unless you are prepared and able to provide the results for the cost, and within the time constraints that a Mort works with.. don’t complain.
I took the day to rest on this thread. Partly because it is father’s day and I wanted to spend time with my wonderful children rather than some imaginary software developer ;-).
Mostly because I wanted to take some introspection into why I reacted negatively to Sam Gentile when he said that Microsoft was inventing tools for Mort, and that was bad.
It is clear that my understanding of Mort, based on the Devdiv profiles, not the common vernacular (it is a term I have nearly never used), is different than that of the community at large. That is a big reason for the misunderstanding.
That said, I have endeavored to remain completely open, publishing all comments to these posts, even when many were particularly unflattering. I do myself no favors by hiding.
The last person I want to have an argument with is Sam Gentile. Let me be clear. His honesty, passion, intelligence, and vision are aspects that I respect and openly admire. We aspire to the same goals and I would be honored if he would accept my humble apologies for insulting him with my crude questions. Sam, I am sorry.
I will blog the results of my self reflection, tomorrow. I do look forward to talking to Sam sometime soon, so make sure we are on the same page. I hold no ill will and I hope that none of you do either.
I do NOT represent the product groups. They are good and honest folks who want to build a great product, but I do not work among them. Rest assured that I recognize the fallability of my company, even though I have, still, and probably always will consider this the best company on the planet for a software developer to work.
good night.
The schism between Mort and Elvis develops when you try to group them together as "professional developers." Elvis gets offended that you consider Mort to be in his league.
Is Elvis being elitist? Absolutely not. Every profession has a division of labor. Consider architecture– the Frank Gehry kind. In the world of architecture there are plenty of Morts. They might work as drafters, or they might just play around with home floor plan software. They can take an existing home design, for example, and add a room or reconfigure the kitchen. But they won’t be designing the next Guggenheim.
In other words, the code Mort writes shares many of the attributes of what an amateur would produce. Mort might be very talented but an Elvis will always be able to improve on his work, because Elvis is a trained professional.
I think we’ve beat that one into the ground now. 🙂
Back to the topic. Is it bad that MS writes tools for Mort?
As John Matthews clearly explains above, the net effect is GOOD for many businesses. Having a few Morts around helps the bottom line.
But I’d argue it’s BAD for the profession of software development. To indulge in my architecture analogy again, imagine if AutoCAD were optimized for amateur home renovators. Career architects would switch to a competing product. Unfortunately, there are no viable, alternative IDEs for .NET development. Microsoft owns the market.
With all the great tools for Mort, it sometimes seems like Microsoft is out to get professional developers like me: MS furthers the myth that creating great software is a simple linear process, unworthy of paying people lots of money to fuss over.
As Oren (Ayende) recently observed, generated code from the designer does not scale. It might be great for Mort, but for me it’s broken out of the gate.
I’m no Frank Gehry, but I do view myself as a professional software engineer. My output is worthy of respect. Mort cannot do what I do. So I get personally offended when Microsoft implicitly tells the world otherwise. And in the process, hands me inferior tools and says I should be happy "’cause it’s better than the last crappy version."
As Haacked wrote, "I don’t think that we’ll find a technical solution for Mort." You can’t train people who do not want to be trained, nor should you (Mort is useful enough as-is). Meanwhile the rest of the developer community is over here waving our arms, wondering whether MS will ever help solve OUR problems. And the more cynical among us wonder if MS is even on our team to begin with– maybe only the John Matthews types (above) have your ear.
The pendulum needs to swing back towards the Elvis camp. The ruby work is very promising. As Martin Fowler wrote (and as everyone but yourself agreed), MS is in serious danger of losing a major battle in the developer wars. The Elvis camp is ready to defect. What would stop it? What kind of opportunities was Fowler talking about?
You said you’re not in the Developer Division, Nick, but I’ll throw these out there anyway:
– Provide first class support for IronPython and IronRuby in Visual Studio 2008. Intellisense, built-in project templates, everything.
– Make certain the ruby and python runtimes are 100% compatible with their native implementations.
– Either stop punting on the ObjectSpaces/Entity Framework, or endorse what the community is building (NHibernate).
– Deliver on that long-rumored MVC framework for ASP.NET.
– VSTS is less compelling than Express+Testdriven.NET plug-in. Maybe VSTS is not worth the extra money? (Tip: it’s not.) Recognize that this is a business problem, not a legal problem. Solve it by making VSTS better, not by suing community developers. (By the way, Eclipse is still free.)
– Acknowledge, don’t disparage, the left-hand column and people creating it: http://weblogs.asp.net/rosherove/archive/2007/06/04/alt-net-alternative-tools-and-approaches-to-mainstream-net.aspx
Nick’s definition of Mort’s and their practices seems to me a lot like ‘Cowboy Coders’ or ‘Hackers’ Maybe
It started with a controversial post by Nick , my own blog on the subject seemed to awaken him. Nick
I’ve been called a lot of things in the past few days since I had a public disagreement with many folks