When I first learned how to program, I was so excited about how I could create anything! The possibilities were endless and I could create in any way I choose. This is so powerful for creative coding, but I have learned that designing systems any way I want is not the best approach in a professional context.

For professional systems, opinionated designs flourish. The more specific problem your product solves, the better. This works for two reasons: it’s simpler and easier to understand as a customer and it’s simpler and easier to maintain as an engineer.

Let’s focus on the engineer’s perspective here. As an engineer, there are endless ways to create products, but certain ways are better than others. It would be hugely beneficial to be goaded in a single direction to encourage consistent project standards. With this in mind, any engineer should be able to join a project and quickly contribute value. A great example of this is the Go programming language: it has simple syntax and promotes a “one way” philosophy which encourages writing business logic over focusing on style or insignificant optimizations. The distinguishing factor here is the impossibility of variation. Limiting practices to “one way” prevents even the idea of choice, which makes systems easier to build and maintain.

To reiterate, creative development needs endless possibilities, but professional development benefits from opinionated tooling. I believe we will see a growth in opinionated libraries and tools as the software engineering field matures, and even more opinionated languages like Go and Rust.