Software Engineering at Microsoft
an_mo writes "A link to a google cached document is floating around some mailing lists containing some info about microsoft software engineering. In particular the document contains juicy bits about the development of a large project like NT/2K. Some examples: Team size went from 200 (NT3.1) to 1400 (Win2k). Complete build of win2k time is 8hrs on 4way PIII and requires 50GB of hard drive space. Written/email permission required for checkins by the build team." The HTML version on Usenix's site is much nicer than Google's auto-translated version.
So for something like Windows 2000 is that a long time?
Show-Stopper!: The Breakneck Race to Create Windows Nt and the Next Generation at Microsoft by G. Pascal Zachary
very funny about the head guy throwing chairs out of windows ( the phyical ones ironic really )
and the black team....
read it and Mythical Man-Month, and then you might have a small background
regards
john jones
show stopper from
when has been recomending books on the subject a troll (and it was done by someone with unlimted
"Showstopper!" was fascinating. David Cutler really is a genius. NT had the potential to be a truly great operating system. I would have loved to have gotten a chance to play with it before they bolted win32 on top of it. Everyone who has the slightest interest in operating systems should read Showstopper.
Guys, the PowerPoint slides for the Lucovsky presentation has been publicly downloadable for almost 2 years. I always find it sad when Slashdot reports something old as something new.
h tml
Go get the slides at http://www.usenix.org/events/usenix-win2000/tech.
Formal checkins. Make you own branch and go butt nutty in it. Sync to the trunk often. Let them review your changes and integrate on their own pace. Code review. Once again - having anybody - even inferior programmer to look over your code will do wonders to your own understanding and skills. I am a good coder, and I beg other people to review and comment. The more I ask - the less problems they find - I am getting better. I hope you do not assume that you have no way to improve - otherwise: you are a big fat liar. My goal is to write code so clear that they can understand what and how it does without my help. Large, geographically concentrated development teams. That one I would agree. Adding people slows everything down. Full team should not be above 20 engineers, and some QA - above that, keep splitting projects. If you think it is not possible - you are a lousy architect.
<^>_<(ô ô)>_<^>
You can see the linker version using this command:
dumpbin %systemroot%\system32\ntdll.dll /headers
sometimes it makes sense to read the article before you comment. (i know the chance is smaller to get modded up ...). the article says:
Complete build time is 8 hours on 4 way PIII Xeon 550 with 50Gb disk and 512k RAM
keep it simple.
Those claims are clearly gross exaggerations intended to fool idiots and judges into thinking IE is an integral part of the OS. They define "IE" as every line of code exercised by IE in doing its thing, including mundane things like writing to the screen or saving a file. Then they discover if you pull out all the code for "fwrite" suddenly the system stops working. Duh! It's like claiming your car won't run without the windshield wipers, defining the windshield wipers as everything needed to make them work, including the battery. So you pull out the battery and, what do you know, the car won't start.
UML and other modelling fads.
While UML isn't the end-all, be-all, it is certainly not a "fad". When it comes right down to it, your will need to be able to describe the architecture of your code with something more than comment-lines and manpages. And, with the "U" in UML standing for "Unified", the is the ability for a new-hire developer, or perhaps the purchaser of your source-code, to understand what the hell is going on without pouring over millions of lines of source code.
Code review is a power trip and best
I suppose you'd rather accept source code sight-unseen? True, there are good and bad ways to conduct code reviews, but all the code reviews I've been a part of have been a fairly easygoing experiences and almost always helpful. Sometimes you really need another set of eyeballs to catch problems. Isn't that one of the good aspects of OSS??
Large, geographically concentrated development teams
I'm torn on this one. Yes, it's bad to simply throw a large number of developers on a team (unless you break them down... way down). On the other hand, you can't tell me that it's not easier to resolve a problem by walking over to the co-worker in the next cube than than email the co-worker who lives thousands of miles away. Didn't the formal release of Mozilla 1.0 get held up because a few key developers had not signed off on the new open source license and they simply could not be found??
the later slides describe the NEW project resource management and development processes for the continuing development of Windows 2000 (before and up until after the release?)
Slides 23 and up tell you what they did and how well everything works on a project as large as Windows 2000 is.
This slide gives a sumary of the new build processes http://www.usenix.org/events/usenix-win2000/invite dtalks/lucovsky_html/sld033.htm
I follow the SDK and GDN principles.. Spelling Dont Kount, Grammer Dont Neither
The proper care and feeding of trolls...
Eitehr you're a troll, or you've never done any real development.
UML, can't comment on. Never did any. What I can say is that design is important, and shooting from the him on 20million lines of code won't get you very far. If UML helps you design, use UML.
Formal checkins. In large complex projects, you need to be absolutely sure about your units. So many places for things to interact, if you don't have them as solid as you can get it, you'll get so many interaction bugs you'll never get anything done.
Developer time costs $20-40 an hour. Ha, now I know you've never done real programming. Developer wages start maybe at $30/hr (not $20), up to $100/hr at spots. Thats just wages, not benefits, taxes all that stuff. If you have no experience in big projects, don't talk.
Code review Code review is easily the best way of debugging. Study after study find that Code reviews find more bugs per unit of time than any other technique. as side benefits, it also transmits techniques from developer to developer. This comes from developers who want to learn and 1) too shy to ask 2) don't know that there is a better way. I learned something in code reviews, some techniques I never thought of.
Can it be a power trip? yeah. CAn it lead to a clash of egos? yeah, but thats up to the review lead to control. A good review lead will keep that in check.
Large, geographically concentrated development teams
Not surprisingly, this is the model that Linux and most Open Source software uses
They have no option because they can't pay developers, so no chance to get them in a concentrated area. There are plusses and minusses with the concentration.
why OSS is phenominally successful compared with any of its proprietary competition
Sales? No contest. MS.
On what definition of success? Bugs? I've seen some really shitty OSS software. yes, the kernel is high quality, Apache, FreeBSD, others.
Grrr. And of course, someone later on points to a blurb that describes SLM:
Joel on Software
"Great men are not always wise: neither do the aged understand judgement." Job 32:9
Windows isnt' built with Visual C++ whatsoever. MS uses a custom internal compiler pretty much designed for building Windows and nothing else. In fact, during the Win2K dev process I'm pretty sure they took 4-5 different compiler drops. It might be based off of VC (I honestly don't know) but I know for a fact that they do NOT use VC at all to build Windows.
JD
Serialized Development
The model from NT 3.1 -> Windows 2000
All developers on team check-in to a single main line branch
Master build lab synchs to main branch and builds and releases from that branch
Checked in defect affects everyone waiting for results
So why can't you just build 2K without those 2 subprojects, or just stubs inserted for the functions declaired in those projects?
The thing you must understand about Microsoft code is that everything is a component, OLE in the old days, COM now. That's why you can easily call Excel's charting functions from your own code, say. It's also why you can run macros inside Outlook, all Microsoft applications are components and scripting glue (like VBA). Wordpad, for example, is almost no code in and of itself, it's a rich text component, a toolbar component and so forth. If you want to build a custom web browser, you can just reuse the HTML renderer and whatever else you need from IE, they are all components.
But this also means that if the internet components were entirely removed, there would be no OS-level TCP/IP support, the online help viewer which uses the HTML renderer wouldn't work, etc. So that's why MS say they can't remove MSIE - because IExplore.exe on your hard drive is just the glue holding together a bunch of components that are provided by the OS and available to any application.
Team size went from 200 (NT3.1) to 1400 (Win2k). Complete build of win2k time is 8hrs on 4way PIII and requires 50GB of hard drive space.
Big deal I worked on a project that had, at that time, 34 hours or so, that was on a 2 way I think though and 4 years. But the project is still growing, more then tripled, since I transfered, according to my friend that still works on it.
Capitalism: unequal distribution of wealth
Socialism: equal distribution of poverty
Portability:
NT4 came out on x86, Alpha, PowerPC and MIPS
--
The world is divided in two categories:
those with a loaded gun and those who dig. You dig.