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.
Only 5000 lines of code per year? Really?
I just counted up the LOC I have written since March 2005, and I got (very conservatively) 20000 lines of application code plus 12000 lines of library code.
(I'm not counting
I wonder if they're including testers and other non-programming engineers when they compute that 5000 LOC/yr number.
How in the world did Vista ever become the "largest software project in mankind's history"? I mean, this is an operating system. This is just an OS for a microcomputer, for pity's sake! It's not running the Internation Space Station. It's not running a nuclear aircraft carrier. It's just supposed to manage a personal computer.
:) Windows ME was arguably one of the worst OSes ever released to the public. Then they were able to merge the DOS/Win to an integrated NT style system with win2k (which had limitations), and then the marriage between the two was consummated with XP.
Good point. But there is a fundamental difference here. Things like the ISS, nuclear aircraft carriers, and whatnot have clear goals with very high standards in terms of functionality and quality.
Vista's "vision" (no pun intended) appears to be, lets add more crap to an OS and release it. Microsoft, if they are to stay a viable OS vendor needs to make a complete revamping of their system. Lets look at their history. First there was DOS. Wooptydoo. That was not much of an OS. They they slapped win 1-3x on top, and people still used DOS apps much of the time or at least a significant percentage of the time. The 1-3x GUI subsystem with the nastiness of DOS underneath was not very good, but it mostly worked. Then came the 9x line and NT separately. NT was a better OS. Multi-user, more "server" like capabilities, more stability (yet, not stable). Then the marriage between NT and 9x came, and they fought night and day
What is wrong with XP? The "Start" menu is a GUI designers worst nightmare. Too difficult to add, remove, or rearrange stuff in there. And now with XP, its like UNIX or Linux GUI stuff now. Every app looks and feels completely different. Some like to be MAXIMIZED, others are happy being windowless looking windows that simply float around on the desktop with every widget being different than every other apps widgets. Security/basic safety are nonexistent in XP. Yeah, they took that February off to get "security right", but that has failed the acid test. Windows GUI is completely obnoxious. Too much useless information being bombarded to the user. Balloon help all over the place. Tray programs yelling at you all the time. "Your desktop may have too many icons on it, but please don't delete the ones we don't want you to delete, OK?" Popup dialog boxes that steal the users focus, and are filled with information from "Nothing important just happened!" "OK" to things like "You may not have a nonworking anti-security subsystem that did not initialize." With the user then asked "OK" "Cancel" or the uber confusing "OK" "Apply" "Cancel". The OK/Apply/Cancel combination is the most confusing and stupid paradigm that STILL exists in Vista beta!
This is getting long, but its clear that Windows has problems. And going back to the ISS or nuclear aircraft carriers, software needs to be designed with a goal at hand, and a common set of means to achieve that desired goal. Gosh, this is almost like I'm trying to help out MS here, but they need to break down what Windows is supposed to do. Today in 2006, there is multi-media, media copying (CDs/DVDs), interaction between programs, presentation of programs, networking to include file/drive sharing, www, ftp, email, all that stuff. And of course there are the things that are fundamental to an OS that when done well, the user knows nothing about them. Things like hardware driver abstraction layer/subsystem, memory management, disk managemt, basic security, user separation. AND then after all of the basics are met with an intuitive an non-obnoxious interface, they, and only then do you add new and better performance and functionality. Things like a decent command line shell (monad does not seem to cut it). Things like a metadata filesystem and searching mechanism (WinFS is a decade into development).
The reason I don't use Microsoft products, is because they seem psychotic. They are unintuitive, bloated, inconvenie
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