As much as I try, I haven't managed to live enough under a rock to avoid people offering strong opinions on the iPhone duo. As quick scan of the Hacker News (sorry!) thread shows a bunch of things being held out as either "Good Design" or "Bad Design" by different people:

It made me realise that we really often talk about "Good" and "Bad" "Design", but we're often talking cross purposes. If we take those examples, the are good/bad because:

Those criteria, especially the first one, don't sit that well together. For example, if we want a device to be more repairable, it's being thin is likely a compromise against that.

Similarly, in software, we often talk about "Good UI", or "Clean Code". Those often can mean different things too. Dark patterns are a great example of this - they're very clever user interface design, but they're often not designed to the end of user manipulation rather than wellbeing.

Design is almost always a value judgement, I think of Fairphone as a company that does "Good Design", but really they're a company who's design is aligned with what I want from hardware (repairability). If you wanted something designed for cost, maximum performance, or otherwise, you might think of them as "Bad Design".

Choosing tools with a misaligned value judgement normally makes our lives hard: choosing React, designed for handling high complexity web apps, when you need to build a simple website; writing software for high scalability, when you need performance instead.

I think it helps to be clear when we're discussing things, but when we're building things, it's even more so. Next time I need to design a project, I'll start by thinking what I want its values to be.