4 ms·
Software engineering is like if a car was built and thus "finished", but the systems it depends on (like roads, and gas stations) changed every N years (with N
by j1elo 3y ago
Software engineering is like if a car was built and thus "finished", but the systems it depends on (like roads, and gas stations) changed every N years (with N < 10).
Imagine the gas stations (operating system) changed the kind of fuel they dispense every few years. No, by no means a car (software) that is fully finished today would be able to continue doing its thing tomorrow, without ongoing updates.
This also happens in the real world, it's just that changes are more likely in the decades or centuries, so we as humans don't perceive them so well.
The fact that Microsoft spends a whole lot of money to avoid this, is circumstantial. Apple doesn't so much, and at some point your finished software will stop working with newer MacOS releases if you don't update it to the newer system versions.
Linux is even more of a moving target. Good luck having a perfectly well working compiled program today, and trying to run it in 10 years time.
- grishka 3y agoIs there any reason — other than "we're paying our graphic designers full-time salaries so we better get our money's worth" — why OSes have to change so drastically and can't be finished as well, only ever updated to add new APIs for apps and drivers to support new hardware features?
- jwells89 3y agoSecurity is probably the biggest reason. With attacks growing continually more sophisticated, it’s not enough to just patch holes as they’re found — you have to engineer entirely new systems to not be drowned in holes. This unfortunately has compatibility implications. Look at macOS for example, which over the years has gained app sandboxing and mobile-like access permissions. Software pre-dating these additions that assumes that it has access to everything all the time will have its functionality impaired. Devs had to update their software to not make such huge assumptions and to handle no access cases gracefully.
- grishka 3y agoSo, how secure is "secure enough"? Android's security model is okay, and Google knows it, so they just keep redesigning the UI without substantial API changes because the updates have to be coming out with each lap the planet makes around its star. > Devs had to update their software to not make such huge assumptions and to handle no access cases gracefully. Sure. But at some point it will reach the "secure enough" state, won't it? (Actually, macOS permissions work mostly transparently API-wise. Apps can request access explicitly so it better fits their particular UX, but the prompt would also pop up the first time the protected resource is accessed. No code-level changes are necessary to support this.)
- jwells89 3y ago> Android's security model is okay, and Google knows it, so they just keep redesigning the UI without substantial API changes because the updates have to be coming out with each lap the planet makes around its star. Google is a bit of a special case I think due to their culture of using big projects as a means of climbing the corporate ladder. The only thing that could ever possibly result from that is endless churn. > Sure. But at some point it will reach the "secure enough" state, won't it? Maybe, I’m too much of a layman in the field of infosec to be able to say. > (Actually, macOS permissions work mostly transparently API-wise. Apps can request access explicitly so it better fits their particular UX, but the prompt would also pop up the first time the protected resource is accessed) True, but it’s still problematic if e.g. the user accidentally denies access unknowingly, which will result in the app producing seemingly nonsensical errors. For a good user experience the app needs to be able to tell the user what the real problem is.
- chromoblob 3y agoThe program's interface with environment won't change forever, when you write your program as a pure function which only touches exactly the thing it fundamentally needs to, you use a pretty much finalized interface.
- vel0city 3y ago> only ever updated to add new APIs for apps and drivers to support new hardware features Sounds like it's not "finished" if it needs all these updates. As for why change the window dressing, the market for style changes over time. Why do car companies change the look of their products? Why does the outside of a cereal box ever change? Do the inside of our houses today look the same as the 80s? The 70s? The 40s? Are you arguing that Windows and MacOS should continue to look like it's 1.0 release?
- grishka 3y ago> As for why change the window dressing, the market for style changes over time. Software is a tool, a means to an end. It doesn't need to participate in fashion. > Are you arguing that Windows and MacOS should continue to look like it's 1.0 release? Yes. It should remain an option at least. Not the literal "1.0", but the version when a decent UX was figured out. For Windows in particular, that's clearly 95. I know people who used the "classic" theme in Windows 7 and earlier, which remained mostly unchanged from Windows 95, and are resentful of its removal in subsequent versions that they have to use in order to have support for modern hardware.
- vel0city 3y ago> that's clearly 95 I wouldn't say that's very clear. There were still lots of refinements and redesign that happened as Windows started becoming more of a multi-user OS with NT and later XP. Just because there was a classic skin in 7 doesn't mean it was the same UX. Even with the "classic" skin there's pretty massive changes in the behavior and usability of most of the UI. Maybe you find 95 to be the end-all be-all of design, but many don't. UI, and to an extent UX, is partially subjective and then also very different based on the user. Imagine a user who has only used an iPad gets dropped in front of a Windows 95 machine, would they consider it the peak of OS UI/UX design? And as the product's target market evolves and changes so too should the software for what customers expect. Which brings me to... > Software is a tool, a means to an end. It doesn't need to participate in fashion. One could make the same argument of a bed or a couch or hell even a whole house. A house is just a tool, something to keep the environment consistent and shelter from the elements. A couch is just a tool to support a sitting human being. It doesn't need to participate in fashion. And yet people are pretty dang picky about their furniture choices and paint comes in thousands of colors. Any piece software competes in a market of software. Say there's two pieces of software with identical feature sets. One looks like an ancient Java Swing UI and has bad colors and overall just looks ugly, meanwhile the other looks nice and pleasing (insert your own ideas of "nice and pleasing" here). One is probably going to hemorrhage users over time, can you imagine which?