Over the last ten years, hardware has grown incredibly fast, and the software available really hasn't kept up.
The most obvious way I've been hit by this problem is when writing my photo-album software. What I want to do would be trivial if I could rely on the user running a Web server with CGI support: I'd just have a perl script which generates the thumbnails from the picture files when they're requested. But that's not practical, because more computers don't run a Web server, and those that do tend to have odd restrictions on what CGI can do.
Similarly, the nice way to store fifteen hundred images would be in a database - one file on the disc, with the captions for the photos stored along with the photos. But very few computers have a database available at the operating-system level, with programming guidance available so you can actually write programs to use it (I believe there are two or three database engines installed on any Windows system, but I've never seen how to use any of them). So instead the fifteen hundred photos are stored in fifteen hundred separate .JPG files, and the captions stored in an abstruse format in a separate text file.
Even trivialities like graphics have become much harder to access as time passes: OpenGL at least offers transparent hardware acceleration, but I defy anyone to write the initialisation code required to use DirectX or Direct3D using only the documentation provided with the SDK: I copied my DirectX templates verbatim and don't touch them for fear of breaking them, and never got Direct3D to work.