How Microsoft Develops Its Software 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.'"
Worth considering... (Score:4, Insightful)
Re:My post (Score:4, Insightful)
Re:They develop it? (Score:2, Insightful)
Errrmmm... (Score:3, Insightful)
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.
Re:My post (Score:5, Insightful)
The "rest of the world" has no clue about the nature of software. That quote is absolutely correct.
Microsoft master plan! (Score:5, Insightful)
(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.
Re: on what? (Score:5, Insightful)
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?
Re:My post (Score:5, Insightful)
The 3 rules of thumb for Shipping Great Software (Score:4, Insightful)
I think Linus has proven the effectiveness of that one, and Eric S. Raymond [catb.org] happens to agree with me ;)
Zero defects my ass (Score:2, Insightful)
NT 4 shipped with 65K defects?
The only thing Microsoft never makes a mistake on is Billy Gates' take home paycheck.
People seem a bit hard on microsoft developers (Score:2, Insightful)
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.
Re:My post (Score:5, Insightful)
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.
"Standards." Maybe you've heard of 'em...? (Score:3, Insightful)
#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.
Re:My post (Score:5, Insightful)
Breakdown (Score:5, Insightful)
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.
Re:My post (Score:4, Insightful)
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.
Are the 21 rules working? (Score:3, Insightful)
How much value should we give to these "rules" if they don't actually work?
Re:What's with #6? (Score:4, Insightful)
To use your example, what if this guy hadn't finished his code on time so it wasn't ready for the planned launch window? It's great that it worked out but many companies can't risk the possibility that it won't.
Re:The Whole Difference between Microsoft and Linu (Score:5, Insightful)
You could not be more right. (Score:5, Insightful)
Why? This is what the idiot trainer had to say:
"Problems have to be fixed, where issues get resolved."
It's complete marketing bullshit, and we all knew it, so we would constantly be saying smartassed things like "This caller is causing me issues" and "what the hell is your issue, buddy?" and in the IRC server we had set up for in-call chats, the standard thing went like this:
tech1: MainstreamVidCard is giving a black screen with an hourglass and locking up... wth?
tech2: that card sucks. Tell them to get the übercard.
tech3: LOL
TeamLead1: Try new video BIOS and drivers. Go through BIOS settings, and tell them to stop overclocking.
tech2: LOL
tech3: LOL overclocking
tech1: ok thx!
TeamLead1: NI.
We couldn't say No Problem, so we said No Issue instead. What a farce.
Re:The 3 rules of thumb for Shipping Great Softwar (Score:4, Insightful)
Release early - ie; when you KNOW it's unfinished.
Relase often - ie; it's so full of bugs and unfinished you need nightly builds to work them all out. At this point, you're releasing forever because now you have yourself a moving target with no set "completion" point, or any goal you're trying to achieve.
Listen to your customers - And if they complain just say "well it's free so fuck you if you dont like it". Seriously, no OSS projects "listen" to the customers.
If they did "listen", Linux wouldn't be a monolithic kernel, so I could download binary drivers for my new video card without recompiling it. Guess what, nVidia or ATi are never going to want to open their drivers' source. Doing so would essentially give away all the IP they put into designing their GPUs. A month later, some fab is set up in taiwan producing Radeon clones.
Samba would be able to function as an Active Directory Controller - it can't, and it's not even a project goal, NT4-style is apparently good enough, they haven't even plugged the gaping security holes in the old scheme MS did. Ie; you have to disable "require sign or seal" to join 2k or XP to a samba domain, essentially, you don't give a rats ass about verifying the authenticity of the MD4 password hashes that get bandied about plaintext on the network.
Open source "works", but not all of the time, and not always how you want it to.
Re:The Whole Difference between Microsoft and Linu (Score:3, Insightful)
It works fine if you're the only developer, it works horribly if you've got an entire team developing the software. People on a team need to touch base, and if there's just "guys in rooms" that aren't showing progress, taking criticism, etc, the whole thing can implode.
You're right that linux was initially written by Linus, but he also wasn't working as part of a team at the time.
Words of wisdom for Mozilla project? (Score:4, Insightful)
Wow, the Mozilla developers could really learn something from Microsoft here. Maybe they should contact MS and ask how they can switch from a build environment that supports 10(*) or more platforms to one that just supports Win32.
While they're at it, maybe the IE core team can help them out with how to introduce Mozilla features that allow arbitrary, hidden software to be easily and automatically installed on the user's machine.
(*) Technically, I suppose the Mozilla team builds for 3 platforms (Win32, OS X, and Linux) which does probably limit the amount of QA testing required, but this is still usually 3x as many as the Microsoft people deal with, and the build system enables at least 7 more platforms on top of that.
Re:Worth considering... (Score:3, Insightful)
I don't think anyone would stoop so low as to say they put out the WORST product out in the market
No, those honors belonged to Rational Corporation (a company whose products were so unstable that it made Windows 95 look good) and IBS, the makers of SBN, the most foul program to ever disgrace the software industry.
Re:What's with #6? (Score:3, Insightful)
How often do you re-invent the wheel? Has someone inside our outside of your company already made part of your job easier and you don't know it?
Lack of communication (both formal and informal) may increase time to devote to development, but it will cost more is software reuse, more time troubleshooting, and make application support much more difficult (there's only one person that can fix that, and they are on vacation or quit etc...).
Yep, that's Microsoft alright. (Score:4, Insightful)
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.
Wow...yeah, that's Microsoft alright. Don't bother writing software for anything but the One True Platform. Amen. Never mind the fact that Windows runs on...hmm, lets see...x86 and ummm...well. I suppose there might be a few others, but I couldn't tell you for the life of me what they are. Linux on the other hand...
If you're writing a client side/GUI app, you can get away with this mentality. Try it on the server side and your product goes nowhere. I believe this is one of the reaons that Microsoft has had (and will continute to have) problems getting entrenched in the Enterprise computing market.
Re:My post (Score:5, Insightful)
Re:Zero defects my ass (Score:1, Insightful)
More fun was later when I decided to research what these thousands of defects were. As I thought, many were stupid cosmetic bugs, others were obscure bugs related to ancient hardware, others were documentation errors. I'm not saying every one of the defects were trivial, but the vast majority of them were.
Re:Microsoft imitates Rummy (Score:1, Insightful)
and applicable to everyone...
there are things I know that I know, like C
there are things I know that I dont know, like how to speak chinese
and there are things I dont know that I dont know, and as such would be impossible to give an example of...
but it makes plenty of sense, especially regarding intelligence and counter-intelligence...
Re:My post (Score:4, Insightful)
I can't help to think that you have no-clue(tm) and are trying to hide it by mixing with the oss/developer crowd since expecting perfectness at every milestone can't come from extensive IT expierience.
Re:Really? (Score:4, Insightful)
All of that can actually be attributed to poor management. Not necessarily in the sense of management not understanding the process, but leaning more toward the "ship the products for $$ sake" rather than "build better products for less profit, but better reuptation" business model.
MS is in the business to make money. So far that's worked out quite well for them, regardless of the quality of their products. OSS has done a fairly nice job of forcing MS slightly into the latter business model, but as we all know, not far enough. It may never happen that MS fully embraces the idea of building better products for less $$.
As a programmer with 13 years of professional experience, I can attest to the fact that an app with no defects/bugs/issues/ on the first compile would be a miracle. Programmers have trouble thinking like users and consequently have trouble imagining every possible way of breaking their app.
That being said, I firmly think that most of MS's problems with software have much more to do with management than with the developers themselves.
some developers from MS discuss how they deal with damage control on a daily basis. I think that would drum up some interest.
Typically, that's management's problem, and if it never makes it back to the developers, they continue coding on what they're told to code on.
My $0.02 anyway.
Re:Worth considering... (Score:1, Insightful)
Here is a tip: Take pride of your products and stop trying to take over the world. Create a compelling, good product without bloat and the world will be better for it.
Re:Worth considering... (Score:5, Insightful)
I don't think anyone would stoop so low as to say they put out the WORST product out in the market.
I don't want to get into a flame fest, but since you claim they don't produce the WORST product in the market, and since Windows is such a large part of their revenue, I challenge you to find:
Please limit your responses to commercial vendors. Naturally, we'll exclude non-profit and free-software vendors because they couldn't possibly have the financial resources necessary to produce quality software.
Why is it that everyone looks to Microsoft for advice on code quality when, after 20 years of writing operating systems, they still can't keep it from crashing? Microsoft's genius lies not in their code quality, but in their marketing department . A study about how Microsoft markets their software would be much more enlightening; their code quality is nothing to which we should aspire.
0. Shamelessly imitate (Score:3, Insightful)
Consider that Microsoft developed Windows (Mac), Excel (Lotus 1-2-3), disk compression (Stac), IE (Netscape) and the rest using other people's work as templates and the true value of #1, #2 and #10 is revealed:
1. Don't know what you don't know.
2. Get to a known state and stay there.
10. Design time at design time.
Then there's the way they "develop" products including MS-DOS, PowerPoint and Visio...
3. Remember the triangle. resources (people and money), features and the schedule
The lessons of Microsoft "development methodology" belong in university commerce and economics departments, not CS.
The missing rule (Score:5, Insightful)
Like with portability.... NT was supposed to be the portable OS, on MIPS, PowerPC, Alpha. But as that didn't take off, now 'portability is for Canoes'.
No company can match Microsoft for blatant and unabashed hypocracy. This article is a good example.
Re:My post (Score:5, Insightful)
To me, there is more to "great software" than solving one set of problems. It is solving them well, and well... if you create more problems than you solve, I'm sorry but that isn't "great software".
Yes, I use alot of Windows software, and no I'm not a Linux zealot (love Knoppix though). With the exception of IE (which I abandoned long ago), most Microsoft software I use (Office, Outlook) is "good enough" but certainly not great.
Re:My post (Score:5, Insightful)
In the real world this doesn't happen. Deadlines slip, and if they slip to far management and / or devs have to decide what are the most important things to fix. Sometimes this means that documentation is left incomplete or with spelling errors, sometimes it means that if you click foo, bar, baz, while spinning on your right heal and alt-ctrl-hyper-meta-shift-clicking on the about box the program will crash or throw an error, and sometimes it means that spellcheck will be disabled until version 1.1 of the product. That's how development is, or a least in my experience.
Re:My post (Score:5, Insightful)
Still bullshit. A bug is a defect.
Re:Breakdown (Score:5, Insightful)
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.
I think the 'triangle' is one of those seductive things that is almost right, and therefore is an open invitation down the proverbial garden path. Fortunately, it's not hard to fix. Let's take the elements in order:
Comment removed (Score:1, Insightful)
Re:Microsoft master plan! (Score:2, Insightful)
And really, what's up with all of this bitching about MS bundling and eliminating the competition? If Linux had 90% of the market these same companies would STILL be out of business.
PS. Go ahead and mod this as flamebait, because given the fact that I know just how irritating it will be to the zealots IT IS. But its still the truth and no amount of teeth gnashing is going to change that.
Too Many Managers (Score:2, Insightful)
Shipping is just the final milestone.
How wrong! Shipping is just the 'start of adult age' for software.
There are only three things that you are working with as a development manager: resources (people and money), features and the schedule.
So people are things, and shipping is the objective... Wow! Let's call it productivity minded!.
I don't buy this line, after more than two decades actively programming, I prefer the 'keep the people on' motto, really. Even more, I can hardly think on being 'proud' of making some software product if the people involved were considered 'resources'.
Re:My post (Score:3, Insightful)
In a QA sense, a defect is a problem that is found as opposed to a defect that exists. For example: If Clippy doesn't give the right response to the word "Hamdingers", but nobody tests for use of the word "Hamdingers", then a bug exists but not a defect. It is not a defect because it hasn't been reported. He meant that all the tests are passed, not that all bugs are found. (He did explain this, btw.) This is not double-speak.
Somehow I doubt this particular topic would have come up if Linus had been speaking.
Great Software? (Score:3, Insightful)
But we all know Microsoft software has some severe problems. Security - gets viruses, spyware, trojans easily. Crashes.
Is this because of the design process or for other reasons? Here are a couple reasons why Microsoft software could have all these problems in spite of a good design process:
- Keeping backward compatability at all costs. This has been a key to Microsoft's success. It makes for ugly code but it keeps customers. It also leads to security vulnerabilities. If the internet ready version windows was designed fromt he ground up for security, it would have been a lot different.
- Hairballing stuff together that should be seperate. IE is hairballed into to OS to work around anti-trust law. Now the media player is hairballed into the OS for the same reason.
Comment removed (Score:5, Insightful)
Wow, what a troll... (Score:5, Insightful)
These "21 Rules Of Thumb" are distilled from McCarthy's "Dynamics of Software Development" book, which has been on the bookshelf of almost every dev lead I've ever worked with or known. You could have a similar "argument" about how good IBM software is (WebSphere?), but at the end of the day, if you're doing it to critique The Mythical Man Month, you're going to sound really dumb.
More importantly, all bitching about MSFT quality aside, McCarthy was dev/program manager on Visual C++, which is not a poorly-regarded Microsoft product (it's one of the best compiler products on the market). There are extremely successful products --- successful on every axis --- that come out of Microsoft. Visual C++, and McCarthy's book, represents one of them. Microsoft Excel, and Joel on Software, represents another.
Microsoft is a huge company with an enormous talent pool and many very qualified, very effective well-jelled teams. You do not sound credible when you try to tar them with the "Microsoft is buggy crap" brush, especially when you're arguing with McCarthy or Spolsky.
Re:Worth considering... (Score:5, Insightful)
Which I've always thought was exceedingly bad advertising. Either
Process is all well and good, but unless it produces good product, it's pointless. By the same token, once I see the folks at SEI use CMM or their "Personal Software Process" to actually produce a decent piece of software I might actually be convinced that said processes are worthwhile. Until then, it's all just hot air.
Re:My post (Score:4, Insightful)
By that deffinition, there is a lot of "great doftware" out there. And almost not bad software.
Good Software does what marketing says it does, correclty and as expected.
Great software is good sofware plus its simple to use and does things that you didn't expect it to do but that come in handy, while not annoying the hell out of its user.... more or less
just my huble opinion.
Okay, I'll bite this troll (Score:5, Insightful)
Right.
, but since you claim they don't produce the WORST product in the market, and since Windows is such a large part of their revenue, I challenge you to find:
First of all, the question itself is ridiculous. I can quite genuinely say that Windows XP has never crashed for me or been broken into. However, Linux has frozen up on me several times, and it has had kernel exploits in the past. But that doesn't make Linux less secure or less stable.
The fact that Windows is used WAY more than Linux means you'll get a greater total sum of crashes and breaches, but that doesn't make Windows less secure or less stable. You're arguing a ridiculous premise.
* An OS that is less secure than Windows.
Remember that Slashdot article about how Linux was the most-breached OS on the net? I sure do. A Slashdot editor even modified the headline so it said "Linux Most Attacked OS On Net" instead of "Most Breached" so it didn't look as bad.
* An OS that crashes more frequently than Windows.
Windows never crashes for me. I haven't seen a BSOD since 1999. But, Slashdotters seem stuck in the late 80s and think Windows 98 still represents the stability of Windows today.
I had Gnome crash my laptop under Red Hat 9 the very first time I used it. So fucking what?
* An OS with a EULA more restrictive than Windows.
This is a silly question to throw in. Windows' EULA isn't much more restrictive than, say, IBM's EULAs or Apple's. As if the EULA has anything to do with the operating system itself. Complain about the legal department but not the software development department.
* Software which has slipped the scheduled release date more often and by a larger margin than Windows. IIRC, Microsoft hasn't released on OS on time in the last 10 years.
Yeah, and how late was 2.6 again? Oh, that's right, it shipped a year later than Torvalds said it would. Again, this is a completely ridiculous argument.
I know it's l33t to be a raving Linux zealot, but a lot of people are really getting tired of it, as evidenced by the posts I've been seeing lately that are getting upmodded. I'm very pleased to see more and more people approaching things rationally and fairly now--even if Slashdot editors don't. The very fact that Clippy jokes and BSOD jokes are still upmodded--two things 95% of Windows users haven't seen since 1999--shows you how stuck in the past zealots are and how they won't let go of their old Windows 98 experience. They're competing with old 9x versions of Windows when meanwhile everyone else moved on when the codebase unification to the NT kernel happened in late 1999, and we got Windows 2000.
But, I forgot. This is the "year of Linux on the desktop." Hey, remember that article Slashdot posted that said Linux desktop usage would overtake Apple's in a year? I even had one Slashdotter cite it to me as evidence for a point he was making, simply because Slashdot had reported it. So much for that.
If you're a Linux newbie and you're coming here for tech news, you're doing yourself a great injustice, as everything will be skewed and you will get a huge wrong impression about how the tech world is doing.
Re:My post (Score:4, Insightful)
Would you tell that to a holocust survivor? Someone that lost a spouse in the twin towers?
Yes, these Micorsoft's crimes are less important than that.
But that does not change the fact that they did it.
Look, every unrepentent criminal that gets caught goes through the following stages:
1. Denial - (I didn't do anything wrong)
2. Deprecation - (It was just a little thing)
3. Amnesia - (Forget about it, didn't I apologize... just let it go.)
SOME criminals have a 4th stage ... admittance, repentence. Microsoft has NEVER done this. They repeatedly commit multiple crimes and when judges try and punish them for it, they complain and show their cash and expect to be given minor punishments to keep their employees working. Microsoft has repeatedly used illegal methods to put more people out of business then they employ. They weasel there way out stuff. Their products are not superior except where they sabotage other people's products.
If they were 1/2 as good as they think they were they would not need to do the sabotage. Why should anyone let it go? That is stupid. We should never forget, so that when they try to commit more crimes we will be for-warned and pre-pared for their attempts.
10 other rules (Score:5, Insightful)
These rules of egoless programming have been circulating on various sites: [com.com]
Like most platitudes, they apply in some situations and not in others and there are plenty of valid exceptions.
For instance: Treat people who know less than you with respect, deference, and patience -- but don't let them tell you how to do your job.
Or: Fight for what you believe, but gracefully accept defeat -- and when you turn out to have been right, don't let anyone forget it.
Re:My post (Score:5, Insightful)
Does Knuth's TeX program have bugs? He will
send you a cheque if you find one
TeX was designed, then implemented. It works
"Portability is for Canoes" (Score:3, Insightful)
The thing is, you really _don't_ want to be in the business of having to worry about platform-specific concerns for more than one platform in your own code.
If you try, you'll either end up essentially writing your own meta-platform (building and debugging it from scratch, consuming development time better spent elsewhere), or your code will become a mess of #ifdefs and specializations which can only ever be built or tested on obscure platforms (meaning most platforms will always be moderately broken).
What you want to do is pick a platform that lets you run on a range of systems -- i.e. "leave it to your system software".
Inkscape's "platform", for example, is for the most part not POSIX nor Linux nor Win32, it's Glib/Gtk+/Pango/Gdk + libxml + STL.
We still have a number of platform-specific subclasses and #ifdefs (many inherited from Sodipodi), but we're actively working to reduce (ideally eliminate) them.
For example, most recently (in CVS), we replaced the typography subsystem we inherited from Sodipodi with a little bit of glue code on top of Pango.
In the process, we gained a lot of features that Lauris never had time to implement or debug in Sodipodi's private typography library, like using the kerning information specified in fonts, and the hardest parts of support for rendering "interesting" non-Western scripts.
Just be sure that the set of libraries (your platform) which you write to is widespread and well-tested on the systems you care about.
I guess given the systems David's employer cares about supporting, his choice of Microsoft platforms shouldn't be altogether surprising.
Re:Okay, I'll bite this troll (Score:1, Insightful)
Re:My post (Score:3, Insightful)
Okay, but... (Score:3, Insightful)
Where's the commercial OS worse than Windows?
If my job as a project manager is to ship software on time and bug-free, why would I listen to Microsoft, which has done neither?
Incidentally, my mother was a project manager for many years, and she managed to bring every project in on time, beating some deadlines by 50%. And bugs were simply not accepted - the project wasn't done until the bugs were corrected. Microsoft sets its own schedule, and they still can't ship bug-free software on time.
Comment removed (Score:3, Insightful)
Re:My post (Score:3, Insightful)
No, that is functional software.
Great software solves the customers problem (functionality), is light weight enough to serve their needs for a few years (scalable), does not crash nor lose data (reliable), addresses the problem before it gets out of control (timely), and provides more benefits than it cost (ROI.)
Microsoft has never delivered a "great" piece of software, and never will. Their model is not based on "great" software, it barely qualifies as meeting one out of five in most cases. Their model is based on "deliver overpriced crap, then charge more for the upgrade."
To me that is called "fraud" and "theft", not a "great" product.
Can't get away (Score:3, Insightful)
I don't think you can get away with this, really. For one thing if you are writing only for Windows you are then ignoring a pretty attractive market - Mac users. The marketshare may look small but in general Mac users have a bit more money to spend, and additionally you are not going to have as much competition.
But the other aspect that should lead a company to produce portable code is that by doing so, you avoid tieing your own product to any one OS. Then when that OS upgrades, you are probably going to have an easier time having it work on newer versions - plus if other OS's become more popular over time your product is not weighted down to just the one OS.
Basically, the disipline of trying to make code work in multiple places will have other more intagible benefits - I think it's a mistake to discount this.
Re:Okay, I'll bite this troll (Score:5, Insightful)
My personal computer routinely goes 60 or more days between reboots. Mainly it's rebooted because I feel like it, haven't had any issues with Windows 2000, XP, or 2003 that can't be traced to a crappy device drivers, with XP and 2003 it's simple to roll back the driver.
One of my DCs went 6 months before I decided it was time to install patches and reboot. Some consultants that I have talked to has had an NT box running 22 months and counting.
Windows can be just as stable as a well admined Linux system, just as Linux can be more unstable than Windows 95 when it's in the hands of someone that doesn't know what they are doing.
Re:Okay, I'll bite this troll (Score:3, Insightful)
Same goes for Windows.
I think you're trying to cover up things by ignoring hardware-driver crashes.
Re:What's with #6? (Score:3, Insightful)
The best team of developers I ever managed still warranted the advice to "beware of a guy in a room." Especially because these guys (they all happened to be guys) were so good, it was possible for any one of them to produce something arguably good and valuable, but which couldn't be used because the cost of incorporating it (in terms of integration and testing) would threaten the schedule. And it would be far more demoralizing to tell someone we couldn't or wouldn't deploy their cool work than it would be to point out ahead of time that it would have to wait for a better time.
I didn't waste their time in meetings. I dropped by every couple of days and chatted about what they were doing, and describe how other (relevant) parts of the project were coming along and how all of it was going to pull together. More often than not, their very professionalism would cause them to adjust their efforts and do something differently than they might have if I left them alone for a couple of weeks.
Re:Okay, I'll bite this troll (Score:3, Insightful)
As compared to the raving Windows fuckwits who've been claiming for years that Linux will never be able to compete with an MS OS, that it'll never 'be ready for the desktop', that MS software is somehow superior because, well, it's produced by MS? Have you forgotten about these stupid little shits?
There are plenty of assholes on both sides of the spectrum. It's rather clear you'd prefer to pretend that the vast majority of loser fanatics come from the Linux zealot camp, but anyone with half a brain and even the slightest bit of impartiality knows that MS has more than it's share of borg-like twats willing to run to its rescue.
Try getting real. Zealots are assholes BECAUSE THEY'RE ASSHOLES. It doesn't matter what they peddling. Lumping Linux into the mix because that happens to be the bandwagon for one subset of zealots is not only ignorant, it's pathetic.
Max
Same as Linus plan isn't it? (Score:3, Insightful)
Re:My post (Score:3, Insightful)
or
A defect by any other name is still fucked up!
Some clarification (Score:3, Insightful)
Obviously few people here understand the meaning of a defect in the softwre development process. It is a deviance from the expected behavior as described in the documentation for the current phase.
The difference is that the documentation for early phases do not have the same level of detail as later phases. Modules aren't fully integrated with each other, so unit test cases must be used. Additional functionality may be added later as well.
The term defect is manager-speak, but it is very useful because it describes something you can measure. It is straightforward to verify that a software project meets a list of criteria to pass a phase gate. It is not possible to determine whether a project is bug-free, because that would take an inordinate amount of test time. This is why real software is never bug-free.
Re:Wow, what a troll... (Score:5, Insightful)
The last time I looked at GCC --- and you can correct me where I'm wrong, but, without citing what Apple has done with Xcode, tell me what out-of-the-box dev environment you're referring to --- GCC was inferior to Visual Studio. Here's why:
I'm sure GCC has made strides (and I think if you factor speed out of the equation, Xcode has surpassed Visual Studio), but when I was doing cross-platform Visual Studio and Linux GCC dev, Visual Studio won hands down. And don't get me wrong: I like Linux better, and my Visual Studio build environment was Cygwin CLI --- but my compile ran faster on Win32, and my debug sessions were easier.
If you think GCC is a great compiler product, I'll agree. I think the fact that Visual Studio bested it is a strong argument for my point that Visual C++ is not a poorly regarded product.
Re: What does "Zero Defects" mean? (Score:5, Insightful)
Here is an example:
Say that you are writing an HTML widget.
Milestone n states that the widget will display paragraphs (<p> elements) correctly, but says nothing about the widget displaying tables correctly.
When the widget is tested, it displays paragraphs correctly, but does not display tables at all.
The widget is not fully working.
It has bugs.
But, in relation to milestone n, it has zero defects, i.e., it passes all of the tests for milestone n.
While I don't agree with everything in the article, and while I am no fan of Microsoft's, I think that the whole "zero defects" thing has been taken out of context here by several posters.
Er (Score:2, Insightful)
BTW, don't you ever get tired of spreading FUD for Microsoft? Actually, I think you enjoy it. Do you enjoy beating your wife?
Re:My post (Score:5, Insightful)
Re:I've worked there, and I must say (Score:3, Insightful)
Re:Wow, what a troll... (Score:3, Insightful)
Yes.
Visual Studio has working precompiled headers out of the box.
This is now true of GCC as well.
Visual Studio has a good incremental build system (and fix-and-debug support).
That's not related to the compiler, that's just a function of the IDE. I sometimes use flymake mode in emacs to achieve a similar effect. It's less cool than the VS equivalent but does work in a lot more situations.
GDB C++ support is a wreck; it has trouble demangling symbols, it chokes on template instantiations, and it gets line-number confused.
I don't know about that but I've never heard of such problems nor encountered them myself ...
GDB thread support is a wreck.
That's no longer true on a modern distro
Visual Studio generates better X86 code than GCC.
That's true. Flip side is that VS only generates X86 code, which isn't always what you want.
The Visual Studio UI canvas is better integrated with the compiler than Glade is with GCC.
Again you are confusing the compiler with the IDE. In fact, while the Glade/environment separation is sometimes annoying it's mostly useful. It means you can use whatever editor/coding environment you want unlike with Visual Studio where if you want to use the VS form designer you must use the VS editor, VS build system etc etc. Separate tools do not necessarily imply lack of integration even if in this case Glade is rather lacking.
Microsoft seems to like people who think fast (Score:5, Insightful)
rather than deeply.
The Microsoft interview style is to ask the interviewee a constant stream of white board programming problems and throught puzzles. While this selects people with a certain level of intelligence, it also selects people who can think rapidly "on their feet".
Perhaps the end result is to select a homogenious population of "Softies" think fast, settle on an approach and then hack it into code. Where a better approach to product development might be to think about the design, think about some alternatives, discuss the design and then implement it.
Many people agree that Microsoft software evolves once it has been released. The common example being a first product that is inadequate, buggy and slow, eventually evolving into something that becomes popular. Perhaps this is a result of a culture of programmers who believe they are very smart (after all, they survived the Microsoft interview), think fast and then entomb their initial half-baked design in software.
Re:Do you know what website you're on? (Score:3, Insightful)
Yada yada. Guess you're one of the twats I was talking about. Cue Billy G-worshipper rant on just how 'unready' Linux is. Not that we haven't heard this bullshit argument a THOUSAND TIMES already, but hey - when does that deter a zealot?
If you're going to sit there and tell me Slashdot is some balanced place of 50/50 Windows versus Linux zealots, you're completely lying.
Hey there Homer, try 'Reading Comprehension 101' and 'How to Present a Strawman Without Looking Like An Amateur 103'. Which one will be most helpful depends on whether you're just plain stupid or making a pathetic attempt at being deceptive.
Where did I lump Linux into the mix? Oh, that's right, I didn't.
Oh, that's right - you did. Linux zealots is what your whole post was about. You aren't related to the late President Reagan, are you?
But you felt that your religion
If Linux were my religion I'd never admit that there are plenty of assholes and zealots on both sides of the fence. Here's a quarter, go buy yourself a clue.
Oh, and my penis is bigger than yours no matter what I post on Slashdot. Zealots, as a rule, have tiny peckers. It explains a lot, when you think about it.
Max
Re:My post (Score:2, Insightful)
Anti-virus writers, anti-spyware writers, etc certainly are making money off of M$ customers.
Let's all jump on that cash cow.
Re: What does "Zero Defects" mean? (Score:3, Insightful)
I'm losing my patience for this type of weasel-y behavior from developers. It would not fly in the manufacturing industry. Software developers break the standard (either on purpose or out of ignorance), and then send PR people on a world-wide, media-weasel word-mincing tour in the hope that if they seriously damage the public's understanding of the issue, the public will eventually abandon its quest for answers.