Why Vista Release Date Really Slipped
anzev writes "A team manager for Windows for 5 years has decided to write a blog-essay about what caused Windows Vista project to miss the due date. Philip tells us in the blog, that Windows developers are writing an average of 5000 lines of code (which is *only* 1200 lines less than the national average of 6200 lines of code per year). He addresses issues like the Vista code being too complicated, the processes the developers have to follow too complex and a lot more. All in all it gives a nice insight into why Vista will be late, from a different perspective. Oh, and Slashdot gets mentioned too ;-)."
Linear extrapolation would take us to about eighty-two-million today, comfortably over Vista's projected fifty-million; but who's counting?
"This isn't some critical release patch. This isn't some driver that's long overdue. Microsoft never hand signed a sheet of paper telling me that I would have my copy of "Longhorn" by the end of 2005 or even 2006. It's a new operating system."
"Oooh, de poor little Vista Developers are sooo overworked. Lets give them a break."
No. Wrong. No break. And no extra auto-credit for being MS. I couldn't care less about Vista being delayed or not. But I will take every chance to turn the situation against all legends that cause people to think Computer == Windows. Usability == Doubleclick. Etc.
Reading that essay - from a Vista Guy with a position - gives of one clear message: Vista actually is a bloated weedy mess beyond any measure. And, guess what, making something new or not, the code that makes the unixes so usefull has been programmed allready and is in heavy field use for quite some time now. Somewhere between 10 and 20 years. After 30 years of unix, hardware finally is fast enough to run it on PDAs and cheap Notebooks. What x86 is to architecture - ancient, crazy, nutcase, but good enough for everything, even a Mac, Unix is to OSes - ancient, crazy, nutcase, but good enough for everything, even good enough for a Mac.
No, no break. Game over I say.
If MS has the guts to burn 10 Billion - 20 Billion on getting a new OS paradigm on to every plattform on the planet and do a good job at the same time they'll maybe make it. But even this late, jumping the OSS bandwagon and burning the cash it takes to take over the whole OSS service, distribution and customization sheebang would be cheaper and have better prospects.
We suffer more in our imagination than in reality. - Seneca
This is my beef with Vista. It is late and when it ships, I expect it to be buggy with many follow-on Service Packs. The reason it is late and buggy is the absurd devotion to backwards compatability. I don't understand it. I could accept software compatability, but the hardware aspect is mystifying. Microsoft could spend five more years trying to get Vista to be all things to all people, but its stupid. OS X ships every 18-24 months. Granted this is not a full up new OS, but these releases are much more significant than service packs. I am of the mind that this is possible because they make the hard decisions about what hardware and legacy support should be cut. (Although it is easier for Apple, since they build the hardware too. Perhaps the saga of Vista shows that the Apple model is inherently more technically sound.)
I thought the number of finished lines of code per developer-day (that means debugged, documented, etc.) was only 20 for an average developer? A top developer will get closer to 10x that (mainly because when they write a lot of code in a day, they don't introduce lots of silly bugs that take a lot of time to correct later). Some developers actually have negative productivity overall (which makes sense when you consider the time spent by their colleagues to fix their bugs afterwards).
I can't remember where I saw those stats: probably something like Code Complete or The Mythical Man Month, I imagine, or possibly the IBM study into developer productivity at different ages (the one that says anyone under 25 is only good for documentation, and anyone 25-30 should only work on one project at once). Does anyone recognise the number?
I can't see any references in the blog post. Where do the figures of 6,200 (and the earlier 9,000) LOC/year come from?
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
The guy is saying there are 50 layer dependencies, and tons of circular dependencies. It's software engineering 101, their model is wrong...they're not properly abstracting out each layer. I'm not a big fan of Linux, but every module can be decoupled in it, and modules work together even though they're written by completely different projects due to standards...that's how you design a proper system.
In the documentary miniseries "Triumph of the Nerds", there's an interview with Steve Ballmer where he describes the various factors that led to the fallout between Microsoft and IBM. One of the big things that he harps on is how the IBM programmers were too focused on KLOCs, while the M$ guys were striving for streamlined, efficient code.
Now we've got one of the head guys on the Vista project going on about KLOCs. Is anyone surprised? Me neither.
Boundless Expansion, Self-Transformation, Dynamic Optimism, Intelligent Technology, Spontaneous Order- BEST DO IT SO!
It amazes me how transparent Microsoft lets itself be. The fact that someone can even post a blog like this about the company using internal company resources. As much as we rant about Microsoft being evil, you'd never see anything like this from Google, the only blogger about the internal day to day Google I know of was fired (Mark Jen).
Cowboy!
In a 'REAL' company, you have to do:
1. Requirements
2. Requirements Review (meeting)
3. Complete Requirements Review paperwork,and store that
1. Design
2. Design Review (meeting)
3. Complete Design Review paperwork, and store that
4. Complete a Design Checklist,and store that
1. Then you get to Code. (insert 1000 lines of code here)
2. Have a Code Review (meeting)
what this really means is that you need to tie up 2 other developers to check your 1000s of lines)
3. Revise all changes and complete Code.
4. Complete a Code Checklist and store that
1. Unit Test
1. Integration Test
1. Update and maintain the Software Design Document (ongoing).
Welcome to CMM!
For us the metrics are about 30 lines per day, but for Rule of Thumb we use 18.
The project I am on started as R&D,then it was fun, we just coded like you did. We did ALOT of good stuff. Then when the product sells and makes ALOT of $$$$, we started to get all these MANAGERS, the ones who thought we were all STUPID, piling onto the project SUKING up all our money. Then we get this CMM crap to do too. Some of it helps, At least if my Requirements change, I start at #1 and managment, if they have any questions, see what the impact of thier whims are.
Now if somoeone would just buy Serena and put PVCS out of its fscking misery. Oh Happy, Happy, Joy, Joy.
They Live, We Sleep
LOL - I got a huge kick one time at a Microsoft SE meeting where some dumb SE gave Gates grief over Microsoft's implementation of DCE RPC. Gates ripped him a new butthole stating intricate details of DCE specs and it's failing points and how code was written to get around the problems.
There does not exist in all of slashdotdome more of a nerd than Bill Gates (nor anyone as rich).
slashdot troll = you make a compelling argument I do not like the implications of.
The article describes the basic things that are wrong with virtually every late project:
He is describing a sick management culture, one peopled by individuals who are not part of a reality-based community and not aware of their own deficits. Projects run by people like this will always be late and frequently fail completely, because reality doesn't care about management egos.
This is pretty typical of modern management culture. It just shows up more clearly in this case because of the length and size of the project.
Blasphemy is a human right. Blasphemophobia kills.
Not only did they do so in what is called a press release, but they held public demos of Longhorn and proclaimed its target release date. And the original announced date was 2003.
In 2006, there were public statements made that Vista would be out by the end of the year, no matter what. That was another lie.
"Sufferin' succotash."
Arguably, Debian developers are acting in much more harmony and conjuction than Vista devlopers, because the low overall communication between the individual developers makes the code and the interfaces between the modules all that cleaner, and encourages good code documentation.
TFA: Windows code is too complicated. It's not the components themselves, it's their interdependencies. An architectural diagram of Windows would suggest there are more than 50 dependency layers (never mind that there also exist circular dependencies). After working in Windows for five years, you understand only, say, two of them.
If you have 50 dependency layers, wheras Linux or Mac OS X have something like 10 (in the most pessimal case, for things like desktop Widgets), you've probably been spending most of your time writing new ways of doing old things, over and over and over, and you do this cuz
Also, the author puts a bit of attention into "number of lines written". This metric is worthless - if you pay people to code, you will end up with LOTS of code. Debian developers are working for free, are therefore lazy, and therefore write as little as possible to solve as many problems as possible.
Don't blame me, I voted for Baltar.
I used to hate schedules, until I learned to respect both sides of the _real_ issues:
1. Schedules tell me that you care more about the product then the people building it. That's one way to kill the company -- let people know that they are only being used, and they will give back the same medicine by refusing to work there. "Hey Joe, tell your friends that company X doesn't give a shit about us dev's having a personal life." It's fatal for a company to lose loyalty of its employees, because you can't motivate people, you can only stop from de-motivating them (E.A. knows that it can burn thru people; there are always more talent to "recruit" -- you think people that left are going to tell everyone what a great company they are to work for?)
2. But if we toss out the schedule, nothing will ever get shipped, because a program without a deadline is never "good enough" to ship -- there are always more interesting features to add. It will always be in a state of R & D. This is one reason why the majority of OSS sucks. It's someone pet project that is no longer being maintained. It's a hack job with no real thought towards maintaining the next version. Fortunately we have counter-examples like the Linux Kernal, Mame, Firefox, etc, showing us the right way to do things.
Unfortunately both extremes / views are flawed. The weakness is the other's strength, and vice versa. A schedule is a necessary evil. It's _supposed_ to be a way to balance theory + application -- to balance the goal, of making money by shipping a product, and by giving the creators (devs) enough time to build something cool that others will find useful.
Cheers