×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

How Microsoft Develops Its Software

michael posted more than 9 years ago | from the remember-the-triangle dept.

Microsoft 816

crem_d_genes writes "David Gristwood has a post on his blog that notes '21 Rules of Thumb - How Microsoft Develops Its Software', on which he will elaborate at TechEd in Amsterdam next week. It was derived from interviews with Jim Mccarthy, also of Microsoft. Gristwood: 'As someone who has been involved with software development for over two decades, the whole area of how you actually bring together a team and get them to successfully deliver a project on time, is one worthy of a lot of attention, if only because it is so hard to do. Even before I joined Microsoft, ten years ago, I was interested in this topic, having been involved myself in a couple of projects that, I shall politely say, were somewhat less than successful.' Tips include such features as 'Don't know what you don't know.'; 'Beware the guy in a room.'; 'Never trade a bad date for an equally bad date.'; and 'Enrapture the customers.'"

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered

816 comments

My post (4, Interesting)

andy55 (743992) | more than 9 years ago | (#9527912)

I posted the following on this guy's blog comment form, and I thought some folks here might agree with it... Yay/nay?

A worthwhile and insightful read (and it's about to get slashdotted). You use the phrase "great software" frequently. I post this sincerely and do not mean to troll. Since you are a MS PM and/or dev, there seems to be three possibilities:

(1) MS consistently makes "great software" and you are, therefore, content to be a MS employee.

(2) MS does not make consistently "great software" and you are, therefore, either unhappy at MS or long to be project group that makes "great software".

(3) You and other people (myself included) have dissimilar meanings of "great software".

In short, I believe possibility (3) is the case.

Re:My post (5, Interesting)

Anonymous Coward | more than 9 years ago | (#9527971)

Essentially great software is the one that solves customer's problem. Microsoft is good at it as each product that goes out the door can generally be qualified to solve at least one problem.

Re:My post (5, Funny)

tlhIngan (30335) | more than 9 years ago | (#9528072)

I never thought "too much money on hand" is a problem, at least to me. It usually is the other way around.

Re:My post (5, Insightful)

TopShelf (92521) | more than 9 years ago | (#9528184)

Too bad you have to go AC just to say something good about Microsoft!

You certainly bring up a good point, though - there's a fine balance before working on a product until it's completely flawless (by which time it will be obsolete), or rushing a product that solves today's problems to market before it's completely bug-free. Corporations, naturally, have strong motivation to getting the product out quickly, so as to take advantage of market opportunities.

Re:My post (4, Interesting)

Anonymous Coward | more than 9 years ago | (#9528225)

This one has less to do with development, and more with project management and budgeting.

Why do most open sources get started? Because we can. Sometimes, as that was the case with GCC, the project was started because it was needed, but most of the time it's just for fun. Essentially GCC is a great software product - because it solved an existing problem. By this definition Visual Basic 4 is also a great product, if your problem was building GUIs quickly. The internal quality of the product varies, however.

Re:My post (4, Insightful)

tb3 (313150) | more than 9 years ago | (#9527976)

Yep, Microsoft double-speak in action. Here's another great example, "Zero defects does not mean that the product does not have bugs" Well, to the rest of the world it bloody well does!

Re:My post (5, Insightful)

Reality Master 101 (179095) | more than 9 years ago | (#9528017)

Here's another great example, "Zero defects does not mean that the product does not have bugs" Well, to the rest of the world it bloody well does!

The "rest of the world" has no clue about the nature of software. That quote is absolutely correct.

Re:My post (5, Insightful)

tb3 (313150) | more than 9 years ago | (#9528064)

Um, crap. 'Zero Defects' means 'Zero Defects'. If you mean, 'An acceptably small number of defects', then just say so. I still say it's Microsoft double-speak.

Re:My post (3, Funny)

heinousjay (683506) | more than 9 years ago | (#9528071)

The quote is correct, but only for certain degenerate values of correct. You have to get yourself deep into managerspeak before something like that can be accepted with a good conscience.

Caveat: I am a developer, and I am aware that the only software that has zero bugs is unwritten software.

Re:My post (5, Informative)

PhxBlue (562201) | more than 9 years ago | (#9528053)

No, it does not, but thank you for displaying your ignorance of software engineering principles. A defect is not just a bug; rather, it's a bug that has been found, documented, and fixed using a software engineering process. Not all defects are fixed every time a piece of software goes out the door--think of triage. Is the fact that the buttons render 15 pixels apart instead of 14 going to break the software when it goes out to market?

The "bugs" referred to in the article are software issues that haven't been found, which is why the article warns developers not to assume that "zero defects means zero bugs."

Re:My post (0)

tb3 (313150) | more than 9 years ago | (#9528171)

Wow, your use of the language is almost as much fun as Microsoft's. Bugs, defects, software issues? A bug is a software issue that hasn't been found? C'mon! That means every piece of software has an infinite number of bugs, by your definition.

Let me clue you into something: Microsoft does not use the term 'bug', because it sounds bad. They prefer the term 'issue', because it is a neutral term. We're talking semantics here, not methodology, because Microsoft is a marketing company, not a software company.

Re:My post (-1, Flamebait)

Anonymous Coward | more than 9 years ago | (#9528239)

Wow, you're wonderfully close minded.

Re:My post (3, Insightful)

PhxBlue (562201) | more than 9 years ago | (#9528244)

Wow, your use of the language is almost as much fun as Microsoft's. Bugs, defects, software issues?

That's what I said. The article's intended audience is professional developers and software engineers, which evidently does not include you.

That means every piece of software has an infinite number of bugs, by your definition.

Oh, nonsense. Software would have to have infinite complexity to have an infinite number of bugs. Now you're just blowing smoke.

Re:My post (1)

swb (14022) | more than 9 years ago | (#9528223)

Sorry, but this sounds like engineering doublespeak and QA ass-covering. By the most basic definition of 'defect' and 'bug', bugs are defects, and zero defect software should have zero bugs. The only thing that does make sense is the assertion that some bugs aren't necessary destructive or contributory to malfunction.

Redefining 'zero defect' to not mean 'free from bugs' is like redefining 'zero pregnancies' such that a class of pregnant women aren't really pregnant.

Zero defects my ass (2, Insightful)

rcamans (252182) | more than 9 years ago | (#9528107)

Zero KNOWN defects most probably means inadequate testing, poor quality control, or management that kills the messenger, so no one reports problems.
NT 4 shipped with 65K defects?
The only thing Microsoft never makes a mistake on is Billy Gates' take home paycheck.

defects != bugs (0)

Anonymous Coward | more than 9 years ago | (#9528175)

Yeeeeesh, that's one of the basic priniciples in Software Quality Assurance.

Hey mods what's next?

How about a posting on a perpetual motion machine?

Re:My post (1)

at_kernel_99 (659988) | more than 9 years ago | (#9527990)

I like your summary. I've also found that, as a technologist writing code, my assessment of how a software product is written is often different from a project manager's. This happens before during and after projects - we each have our own perspective on the process & probably neither of us really understands how it will or did get done.

AKA (0)

Anonymous Coward | more than 9 years ago | (#9527917)

Could this also be re-titled to "21 Rules of Thumb -- The non-secure way"?

Sorry.. you knew it was coming.

Enrapture the customers (5, Funny)

ideonode (163753) | more than 9 years ago | (#9527928)

Enrapture the customers

Shouldn't that be shrink-wrapture the customers?!

Re:Enrapture the customers (1)

ukalum (682310) | more than 9 years ago | (#9527981)

"As someone who has been involved with software development for over two decades, the whole area of how you actually bring together a team and get them to successfully deliver a project on time . . . Microsoft"

He lost me right there.

Re:Enrapture the customers (0)

Anonymous Coward | more than 9 years ago | (#9528067)

Perhaps he meant Entrap the customers?

Re:Enrapture the customers (0)

Anonymous Coward | more than 9 years ago | (#9528098)

More like [En]rap[tur]e the customers... err for their money.

MONKEYS @ THE KEYBOARD!!! (-1, Redundant)

Anonymous Coward | more than 9 years ago | (#9527934)

They develop it? (-1, Troll)

andreMA (643885) | more than 9 years ago | (#9527935)

Well, I guess thousands of monkeys pounding on keyboards is "development" if you stretch the definition...

Re:They develop it? (2, Insightful)

kingstalemuffins (786246) | more than 9 years ago | (#9528013)

To be fair, not all MS software sucks ass. I, for one, prefer Word over any of the open source alternatives for its quick load times, functionality, and compatibility. Yes, the compatibility is only an issue because of MS's shady business practices, but we have to accept the fact that if everyone uses a format, we have to be compatible with it.

Re:They develop it? (0)

Anonymous Coward | more than 9 years ago | (#9528144)

Compatability should never be used as the reason, though, since this is a one-sided argument.

E.g. "Women are not as good as Men, because they aren't Men".

No reason, just some words put together AS a reason.

Re:They develop it? (1)

kingstalemuffins (786246) | more than 9 years ago | (#9528207)

Whether or not compatibility should be a reason when choosing software is irrelavent. The fact is compatibility is the reason 90 percent of people choose software. All they want to know is "Will my favorite game work?" or "Will I be able to open the files my friends send me on MSN messenger?" And, since most people run MS operating systems, most people choose (or just use because its pre-packaged) MS software. But everyone knows that already anyway, I suppose...

MOD PARENT DOWN (0)

Anonymous Coward | more than 9 years ago | (#9528179)

He speaks favorably of the enemy.
Linux is good. Linux is great.

Anonymous Coward #214435 at your service.

Re:They develop it? (0)

Anonymous Coward | more than 9 years ago | (#9528183)

Not only does it load quickly, but it also unloads quickly! Hmm...come to think of it, the auto-unload feature isn't really that helpful... Yes, Word Sucks Ass.

Re:They develop it? (1)

kingstalemuffins (786246) | more than 9 years ago | (#9528236)

Come on, Open Office takes over 30 seconds (well, i've never timed it but it has to be near there) to load on my machine where word takes less than 2.

Microsoft develops software (-1, Troll)

mrkitty (584915) | more than 9 years ago | (#9527941)

With its eye's closed...

Re:Microsoft develops software (4, Funny)

strictnein (318940) | more than 9 years ago | (#9528001)

With its eye's closed...

Come on... you got the correct form of "its" but you screwed up on the plural form of "eyes"?

You can do better...

Re:Microsoft develops software (4, Interesting)

Mz6 (741941) | more than 9 years ago | (#9528009)

With its eye's closed...

If that's the case, just wait until someone comes along and open them. Microsoft will be the single biggest software corpora... err wait a second.

In all seriousness though, they are actually starting to open their eyes now and realizing that security is going to play a huge role in their continued success to develop software. I think they will still continue to be on top so long as they can evolve. So far they are beginning to... Let's look.. First was a more secure approach to computing, now they are starting to get more serious about searching techniques...

Me thinks (0, Funny)

Anonymous Coward | more than 9 years ago | (#9527942)

They will never make it without open source. No one will even take them public, and I am still waiting for the day when Microsoft hits at least 1 million dollar in revenue for the quarter.

Only open source represents a viable business model, ask Mandrake, Caldera and VA Linux.

Monkeys on Typewriters? (-1, Flamebait)

hethatishere (674234) | more than 9 years ago | (#9527945)

I didn't read the article, but I was wondering if someone could clarify whether Microsoft really does use typing monkeys to write out their source-code.

Maybe Longhorn will be that Shakespearan play everyone's been talking about.

Professionalism (4, Interesting)

Some guy named Chris (9720) | more than 9 years ago | (#9527946)

Generally, the whole article can be summed up as this: "Act like professionals". It's
  • Be Honest
  • Communicate
  • Put in an honest days work every day
  • Simple is good

Re:Professionalism (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#9527989)

I call bullshit. Mod parent down as Troll.

Re:Professionalism (0)

Anonymous Coward | more than 9 years ago | (#9527991)

Sounds like Wal-Mart.

Re:Professionalism (0)

Anonymous Coward | more than 9 years ago | (#9528024)

You forgot:
  • Stupid is as stupid does

Re:Professionalism (1)

Tuffsnake (767507) | more than 9 years ago | (#9528153)

Put in an honest days work every day???

Obligitory office pace quote:
"I'd say in a given week, I do 15 minutes of real, actual work "

Worth considering... (4, Insightful)

jamie812 (720355) | more than 9 years ago | (#9527948)

While Microsoft doesn't consistently put out the best products they're capable of, I don't think anyone would stoop so low as to say they put out the WORST product out in the market. As such, it's worth considering how they go about making their software, since it's a difficult job, at best, to get a group of developers to deliver anything. Any tips we can take away as a collective whole would be helpful to us in our larger goals.

Dates (3, Funny)

canfirman (697952) | more than 9 years ago | (#9527950)

7. Never trade a bad date for an equally bad date.

I guess that's proof that M$ programmers actually go on dates!

Re:Dates (2, Funny)

andhravodu (698763) | more than 9 years ago | (#9528172)

ah, so that's why the anti-MS tirade on /. I am starting to understand it all now. i'm such a genius

on what? (0, Redundant)

gmack (197796) | more than 9 years ago | (#9527954)

"the whole area of how you actually bring together a team and get them to successfully deliver a project on time"

When was the last time Microsoft actually delivered a product on time?

Re:on what? (0)

Anonymous Coward | more than 9 years ago | (#9528010)

Oh, please. It's self-appointed deadline with self-appointed milestones. When was the last time you've reached your New Year's resolution?

When was the last time an open source product was delivered as a complete and self-sufficient product? I am still waiting for that FireFox to reach 1.0 and get out of the preview mode.

Re: on what? (4, Insightful)

Mz6 (741941) | more than 9 years ago | (#9528036)

When was the last time Microsoft actually delivered a product on time?

When was the last time that a certain game company released their software on time? Or for that matter, a lot of game companies these days?

Microsoft found step 2 (-1, Flamebait)

Apocalypse111 (597674) | more than 9 years ago | (#9527956)

1. Develop software (quality only a secondary, if not tertiary, concern) 2. (THE MISSING LINK) Market toward the lowest common denominator, and use strong-arm monopolistic business practices. 3. Profit! Predicted post score: 80% Funny, 10% Flamebait, 10% Overrated

Re:Microsoft found step 2 (1)

Apocalypse111 (597674) | more than 9 years ago | (#9528021)

Damn, I've been posting to Fark too much, I forgot that the comment window isn't WYSIWYG.

Readers, please insert break tags at the appropriate places in my parent comment.

#11: Build it every day (4, Interesting)

tcopeland (32225) | more than 9 years ago | (#9527959)


11. If you build it, it will ship.
Conversely, if you don't, it won't. The product should be built every day, along with all setup scripts and on-line help, in a public place, where QA can conduct appropriate assessment of daily status, and the entire team can observe progress or its lack. This is the single biggest indicator that a team is functional and a product being developed.

So true. And "in a public place [ultralog.net] " is definitely an important part of that - when a build fails, everyone should be able to see the compilation error.

Really? (0, Redundant)

Dagny Taggert (785517) | more than 9 years ago | (#9527982)

'Don't know what you don't know.'; 'Never trade a bad date for an equally bad date.'; and 'Enrapture the customers. Hasn't Microsoft violated every one of those rules, even recently? I'm not trying to be flippant. I just can't take a symposium on software development held by MS very seriously. What I would really, really like to see is a conference in which some developers from MS discuss how they deal with damage control on a daily basis. I think that would drum up some interest.

Errrmmm... (3, Insightful)

MancDiceman (776332) | more than 9 years ago | (#9528014)

the whole area of how you actually bring together a team and get them to successfully deliver a project on time, is one worthy of a lot of attention, if only because it is so hard to do

Not being funny, but can somebody point out the last time Microsoft actually brough a team together and managed to deliver a project on time. Every major OS release, every service pack, every single project they have ever produced seems to have been delayed. They are the antithesis of "release early, release often" but then they having paying customers as opposed to us guys...

Anyway, call my cynical, but I think I can find better sources on how to program than the Microsoft team.

Microsoft master plan! (5, Insightful)

Anonymous Coward | more than 9 years ago | (#9528019)

How Microsoft develops software:
(1) They notice a great software idea by another company.
(2) They ignore it.
(3) They realize it's big.
(4) They copy it.
(5) They "bundle" this software in the next version of Windows.
(6) They eliminate the competition using their desktop monopoly.

Number (5) can be substituted by "They buy the company".

Microsoft doesn't develop software, they copy or buy.

Is it true (-1)

Anonymous Coward | more than 9 years ago | (#9528030)

about the monkeys and the typing?

Considering Microsoft's Quality.... (0)

Anonymous Coward | more than 9 years ago | (#9528039)

.... I don't know if this is a things to do list or examples of things *not* to do - if the result is software of M$'s quality!

Portability is for canoes? (5, Interesting)

Hutchizon (696741) | more than 9 years ago | (#9528050)

I find point 12, "Portability is for canoes" either self-serving to Microsoft interests or an interesting insight into their thinking process.

I fight this idea all the time in terms of supporting more than just IE on a web site's design ("it has 95% market share, etc"). I've seen it in the past on supporting Macintosh platforms, and now I observe it in the industry as a whole in driver support, applications, games, etc., when it comes to Linux.

Maybe I'm taking it too far. Portability can be hard to manage and achieve, but somehow I think if this was coming from the purveyor of a non-dominant OS platform player it would sound a little different.

Overall, I liked the article. Nice to see some more analysis of success factors in project management.

Re:Portability is for canoes? (1)

stratjakt (596332) | more than 9 years ago | (#9528203)

I agree with the quote.

I'd rather develop software for a specific platform, and then let the various OS's figure out how to run it.

You can run my Win32 program on linux through Wine, on a mac with VirtualPC, or run my linux binaries under linux for windows, or cygwin, etc..

I look forward to an OS-agnostic future. ELF apps built for linux, but Macs or Windows has no problem running them, etc..

The OS should provide an appropriate environment for your stuff to run in, the developers shouldnt have to pay much heed to "portability". How much time is wasted in big OSS projects to make sure it can compile in 90000 flavors of unix?

That's where the future is, IMO. Not in watered-down crappy looking Java swing apps.

Then the zealot OS wars can just frigging end, since the OS will just be a commodity.

You are correct, sir (4, Interesting)

green pizza (159161) | more than 9 years ago | (#9528220)

I would have to agree with you on this. In my experience, portability takes more time but (generally) ensures quality. What breaks on Linux might not break on Windows, exposing a potental problem. I find more bugs in my code by porting than with any other bug-hunting technique. Many are minor and often don't even affect the user in that exact revision of the app. BUT, it's these little things that cause major problems down the road when I modify or change certain features.

For a commercial example, look at Quake 3, I think Carmack's portability (Win32, Linux, MacOS Classic [and later, Mac OS X]) helped a great deal. Q3A was fairly lightweight for its abilities and ran decent on just about any platform with a decent graphics card. (Now we're getting into hardware details, but I digress)

Inconsistency. (-1, Redundant)

Mirkon (618432) | more than 9 years ago | (#9528051)

"...successfully deliver a project on time..."

I thought this was about Microsoft?

That's alot of rules of thumb... (1)

Cognoscento (154457) | more than 9 years ago | (#9528057)

'21 Rules of Thumb - How Microsoft Develops Its Software'

21? There's a bad joke lurking there... "all thumbs".... hmmm...

The 3 rules of thumb for Shipping Great Software (4, Insightful)

XeRXeS-TCN (788834) | more than 9 years ago | (#9528086)

  1. Release Early
  2. Release Often
  3. Listen to your customers

I think Linus has proven the effectiveness of that one, and Eric S. Raymond [catb.org] happens to agree with me ;)

Re: That loud slurping sound (1, Funny)

Anonymous Coward | more than 9 years ago | (#9528157)

we all heard was XeRXeS-TCN furtively lapping up some karma points by doing some brown nosing.

Re:The 3 rules of thumb for Shipping Great Softwar (1)

zhenlin (722930) | more than 9 years ago | (#9528226)

"Shipping" probably only applies to closed, static development models, where by a mysterious black box is expected to produce a working product by a certain deadline.

For open, dynamic, evolving development models, those rules apply better, though their goal would not be so much "shipping" as actually "developing".

K.I.S.S. (-1)

Anonymous Coward | more than 9 years ago | (#9528095)

the only rule.

My favorite quote... (1)

3riol (680662) | more than 9 years ago | (#9528096)

12. Portability is for canoes.
The reasons given (that it should be managed by 'system software,' whatever that is) leave open to discussion the question of whether this really is but a flimsy attempt to rationalise MS lock-in practices...

Re:My favorite quote... (0)

Anonymous Coward | more than 9 years ago | (#9528152)

No shit.

One of the things I love about Apple is the ability to run Safari browser on any platform out there.

Re:'No Shit' (1)

3riol (680662) | more than 9 years ago | (#9528219)

What are you arguing against? I don't use Apple software either, for the same reason. But they have yet to claim that Platform-independence is impossible anyway.
What I enjoy about Mozilla Firefox is its ability to run on any platform I might choose to run - or be coerced into running.

Re:My favorite quote... (1)

The Bungi (221687) | more than 9 years ago | (#9528241)

Yeah. I mean, look at Java: "Write once, suck everywhere"

The only portable application lives in a server and gets hit by a browser. Anything else is a pipe dream.

People seem a bit hard on microsoft developers (2, Insightful)

91degrees (207121) | more than 9 years ago | (#9528126)

It's as though you people think that MS are the only people who write code that contains bugs.

What rubbish. Every company produces buggy software. MS is actually one of the better companies. They actually have a quality control system and don't release software unless it's reasonably stable.

Sure, you can say all you like about their monopolistic practices, but as far as basic stability goes, they're a lot better than most of their competitors.

How they develop? That's easy... (1, Funny)

fail_miserably() (755243) | more than 9 years ago | (#9528127)

first they make diagrams using fisher price blocks, then they write their first prototype on an etch-a-sketch. If that etch-a-sketch sand holds firm under 'rigorous' testing standards, it's ported to windows under VB and released for the masses!

The REAL story (4, Funny)

revery (456516) | more than 9 years ago | (#9528145)

All we know for sure that is that when Microsoft needs a new product, Bill Gates goes into his High Tower of Closed Sourcery with 15 sheep, Steve Ballmer, a technology company with an established product, and an Enya CD.

When he emerges, two months later, the new MS product is ready for market, the sheep have been trained as VP's, and the technology company is dead.

--
http://www.livejournal.com/users/gymbrall/

Portability, GNU and brains (1)

eric_ste (446052) | more than 9 years ago | (#9528147)

12. Portability is for canoes. While clever QA management can minimize the burden somewhat, the complexity of multi-platform support is beyond the reach of most development organizations. Maybe this proves that OpenSource is after all a good development model. What has been achieved by GNU, portability, is, according to this development specialist at microsoft, beyond the reach of most development organizations. Only a commited team, driven by computer science can achieve portability. If the development is $$ driven, portability is beyond reach.

What's with #6? (4, Interesting)

Paulrothrock (685079) | more than 9 years ago | (#9528155)

Beware of a guy in a room.

I do most of my good dev alone in a room. I even make deadlines! I used to work for someone who used to work at JPL in the 1970s managing software development. One developer would ride his Harley Davidson wearing a cape and goggles and lock himself in a room with the necessary hardware and ask that Twinkies and Coke be left outside the door. They didn't see him for a week, but the code was good. It was for the Voyager program, so we know it was good.

There's a difference between not trusting an ex-frat boy alone in a room and a responsible software developer in a room. Treating everyone on a team the same just breeds discontent. If people work well alone and can be trusted to do so, don't make them waste their time in meetings.

The Whole Difference between Microsoft and Linux (5, Interesting)

Bandman (86149) | more than 9 years ago | (#9528165)

6. Beware of a guy in a room.

Linux was written BY the guy in the room.

That's the whole difference in a nutshell.

Microsoft imitates Rummy (3, Funny)

schmaltz (70977) | more than 9 years ago | (#9528170)

"1. Don't know what you don't know.

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
..."

Did anyone else think of Rumsfeld's infamous mindfart (for which he won a Foot in Mouth award [plainenglish.co.uk] ) --

"Reports that say that something hasn't happened are always interesting to me, because as we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns -- the ones we don't know we don't know."

Eerie.

hmmmm (0)

Anonymous Coward | more than 9 years ago | (#9528185)

Each element in the product is necessary to the value of the whole and all necessary elements are there. Since everything you need is there, you aren't tempted to go beyond the present experience, and since nothing is there that isn't required, your absorption into the world of the product will not be disturbed.

Does this include putting flight sims in a Spreadsheet package?

Scarcely news (4, Informative)

Tim Browse (9263) | more than 9 years ago | (#9528189)

I recognise most of these rules from here [amazon.co.uk] - note the publication date.

Quite a good book. The things being said are good. The way they are said is terrible. Very poor writing.

Microsoft knows their customers... (1)

dtjohnson (102237) | more than 9 years ago | (#9528198)

One of the better quotes:

"Most software is a renewal business. Customers buy multiple releases over a relatively long period of time. As a consequence, the market has a deep understanding of your software and its flaws, and your organization and its flaws. Often, the market has grown uncomfortably dependent on software that doesn't meet its needs. In many software situations, customers spend hours per/day uncomfortably shoe-horning their lives into your product. As a consequence, they crave your understanding, and will respond enthusiastically to the least sign of it. Normal success, meeting customer expectations, means to improve the most outrageous and flagrant violations of their needs from version to version. They will likely stay with you if you are faithful about that, though they may well be sullen if not mutinous."

"Standards." Maybe you've heard of 'em...? (3, Insightful)

Crash Culligan (227354) | more than 9 years ago | (#9528210)

12. Portability is for canoes.
20. Establish a shared vision.
These two grate on my nerves, and for good reason.

#12 claims bluntly that supporting something becomes so much easier when you only have to support it on one platform. From one perspective there's a certain truth to that, and from another perspective it's laziness. But contrast it with #20.

#20 says that the idea has to be shared as completely as possible between everybody in order for everybody to help out as best they can to making the idea a reality.

"Things become easier to support and test if they follow certain specific guidelines, and with a common implementation, everybody can follow a given idea better." Sure, it looks good on paper, and it makes a fine creed for developers, but with Microsoft, that's where it comes to a screeching halt. Because out in the real world:

Hey, nice standard! Mind if we grab it away from you and run this way with it?

It's both weird and wrong seeing people in Microsoft talking about ideas and commonality of vision when in practice the company as a whole so copiously defecates (both buttocks blazing, as it were) on any standards that they don't already have a headlock on.

Number 22 (0)

Anonymous Coward | more than 9 years ago | (#9528217)

22.) Have an assload of money

Breakdown (5, Insightful)

mfh (56) | more than 9 years ago | (#9528221)

1. Don't know what you don't know.

Yes, and I would also add that feigning ignorance is much safer than feigning self-confidence, and it helps projects to thouroughly research information that is even considered known.

2. Get to a known state and stay there.

I disagree. I think we should accept that we are only ever in a state of the unknown, so that we may prepare for the worse. Don't stay in a state of the known, because then you are ripe for the unknown to come up and bite you on the ass.

3. Remember the triangle.

Resources, features and the schedule are indeed important, but I would also add that there are core features that must be adhered to in order to prevent disasters, which are not features, but critical systems. Sometimes companies like Microsoft will push for more and more features, when a much simpler system will work better and have stronger core competencies.

4. Don't go dark.

I would have to agree with this, but it could also be identified as avoiding feature creep by keeping it simple-stupid. Microsoft adds too many features that require a plethora of miniscule details in order to work, and that often throw off stability of the rest of the system in doing so. Going dark in some areas is going to happen, so I would put that you should go dark wisely, by accepting that at times in the project the team will be in a state of the unknown. Ensure that core competencies are structured correctly to accomodate individual feature additions without delays or growing instabilities. What it comes down to is smart planning and a lot of foresight, but even less features, but enough to get the job done.

5. Use zero defect (ZD) milestones.

I disagree. I think every milestone has to be understood completely for what it is, but it's got to be bug free or it's a fail, in my books. And you should understand the milestone failures along the way because that's part of team building. If you code up a module as one of your milestones and it has a few bugs, you have to track down why they are there and set that as a new milestone -- not skip to the next official milestone.

6. Beware of a guy in a room.

Read Donald Trump's book, How to Get Rich (2004). There is a part in there when Trump talks about a guy who is constantly late all the time, who isn't speaking with employees, and isn't working as a team member properly. Some employees start complaining, and Trump informs them to ask the guy if he needs his laundry picked up or a coffee or lunch brought to him. Trump reminds them that the guy started acting this way just a few months before a multi-million dollar idea was worked out, alone in his office. He says that whenever the guy acts like this, he's about to shake the company. You have to accomodate programmers like this too, and to do so, you can't be looking over their shoulder all the time. I think you should not beware of a guy in a room, but you should change your schedule to accomodate them, and ask for updates from time to time. You have to trust your people or it won't work.

7. Never trade a bad date for an equally bad date

I would agree with this, but if possible you should follow the Id Software motto, when it's done, instead, because only then will you reach the zenith of design and programming practice. Just don't take it too far like some of the other companies with games due out in the late/mid nineties that we're still waiting/not-waiting for.

8. When slipping, don't fall.

Duh.

9. Low tech is good.

Only if you're at Microsoft, because that's all you've got. *zing!* Seriously... the guy says, "A smaller effort is almost always more desirable than a larger one." Can I just say that it reminds me of the commercial with the underachievers? It hinges on putting forth a paced effort, not a minimal output. Sometimes you have to do some work.

10. Design time at design time.

I agree that implementation is always a design element, but you have to consider your team in this equation. Implementation can be compressed when designers are clear and concise about what they want. Don't beat around the bush, and use clear words that a lackey will understand at 4am on Friday night after missing out on social time because he's behind schedule and he's gotta get to his milestone. I guess what I'm saying is that you need to accomodate the flexibility of designs for your people as well, because they have more knowledge than you, or you would be leading the team in doing, instead of delegating. Consider that all the team has more knowledge than the team leaders, and you will tap that knowledge and go far in designing for that knowledge base.

12. Portability is for canoes.

He goes on to say: "And system software." Okay you got me. But seriously, it's important to be portable, but you have to also consider the time it's going to bleed from your project to be too portable. Portability can eat into system resources as well. So portability has to be handled delicately. There has to be some level of portability, but I think it's in the middle of the curve.

13. Enrapture the customers.

This is one of Microsoft's mantras, and it's where Microsoft and the Open Source community disagree, fundamentally. I think we have to examine this and discuss it. Personally, I think that placing your customers in a jar is a bad idea. Let them move around between programs, and have your feature set on any given product robust enough to get the main tasks done, but allow for the growth of other niche products. You can develop them! Also, it's evil to try and trap your customers.

"Customers buy multiple releases over a relatively long period of time."

For some reason, they should not have to. And that's another difference between Open Source and Microsoft.

"Market understanding is the foundation of great software."

No. Microsoft understands the market so they can make more money, but the foundation of great software is only built on a solid foundation of trust, effectiveness, security and the satisfaction of customer needs. The market understanding is a business facet and your programmers should not be interested in the business side of things. They should be only interested in raising the bar in simplicity, ease of use, feature assessments, and debugging -- not if a rival has launched a product with X feature that we don't have yet.

14. Remember one thing: Unity.

Again with the Borg drone. Resistance is futile. But I have a problem with this statement: "Since everything you need is there, you aren't tempted to go beyond the present experience, and since nothing is there that isn't required, your absorption into the world of the product will not be disturbed." That's just a lie. Microsoft adds plenty of crap that is not needed. They push products based on features they can manufacture from competitors, to satisfy fake needs, market needs. What customers really need is reliable software that gets the job done.

15. State your theme.

Themes are for templates. NEXT!

16. Vary it.

NEXT!

17. Balance it.

NEXT!

18. Evolve it.

It should be open to the customers to create their own themes, and have a default one designed by a different department than the coders. Design the basic template to be very plain, and show users how they can change it as soon as they get it. You can't satisfy anyone this way. Keep it simple.

19. Your product should be a hierarchy.

I disagree. Your product should be a hive.

20. Establish a shared vision.

No. Establish nothing. Accept the vision of your team. Just accept it, or build a team that has the smarts to get the job done. Establishing "shared" crap is nothing but a way of saying, "our shared vision is... do it this way". But then it's not really shared, is it?

21. Get the team into ship mode.

This one is right out of Dilbert! "Generally, a complete awareness of the effect of shipping (or not shipping) will create desire." Yeah, no shit, Sherlock! So like if you don't ship, you get fired, we lose our grants, and so forth. So back to the Gestapo crap. I think it's about working with the team to do something important and letting them decide when it's ready. Back to the Id Software example.

The team should have nothing to do with shipping. Once the product is done, it should be shipped by a different team, and your programmers should be put on vacation because they deserve it. If you ship products that aren't bug-riddled, that's the way to do it. Obviously have some people back just in case, but I would reward the majority for a job well done, not increase their work at the end of the cycle.

A very interesting article (0)

Anonymous Coward | more than 9 years ago | (#9528228)

I have the impression that the article would get less cynical comments here if it were written by someone from a different company.

It really contains good, simple principles. My favourites: "Beware of the man in the room" is a very realistic example. And so is "don't know what you don't now".

Tom

Microsoft's flowchart (1, Funny)

Anonymous Coward | more than 9 years ago | (#9528234)

Start
|
Alpha version
|
Enough bugs? - No - Add features
|
Yes - Create a separate product to deal with it
|
Beta version, release as golden master
|
Stop

Blind to portability (2, Interesting)

amightywind (691887) | more than 9 years ago | (#9528240)

12. Portability is for canoes.

And system software.

Portable free software is in the process of dismantling his company. You would think he would acknowledge that.

Portability is underated... (1)

El_Ge_Ex (218107) | more than 9 years ago | (#9528245)

From Article: Portability is for canoes. /me stares dumbfoundedly at one Lin/Win software project before minimizing the window and stares at the _other_ Lin/Win project he's working on... :p
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account

Loading...