Your first point is describing "overengineering" which can also be a fatal problem in traditional engineering fields.
It's easy to overengineer in software because the marginal cost of materials and logistics is ~$0. Overshooting by a mile is free. That doesn't discount the value of proper software engineering.