Search This Blog

Wednesday, January 26, 2022

Suy nghĩ sâu sắc về cách Microsoft làm phần mềm


Despite the fact that I am a 20+ year Linux/Unix-like operating system user, I have to admit that Windows has pulled off a feat that's kind of amazing. For the record, Windows does annoy me for various reasons. But they manage to accomplish good things despite a suboptimal situation. It's actually an accomplishment worth being proud of that their software overall is as good as it is.

It's still the most commonly used desktop in the world. It is being rapidly outpaced by Android and iOS if you count portable devices, but bear with me. I want to stick with the desktop paradigm just to simplify my explanation.

As it happens, both Linux developers and Microsoft developers release bad software. It happens in part because not all developers or dev shops are equally awesome no matter what. Google also releases crap software, even. Apple too.

The difference is that Microsoft has a different development structure that is also tied into their distribution model. These ties are binding agreements with legal consequences if they do not apply.

In comparison, Linux is easy. They let everyone develop anything, then they test it out and let anyone install it, then those people complain about it and programmers fix it.

Then they distribute the best that they have, and folks are reasonably happy. With thousands and thousands of peices of software to choose from, there is something for everyone. Better yet, Linux developers don't have to worry about what is popular. If they receive software for a thing, that means people use it and want something. The problem solves itself.

Windows has to know what people want, and that's a big challenge.

Windows has obligations to major corporations to not only provide software that works for any given environment and for a wide range of purposes, but that they will support them with updates and other services, including system and information security, drivers for exotic hardware, and special interfaces for the disabled. And those are just the user base. They also must do this for individual home users, and hardware companies with an arbitrary number of products. Those hardware companies have components with many uses and proprietary firmware, ais and other interfaces with the OS.

The problem is fractal in its complexity. Apple does better, but they also cheat by being a hardware company that limits what hardware that they will support from the front gate.

Granted, Microsoft has obligations tied to the use and support of their software for hardware people. For example, in current release, you must support a UEFI control system (the BIOS replacement) for any modern desktop hardware you develop. This is in part to simplify the job of Microsoft programmers and make it feasible to support the peripheral or chipset at all… And naturally there are advantages distribution wise for having a captive audience. If you want to be successful in the desktop hardware industry you have to support Windows.

But, it's also a two way street. If Microsoft decides to play gate keeper too visibly… They lose market share and precious customer loyalty. It only gets worse if that hardware capability becomes the next big thing. You can't guess what that next big thing is, so they must act on everything as if it were.

This is impressive considering how complex the Windows OS is, and how much stuff that they have to cover. It's even more impressive when you realize that there are not many ongoing Microsoft programmers. Most MS developers are contractors hired out for a single development cycle, then let go after the product is released. It's possible that this development chain has been altered (it makes it a serious challenge if a major unforseen issue is discovered after the release date) since, but once started this would be a difficult structure to alter once put into place.

Let's examine what happens when a Vista or Microsoft Bob is developed and released. They can't just bury the code in the backyard and go back to the drawing board. They are obligated to push the newest version no matter what, because of legally binding promises made.

OK, let's say they could, and tell everyone that you must wait for a new release. This is more problematic than you might think.

The difference between supporting and fixing a disaster in public and sinking the offending software in private are dramatic. Waiting around for writing a major software revision /or from the ground up is too much for the market to bear. It is a major issue that has the potential to kill even long standing software developers. If you don't produce in the market, you die. Period.

A large company can recover from a major blunder, but a year plus of no major release is the difference between life and death. Even just releasing support software in the interim would massively cripple their business. The bigger you are, the more obligations you support and the more resources you need to feed those obligations. A dip in the customer base between releases could be a major problem.

Plus, any software getting constant patches must be reinstalled to remain stable. If you let it grow indefinitely, the accumulated bugs will drag you down to the point where performance is unacceptable. That's why the most reliable fix for a Windows box is to reinstall the OS.

This same paradigm is also true on the development side, and getting the timing right of when to slash and burn the code is the key to stable software. Because if what the software company provides has too many layers of reverse compatibility and complexity, the poor user can't even fix it by reinstalling.

And yes, there are at least four major broken releases over the course of 30+years that Microsoft has been in business.

But they survived them all.

It's one thing to say that "they are too big to fail", but seriously, people said that about Borders and TWA. I can't even count how many software developer companies have failed… Even ones that consistently produced great software.

Microsoft decided to release, take the challenge of supporting suboptimal software head on and help their customers cope with their mistakes until patches or a new release would mitigate the difficulty. That takes a kind of integrity that is impressive.

It can suck from a user perspective, I admit.

And this is one of the reasons why I use Linux more over all. But Linux is more work for me than Windows would be— mostly in terms of software choices. I have to pick what works best for me. I like having the option and taking responsibility for my choices.

Windows does that for you in many cases. Most people either don't care that much, or have better things to do. But there are costs for that, and people learn to live with it.

No comments:

Post a Comment

Phật giáo vs cúng sao

Nhiều người nói Phật giáo bây giờ biến tướng, cúng sao giải hạng mê tín dị đoan... Nhưng mất đi cái đó rồi, nhóm những con người có ít họ...