There's a trend in front-end development to want to use the 'best practice' tools in every project, no matter the size or complexity. This seems to be a way to signal (to ourselves as much as others) competence through tribal membership: i.e I use cool tools so I must be good.
But engineering is about trade-offs. Sometimes a raft is the way to get people across the river, and a cantilevered bridge is folly. The bridge is outwardly a more eye-catching sign of competence. But when misapplied it's actually the opposite, as with development tools: build automation, CSS & JS transpilers and module systems.
A fluency with weighing trade-offs is the definition of graduating from being an advanced-beginner:
- limited situational perception
- all aspects of work treated separately with equal importance
We're being advanced-beginners when we don't weigh the attributes - scale, duration, team-size, complexity - that make a project deserve a complex workflow. We should be careful not to treat 'best practices' as goals in themselves.
Expertise isn't only making hard things possible; it's keeping easy things easy.
Any comments? Please tweet @timruffles