I think one of the big valuable traits of a good programmer is a real fear of complexity. But I don't think the biggest problem is the complexity that comes from "rockstars" and over engineering. I think it's a way bigger problem that complexity tends to grow uncontrollably as features are added and bugs fixed. Especially when the domain is poorly understood and when the team isn't focused on keeping a coherent and simple system.
This kind of creeping complexity isn't introduced by mavericks because it's fun. It arises because of a conservative tendency to never throw anything out, to avoid refactoring, to be afraid of changes and simplifications. And also because of simple incompetence in design. Special cases multiply, no fruitful abstractions are introduced, the team's language is confused.
This kind of creeping complexity isn't introduced by mavericks because it's fun. It arises because of a conservative tendency to never throw anything out, to avoid refactoring, to be afraid of changes and simplifications. And also because of simple incompetence in design. Special cases multiply, no fruitful abstractions are introduced, the team's language is confused.