One of the hills that I’ll die on as a software developer is keeping any solution I make as simple as humanly possible.
While it may seem obvious that simple is better, developers get bored easily. They solve this boredom by adding layers of bullshit to their apps. New libraries, fancy patterns, bonus layers of abstraction, and whatever else can spice up building yet another line of business app. This extra cruft can be fun to implement, and it’ll make you feel smarter, but it slows down the team. It takes away from the work that helps the business and keeps your checks signed.
The thing is that most projects have real complexity that needs to be conquered. Real complexity can take many forms. Sometimes it’s a complex business process that has a million rules and exceptions. Sometimes it’s a tricky bit of UI that’s going to make the user’s lives easier. Maybe you actually need massive scale to meet a business requirement. A lot of the time it’s getting a bunch of disparate people on the same page. The difference between these situations and adding the latest random NPM libraries to your code is that this complexity benefits the users of your applications. You can still flex your big brain muscles while doing good.
Look out for extraneous complexity on your projects. Remove components you don’t need. Minimize your library footprint. Suggest simpler ways to do things to bring the same value to the table. Always be on the lookout for unnecessary complexity, because otherwise, it’ll creep into your codebase and distract you from your real problems.