Jaa


Tools for Mort

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.

Comments

  • Anonymous
    June 15, 2007
    Nick had another follow up this morning on the agile thread: Tools for Mort Nick has a more positive

  • Anonymous
    June 15, 2007
    The comment has been removed

  • Anonymous
    June 15, 2007
    >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.

  • Anonymous
    June 15, 2007
    > 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?

  • Anonymous
    June 15, 2007
    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.

  • Anonymous
    June 15, 2007
    Redefining reality

  • Anonymous
    June 15, 2007
    @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.  

  • Anonymous
    June 15, 2007
    @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

  • Anonymous
    June 16, 2007
    The comment has been removed

  • Anonymous
    June 16, 2007
    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...

  • Anonymous
    June 16, 2007
    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.

  • Anonymous
    June 16, 2007
    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.

  • Anonymous
    June 16, 2007
    @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.

  • Anonymous
    June 16, 2007
    The comment has been removed

  • Anonymous
    June 17, 2007
    The comment has been removed

  • Anonymous
    June 17, 2007
    The comment has been removed

  • Anonymous
    June 18, 2007
    The comment has been removed

  • Anonymous
    June 18, 2007
    Nick's definition of Mort's and their practices seems to me a lot like 'Cowboy Coders' or 'Hackers' Maybe

  • Anonymous
    June 19, 2007
    It started with a controversial post by Nick , my own blog on the subject seemed to awaken him. Nick

  • Anonymous
    June 19, 2007
    I've been called a lot of things in the past few days since I had a public disagreement with many folks