Imprisoning Mort
Nick Malik responded to the discussion around his Tools for Mort post. He has a very unique point of view.
If you cannot make sure that Mort will write maintainable code, make him write less code. Then when it comes time for you (not Mort) to maintain it (he can't), you don't. You write it again.
Okay, so you have a tool that makes sure that Mort doesn't write a lot of code with it. Now Mort has left and I need to maintain the code. How do I do it? I can't do it with the tools that Mort has used, because there are intentionally crippled. You guessed it, time to rewrite, and it is not just a rewrite of Mort's code, it is a rewrite that would need to add functionality that existed in Mort's framework, but crippled so Mort wouldn't damage himself with it.
Sorry, that is the wrong approach to take.
Someone 'smart' has written the 'hard' stuff for Mort, and made it available as cross cutting concerns and framework code that he doesn't have to spend any time worrying about. Mort's code is completely discardable.
I thought that Pie-In-The-Sky frameworks were already widely acknowledged as a Bad Thing.
Does Mort put process first or people first? He puts people first, of course. He writes the code that a customer wants and gets it to the customer right away. The customer changes the requirements and Mort responds. If it sounds like a quick iteration, that is because it is.
Agile doesn't mean iterations, agile means working software and enabling change. You says that Mort can respond quickly to changes in the application, but is only during the first few iterations, after that, Mort is too busy fighting with the code to be able to significantly add any value to the application.
Possible Answer: We can have Mort consume a service. He can't change it. He can't screw it up. But he can still deliver value
I really don't have your faith in Mort's inability to screw things up. What do you do when Mort decide to "improve" performance by making the service calls in an endless loop on another thread?
After getting those points across, I would like to protest most strongly about the general tone of Nick's post. It is extremely derogatory toward Mort, and it preclude in advance the ability to improve. I am a Mort on quite a few levels (the entire WinFX stack comes to mind), does this mean that I am bound to write unmaintainable code and should be locked down to a very small set of "safe" choices, which were chosen for me by those Above Me ?
Sorry, I really can't accept this approach, and while it explains some of the stuff that Microsoft puts out, the only thing that it helps is to stifle innovation and development on the platform. If this is Nick's idea about how things should be, it is very sad. I seriously hope that this isn't the accepted position at Microsoft.
Comments
Make it too hard for Mort and maybe he will quit? ;)
I cant believe what I read. I think he's just being controversial to gain some free publicity.
Since it was too long to post as a comment, my take here:
http://www.blogcoward.com/archive/2007/06/19/33.aspx
I've got to agree with hammett - Nick's point of view seems so ridiculous that it can only be taken as sarcasm or a case of karma-whoring (i.e.- free publicity by being controversial just for controversy's sake).
Actually, this whole topic reminds me of the Sharp Tools vs. Coding with the Kiddie Gloves On conversation that went around last winter. Gist was - if you're worried about Mort screwing something up, either change your hiring practices or take th time to mentor Mort and pull him up to an acceptable level.
Oh... and I also agree with you Oren - I'm totally a Mort when it comes to more than one technology. I sure don't want to be shut down by some over-bearing framework before I even get my hands dirty with that new technology.
@hammett and Steve Harmon
The opinion I've expressed differs from yours not because it is incredible, but because I've taken a different set of assumptions than you. The post on jdn's site hits the nail on the head: if we have a different set of underlying assumptions, the higher-level intent of the message can be easily lost.
I did not wish for this controversy and if I could go back in time and completely reverse it, I would. In the process of the last few days, I've offended a friend, upset a supporter, and pissed off an important person in my company.
So, if you would favor me by refraining from the 'attention-getting' moniker, I'd appreciate it. I assure you, it does not apply.
--- Nick Malik
I have to agree 100% with Oren and Hammett - though I don't think the intention was ever 'attention getting' - to be honest, this can't be doing Nick or MS much good. I hope this is just coming across badly from Nick's epxlanations, but it does look like MS might really be loading the gun and pointing it at their own head.
I really have to agree that if this is the direction MS are going in, I will probably be looking elsewhere and recommending my clients do the same.
Three weeks ago I was beliveing MS had made some brilliant decisions:
Popfly was great for home users to throw together a fun website for themselves and friends
Silverlight was an Adobe killer and gave us the option of really impressive web delivered GUI apps, most importantly it let us write those in proper languages
But now, I'm not so sure ...
Popfly appears to be the testing ground for "Mort can write business applications with no knowledge"
Silverlight appears to seen as "throw some code snippets together and watch it make pretty graphics"
I have to agree with hammett and oren on their comments.
I also agree with Casey's comments about MS's brilliant decisions. Alot of things coming out of Microsoft lately has a nice new glow to it in the beginning, along with what MS brands as "innovation" and then once the plumbing is looked at, everyone's knee jerk reaction is to recoil in horror.
If this is the route that MS is going down then I certainly hope they take a step back and try to realign themselves. I rarely even keep up with MS technologies anymore for a couple of reasons.
They are often to complex to grok quickly
I rarely find use cases for them or they are too complex to use in a valid use case
I find I am starting to look more and more at OSS tools, not only in c# frameworks, but also in other languages like RoR and Linux/Apple tools.
I think as everyones knowledge and wisdom rise, MS really falls to the wayside and people don't pay as much attention to them.
way off topic though =)
Tools / Codegen can be great when they work, and an absolute nightmare when they fail and you end up having to maintain the artifacts that were not intended for you to maintain in the first place.
XAML is a big improvement over this in that instead of maintaining oodles of code, you are maintaining markup that has a more well-defined structure than a long CodeDom serialized InitializeComponent() method. The markup that you get is also designed to be maintained and is easier to extend.
Unfortunately, XAML designers still do break :(
First off, my thinking is my own. I do NOT work in a product group. I work in IT, so my code is the same as most of the folks who post on this forum: working systems to make a company run. The fact that the company creates software is interesting, but not particularly important to the discussion. A financial package or a supply chain package doesn't really care about what is being purchased or delivered.
So, no, my thinking is not some gross reflection of the "way things are thought of in Microsoft." Geez. Gimme a break.
On the other hand, if you look at Acropolis, you will see two things:
1) far less code to maintain.
2) the use of patterns and practices forged first in OSS and adopted by Microsoft.
3) pretty cool stuff.
That doesn't prevent Mort from screwing things up, but it does make it easier to throw away Mort's code and start over, and then you get rid of the problem of unmaintainable code... you don't maintain it.
The reality is that Microsoft isn't sitting on the sidelines waiting for the world to pass by. We don't respond particularly quickly, but we do respond, and when we do, it is a pretty good offering. Remember how far behind we were in frameworks, and then out came the .Net framework 1.0, and, in one stroke, we went from five years behind to two. The next major iteration, 2.0, caught us up. With the FACT that the current framework 3.0 is very rich, and more performant than the java framework, we have effectively crossed the boundary from "catching up" to "fully competitive". Like I said, we are not usually first, but we don't give up. (Think Toyota: steady, constant, relentless improvement).
We need to do a better job, I admit, of encouraging and supporting the Open Source community. I have said so from the beginning and I continue to defend that position.
However, statements like Casey's are way off base. Popfly responds to the wild growth in the mashup space, which is in keeping with our Software as a Service strategy. If you aren't familiar with mash ups: we didn't invent them. If you don't like them, don't use them. Other people will. Those people will make a rather nice living.
Silverlight goes after Flash. If you don't like Flash, no one is forcing you to use Silverlight. From my friends who do use Flash, they have dug under the covers of Silverlight and they LOVE it. Microsoft entered the market with a GREAT product (rare, and nice). Adoption will be a long road, but with an excellent product, I've no fear that we will be able to compete.
Neither Popfly nor Silverlight have anything at all to do with my discussion on the economics of unmaintainable code. They are both excellent for what they do.
And if you like Ruby: IronRuby is on the way now that we have a Dynamic Language Runtime. Innovation doesn't always happen inside Microsoft, but we are getting better at responding quickly.
There is always going to be room for developers who love code. It's all about the developers, and the Visual Studio suite does an Excellent job of supporting all walks of life. None of the tools, even the ones aimed at less skilled developers, get in the way of what you want to do.
Keep the faith.
--- Nick Malik
(Just a developer...)
And that is the basic premise where I completely disagree with you. You may not need to write the code to show the grid on the screen, but you most certainly need to handle the code for business logic _somewhere_, and I have yet to show a better medium for that than code, and that has to be maintainable.
To start from the assumption of unmaintainable code by default and throwing that away is the wrong way to go about it.
(The discussion of stuff like popfly / silverlight, etc is not relevant to the discussion at hand, so I am ignoring that)
No, it isn't. See plenty of posts here and other wise about it.
Don't I wish. They most certainly do paint me into nasty corners.
http://drowningintechnicaldebt.com/blogs/royashbrook/archive/2007/07/09/re-imprisoning-mort.aspx
Comment preview