Jared makes a good point. However, it’s possible to strike a balance between simplicity and capability by making available optional, modular features for a given product; users install modules on request to add capabilities outside the core feature set. A model like this avoids both problems mentioned in the article – keeping the UI/UX approachable, and the code untangled. It does add some complexity though, which is unavoidable. Still, it could be a good way to get new users up and running quickly, then retain them when their requirements grow.