The passion for overbuilding
As a software developer I suffer from my unintentional passion for overbuilding, also known as overengineering. It feels like the more you know about technologies and things they can do, the further you can get in dreaming about your perfect product.
What drives the overbuilding?
- Perfectionism. You want everything to be well architected right from the start and be ready for the scaling to millions of users.
- Wide set of developer tools currently available. With a wide selection of free tools, components and frameworks you can easily turn every Hello, World into an app that requires dozens of packages to be installed.
- Not knowing the history of great product. Almost all great and polished products were really crappy at the beginning.
- Myth of super programmers. Super programmers are some programmers who are able to write beautiful, working and final code right away and do it all 100 times faster. Every programmer wants to become one.
- Avoiding interactions with end-users. There is a fear that final end-users won’t like your product before it is ideal. Also, interactions with real end-users can be painful because it may turn out they don’t need your current product at all.
- Not seeing enough great products died because they were not bringing enough value to their users or got a little traction.
- Not seeing enough crappy products that are successful because they are delivering actual value to their users even with ugly UI and sloppy internal design.
- Turning every problem into a platform or a marketplace. Engineers love frameworks but it is not a good idea to build a platform first. For example: “I have an idea for a photo effects app” -> “well, let’s make a platform for photo effects apps” -> “but first, let’s make our own framework for platforms for photo effects apps”. Platforms are hard. Marketplaces are even harder.