How Microsoft Develops Its Software
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.'"
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.
G-Force music visualization
So true. And "in a public place" is definitely an important part of that - when a build fails, everyone should be able to see the compilation error.
The Army reading list
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...
Hmmm.
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.
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.
I'm in the hole of the broadband donut.
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.
Check out my sysadmin blog!
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)
Who would be there competitors though?
OS Market: Mac OS, GNU/Linux crowd, BSDs and proprietary Unixes.
In that market no one believes that MS is the best and most stable game in town, just the easiest for the average PC using peon to use, but some studies indicate that Apple's UI is actually more intuitive; but with the hardware so expensive most folks just buy the cheapy PC.
Productivity Market: Appleworks, OpenOffice/StarOffice, others?
Well AppleWorks doesn't come close to resembling a real productivity sweet having used it myself and getting horrible headaches. OpenOffice is getting close to being as good as MS Office but there is a familiarity issue that stands in its way more than anything else, so I guess MS could be considered 'better' depending on how we define it.
Server Accessories (Exchange, IIS, SQL): Apache, MySQL/PostgreSQL/DB
Exchange is kind of nice and I am not aware of any really strong competitors to this but I am sure they are out there. Apache simply creams IIS on every point as a web server except maybe for lack of a GUI; but IIS is no where near as flexible, not even version 6. MS SQL is well featured but for thousands of dollars it should be. MySQL and the other OSS dbs out there are just as full feautered and cost a WHOLE lot less.
I work with MS boxes at work, use nothing but macs and home and have a couple of BSD and LInux dedicated boxes and have to say that although MS software is as pervasive as STDs are becoming, it is nowhere near the optimal platform for much of anything except solitaire, but I prefer chess on my mac as it demands a bit more thought. But then again I do not comprise the segment that would be considered an 'average PC user.'
Even if I knew that tomorrow the world would go to pieces, I would still plant my apple tree. -Martin Luther
There's so much bullshit in this article, you won't believe. I don't know who this guy is, but any MS developer worth his salary would laugh him out of his office over that "Don't go dark" thing. That's the only way to get anything done at MSFT. If you participate in all the meetings that are scheduled for you and get "buyoffs" from everyone you will NEVER get anything done. So it goes like this, you participate in the meetings at first (to make you look good when review time comes) and then you go PITCH BLACK, not just dark and deliver the code. It's always easier to get forgiveness than to get permission.