Thursday, January 2, 2020

The Falling Ladder of Abstractions

Nikita Prokopov (via Hacker News):

Every year Apple releases a new operating system and every year it needs a flagship feature to promote it. This year it was a long-overdue standalone Music app. Well, what could be simpler, right? List of files, categories, filters, smart lists. All that has been around in iTunes at least since 2001. But even if it wasn’t, how hard is it to build a decent music player? Many companies order of magnitude smaller than Apple have done it successfully in the past.


Yes, these particular bugs are pretty minor and probably do not affect business in the short run, only Apple’s reputation. Still, it is a big deal. Imagine how tall, opaque and unstable that ladder of abstractions is that it’s even possible to fail such a simple thing as selecting an item in a list??? It is a freaking list and if you click it, it should select a thing that you just clicked.


At this point, you might think I’m just picking on Apple or Catalina. God knows what went wrong there. Maybe they did change priorities and re-hired all the programmers. But no. This problem is universal.

Amazon can’t make a screen with two checkboxes[…]


Twitter newly rebuilt UI takes 7× longer to load first tweet, giving you essentially the same stuff but much later and with much more effort[…]

I think this is less a failure of abstractions and knowledge transfer and more a choice these companies have made not to prioritize the user experience.


3 Comments RSS · Twitter

"Apple has been known for its attention to detail in the past"

Which past?

- In iMovie, the push buttons were not working properly in the first releases of the application (action was sent on mouseDown, not on mouseUp).

- In Xcode, the (x) button in the "Welcome to Xcode" window was not drawn properly when pushed. And another button with no frame used to be almost invisible (light gray on white_.

- In the Startup Disk System Preferences pane, the Restart… button has not been working as expected when holding down the alt keys, etc.

- There were a few other issues related to custom push buttons or push buttons for instance in iAd Producer.

If Push buttons were not working as expected, where was the attention to detail supposed to be?

Regarding the wrong row getting selected, I just noticed a similar thing in iTunes for Windows: I double-clicked on a song, and the proper song got highlighted, but the song 4 rows down started playing instead.

I finally got around to watching the Jonathan Blow video, and while I agree with many of the things he says, I don't think it's true that abstraction hasn't made programmers more productive. Today, using a highly abstract JS stack with NodeJS in the back and HTML/CSS/JS with a basic CSS library in the front, an single programmer can create a complex web application (including payment integeration) in weeks, and it will run on every single relevant device, from an iPhone to a Windows PC. That's bonkers even by the standards of a decade ago, and it's flat out unbelievable by the standards of two decades ago.

Blow's evidence that abstraction isn't making devs more productive is the number of Facebook employees, but they've always pretty much worked on the same level of abstraction since FB started; in fact, they might have gone down the abstraction layers by creating more foundational tools. Also, Facebook does a lot more than just build, so it's not even clear what the output of all of these programmers is.

I also don't think that programmers used to be great, and now they're bad, and that's why we're building all of this garbage software and insane middleware. It's pretty clear that programmers have always been really, really bad at their job. It's just that being bad at programming is not a real issue if you anyways only have 128 bytes of RAM, and you're writing a Pac-Man game, because you have very limited degrees of freedom, so your incompetency doesn't have room to grow into a real issue.

Software development has always been treated as a craft, rather than a science, where people depend on intuition and common sense. This works if you're making software for the Atari 2600 or the ZX Spectrum or the C64, but it's not adequate if you're building Mac OS X, where a lot of different things interfere with each other in weird ways. So instead of researching how to properly build highly complex concurrent software running on highly complex concurrent hardware, we add a lot of testing to find all of the problems. The issue then is that you have diminishing returns. If you double your testing, you might not find twice as many problems, you might only find 5% more, so there are limits to how far this can get us.

We're now reaching these limits.

(Also, civilization will anyways collapse as a result of global warming, so the fact that we'll forget how to write code will be the least of our problems.)

Leave a Comment