What We Learn from Microsoft’s Rules of Software Design

Item 12 on 21 Rules of Thumb – How Microsoft develops its Software, a Microsoft developer's list of rules of great software design:

“Portability is for canoes.”

Figures. Indeed, verges on abuse of a dominant position?

It's also sort of interesting to compare this list to legal task organization, for example large-team litigation. Some of the rules work perfectly, some are irrelevant.

The first rule should certainly be engraved on every lawyer's heart, and is something I always make a point of telling my students in every class I teach:

It is essential not to profess to know, or seem to know, or accept that someone else knows, that which is unknown. Almost without exception, the things that end up coming back to haunt you are things you pretended to understand but didn’t early on.

This entry was posted in Law: Practice, Software. Bookmark the permalink.

5 Responses to What We Learn from Microsoft’s Rules of Software Design

  1. Seth Gordon says:

    I suspect that when the author of that document says “portability”, he’s thinking “portability among all the variations of Windows that are out there”, not “portability between Windows and Mac OS”.

  2. Jack says:

    Small correction, when I was looking at the article I noted that the author of “21 Rules of Thumb – How Microsoft develops its Software” was basing his item on a previous article titled “21 Rules of Thumb for Shipping Great Software on Time”, which is where the quoted item originated. The original author’s point was that multi-platform functionality puts a greater burden on development (and support) staffs, in the interest of minimizing development time a product should be targeted for as few environments as strategically feasible. Granted, MS is the 800 lb gorilla and leverages its Windows market share to its own advantage, but viewed in context the remark isn’t particularly sinister in intent.

  3. developersdevelopersdevelopers... says:

    As a (non-MS) developer, I read a different meaning than does the honorable Mr Froomkin. ‘Portability’, to a developer, means usable in other places. In theory it means less time reinventing the wheel in related tasks. In practice it means bloatware, missed deadlines, and huge testing headaches. There is a happy medium, but no one sold any books talking about common sense/

  4. Dem says:

    The three comments above all have some merit, but I’d like to go back to the full text of this point to explain why this probably has no anti-trust implications:

    Portability is for canoes. And system software. Even discounting the added development burden, with the addition of each additional platform the job of QA increases substantially. While clever QA management can minimize the burden somewhat, the complexity of multi-platform support is beyond the reach of most development organizations. Place your bets. Demand multi-platform support from your system software vendor, then build your product on the absolute fewest number of platforms possible.

    The key element of confusion here is that the term “platform” is not defined. This is an overused term in the software industry and means different things depending on the context of the product being developed. In the context of this write-up it appears the author is talking about developing application software, like MS Word, and mentions the “system software” as unique from the “platform”, so the “platform” is probably the “hardware”.

    But if we generalize the point, what the author is saying is that if you are developing a product that runs at a certain layer (say, “application”), make sure that the vendor of the layer below you (say, “system software”) provides full, transparent, support of the layer below that (say, “hardware”). If you do this, then you won’t need to write custom code for every possible hardware platform out there. You’ll still need to test for each hardware platform (hence the statement “Place your bets”, which means pick a few platforms that are most likely to win in the marketplace and ignore the rest), but the burden will be reduced.

  5. golmohamady says:

    hi
    i want discourse hard and software and internet
    tank

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Notify me of followup comments via e-mail. You can also subscribe without commenting.