iOS 13とmacOS Catalinaはなぜバグが多いのか。元アップルエンジニアが語る6つの理由
https://japanese.engadget.com/2019/10/26/ios-13-macos-catalina-6/


■機能リストを詰め込みすぎてスケジュールチキンにつながる
しかし、部局会議ではプロジェクトで自分の部署が遅れていることは誰も認めたがらないため、
マネージャー達はしばしば「スケジュールチキン」(遅れていることをギリギリまで隠す)に走る。

■クラッシュレポートからはクラッシュ以外のバグは分からない
残念ながら、クラッシュレポートはクラッシュしないバグを捕捉できない。

■重要度の低いバグはトリアージされる
アルファ版前なら、エンジニアは必要なバグをほとんど修正できる。
しかし、開発がアルファからベータに移行すると、主要な機能を阻害する重大なバグのみが修正され、
出荷日が近づくと、データの損失またはクラッシュを引き起こすバグのみが修正される。

■回帰は修正されるが、古いバグは無視される
エンジニアが正常に機能している機能を誤って壊した場合は、それは回帰(regression)と呼ばれ、
修正されることが求められる。しかしバグレポートを提出し、それが以前のバージョンにも存在すると
QAエンジニアが判断すると「回帰ではない」古いバグとされる。その修正のために、誰も割り当てられることはない。

■自動化テストはあまり使われていない
ソフトウェア業界では自動化テストが流行しているが、
アップルは特定の領域を除いて手動テストに大きく依存している。

■エコシステムの複雑さが増した
それに対して最新のアップル製OSには、数千万行のコードがある。
Mac、iPhone、iPad、Apple Watch、AirPods、HomePodはすべて相互に通信し、
iCloudと通信している。すべてのアプリはマルチスレッドであり、
(不完全な)インターネットを介して互いにデータをやり取りしている。
そのため、開発とテストが難しくなっている。