How many platforms is too many for one developer?

by

I ship one app to seven surfaces on my own: web, iOS, Android, CarPlay, Android Auto, Fire TV and Alexa. I did not plan that. Each one looked like a small addition to something that already worked, and each one turned out to have its own review queue, its own release cadence and its own way of breaking quietly.

Three things I did not price in. The first is that a platform you add is a platform you keep testing forever, and the failures are invisible from your desk. Both my mobile apps were locked to portrait, which meant they were phone apps pretending to be tablet apps for months. I only found out when I finally ran them on a tablet. Nothing was broken, nothing was reported, they were just quietly bad on a whole class of device.

The second is the waiting. My last Android update sat in review for fifteen days, and any new upload resets that clock, so the whole time you are holding fixes you cannot ship. I had three crash fixes sitting on main watching that queue.

The third is that some bugs only exist at the seam between two platforms. There is one on my list right now where the car screen keeps showing the previous station name over Bluetooth. It is not the phone app and it is not the car, it is what happens between them, and there is no way to unit test it.

What I would do differently: add a platform only when I can name the person asking for it. The ones I added because they were technically interesting are the ones I now maintain for almost nobody.

So how many are you on, and which one do you regret?

24 views

Add a comment

Replies

Best

The seam between platforms bugs are the worst. There always that one issue where nobody can confidently say which system owns the problem 😂

The tablet issue is such a good example of invisible technical debt. Nothing crashes, so you assume everything is fine.

One surface here, web, so I am not the person to ask about CarPlay. But the seam is the same problem with two services talking to each other.

You cannot unit test a seam, that is true. What worked for me is recording the real conversation once and replaying it in tests, plus testcontainers at the integration level. It will not catch a car that lies about the station name. It does catch the day your own side changes and the other side does not.

The portrait one sounds worse to me. That is not a bug, that is nobody ever running it on a tablet. What made you finally check? 🤔