However, as a rule of thumb, larger and more complex systems tend to have more bugs than smaller and simpler ones.
The trick is to create large and simpler systems, instead of larger and more complex ones. That's hard to do for user facing software, but there is no reason firmware had to be those monsters we have now.