|
Microsoft has been in the news recently after announcing that Windows Vista will not be released in 2006. Right now, they're saying it will be ready in early 2007, but who knows. They've been slipping Windows release dates for several years already, and it has been more than 5 years since the last version of Windows (XP) was released. Here is something I believe to be true: Vista is going to suck, probably more than any other version of Windows before it. Will it have fancy features, like desktop search and sharp looking graphics? Probably, if the development team is able to build the features that the marketing department has already been advertising. But until Vista is built, ready to buy, and sitting on computer store shelves, we are limited to having conversations about a product that, in actuality, does not exist. I'm looking at this from a consumer's point of view: it is irrelevant if a product has been in development for 5 years. If it cannot be purchased today, it does not exist. A little background:
And the problem: according to the New York Times (Windows Is So Slow, but Why?), Windows Vista has already grown to 50 million lines of code. I know Microsoft has a difficult challenge in maintaining hardware compatibility with the world's desktop computers, but 50 million lines of code for an operating system is not only absurd but also direct proof that Windows Vista reeks of bloated over-engineering. I am a professional software developer, and I'm absolutely certain that no development group at any company (Microsoft or not) will ever be able to maintain and develop a product with 50 million lines of code. Important point: when a project gets to a certain size, it starts to fall apart and create problems seemingly by itself. I do not believe it's possible to say where that transition from maintainble to unmaintainable occurs in general, but if your project has 50 million lines of code in it, I'd bet you $100 you're on the "unmaintainable" side of the scale. Once you get there, developers have a hard time working consistently. Project leaders have the horrible task of keeping their groups working well together. One group starts working this way, another group that way, oh no we're doing things differently? Let's patch it up and get on track together. Then somebody else comes along and builds something on top of our patch, maybe even 3 groups do this, but that patch really shouldn't have been there in the first place. Then another group sees the 2nd group's code and builds on that, but they shouldn't have done it that way either. And because the entire project has 50 million lines of code, no single individual or group can possibly have any way to verify that things are well-built or architected correctly. Rinse and repeat for a few years and your project will have bugs that nobody will know how to fix, features that once worked will break unexpectedly, and future development will require constant avoidance of potholes and landmines. The project will continue to grow in size and complexity until... it's just as bug-ridden, delicate and crashable as previous versions of Windows. One of the single biggest problems with past versions of Windows has been the sheer enormity of the code base. As with anything in life (home repair, driving directions, etc.), the more complex it is, the more likely you are to experience problems. Software is no different. And a project with 50 million lines of code is doomed. |


