"Don't retool, build it right the first time."
In theory, this is the best line of advice you can take, in practice, especially with startups that continually must rev their ideas, it's a light at end of tunnel never reached.
There's a fine line of balance between "overengineering" and rapid design with a startup, in most of my mind I tend to err on the side of "get it done yesterday, make it work and neatly." But on occasion, I will try to force us to "over engineer" a feature, especially if I know that it can be used for more than one thing in the future, and especially if it's going to be something we will have to tune. This is when we put the game on pause, come together over chinese food lunch and argue the afternoon away on one core module - a linchpin that holds many core tasks and logic steps together. (Typically forcing marketing out of the room to boot)
Overengineering, however, takes time. It takes thought and prescience that is typically unknown in startups, and pisses off engineers because they're asked to create code that at the time seems unnecessary, preventing them from more well defined projects.
One could argue that well designed code requires no over-engineering, as it's simple to retool, because the core modules are easily switched out like boards on a shelf. But they who argue that fail to take into account the one thing that measures startups - time. A larger establishment can throw engineers or teams at problems, then spawn off other processes. Typical startup - one engineer, 5 modules, all due yesterday, but hopefully flexible enough to extend to tomorrow.
So I guess an intelligent thought process is:
1) is this module core to the operation of the system - does the whole idea fall apart without this module in place?
2) How certain is this module from a user standpoint? Are all the user requirements and specs set in stone, or is it basically a stab into the unknown?
If both these are yes, then spend the time engineering it with hooks and imperfections to give it that edge of fluidity.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment