How true is Andy and Bill's law?
Software size has been growing exponentially since the beginning. And yes, its a problem. When you only have 4K of RAM, you manage to make everything fit in 4K. My first computer had 16K of RAM. I wrote a bunch of games that fit in 16K without even having trouble. When I later got a 20Mb hard drive, I actually thought that Id never be able to fill that much storage (ha!). Now Im regularly going to web sites that require that much data to be downloaded before I can even see whats on the site, and some games require gigabytes. The games at least are pretty, and as a game developer myself, I respect the need to have a lot of assets for a game. But when even simple web sites take 1020 seconds to download on a high speed connection, I want to scream. Speaking of web site bloat, theres a blog entry from three years ago that absolutely cracks me up: The Website Obesity Crisis He starts by citing articles on website bloat, pointing out how, over the years, the articles on bloat are getting more and more bloated. How Medium is an awful offender in bloating pure-text web pages. How many web pages have more JavaScript than the entire full length of classic novels. When you allow software to bloat like this, it kills performance. The Facebook app for Android (and similarly for iOS), for instance, clocks in over 200Mb . Of compiled code. This is profoundly bad software engineering; I know that Facebook has some good tech they release in the open source community, but they clearly also had a pretty awful Android/iOS app lead at some point. In fact, the Facebook app is so bad it slows down your whole phone. For anyone reading this who isnt an experienced software engineer and app developer: An app with all of Facebooks functionality should easily fit in under 5MB. A good developer might squeeze all of that functionality out of about 400kB, maybe less. It takes a particularly profound failure of management and architecture for the app to reach 200MB. But the app works, if badly, and if thats what the engineers are required to accomplish, then they get paid and the app ships. Its not anything at all to do with Bill Gates. Microsoft doesnt even have any influence over the Android platform directly. Its all about the fact that software developers often do the minimum they can figure out to get something working, and often are forced by deadline to ship sub-standard software. At least thats me being generous; many really dont seem to even care, and just go for minimum effort across the board. So yes, software today profoundly underutilizes todays CPUs, because todays programmers either dont know how to optimize, or dont care enough to optimize, most software they work on. In fact a lot of server (back-end) developers try to put a positive spin on being lazy, by saying developer time is expensive; servers are cheap. Given how many servers Facebook uses, if they dont have better server engineers than mobile engineers, I bet I could cut their server costs by millions per year. Because at that scale? Servers arent so cheap.