Embrace Constraints
Let limitations guide you to creative solutions
There's never enough to go around. Not enough time. Not enough money. Not enough people.
That's a good thing.
Instead of freaking out about these constraints, embrace them. Let them guide you. Constraints drive innovation and force focus. Instead of trying to remove them, use them to your advantage.
When we were building Basecamp, we had plenty of limitations. We had:
- A design firm to run
- Existing client work
- A 7-hour time difference (David was doing the programming in Denmark, the rest of us were in the States)
- A small team
- No outside funding
We felt the "not enough" blues. So we kept our plate small. That way we could only put so much on it. We took big tasks and broke them up into small bits that we tackled one at a time. We moved step by step and prioritized as we went along.
That forced us to come up with creative solutions. We lowered our cost of change by always building less software. We gave people just enough features to solve their own problems their own way — and then we got out of the way. The time difference and distance between us made us more efficient in our communication. Instead of meeting in person, we communicated almost exclusively via im and email which forced us to get to the point quickly.
Constraints are often advantages in disguise. Forget about venture capital, long release cycles, and quick hires. Instead, work with what you have.
Fight blight
What has been described as "creeping elegance" is probably better described as "feature blight," for like a fungus on a plant it gradually elaborates and blurs the true outline of the product while it drains its sap. The antidote to feature blight is, of course, the "constricting deadline." This results in features being discarded in proportion to the time it would take to implement them. It is often the case that the most useful features take the longest to implement. Thus the combination of the blight and the deadline yields software as we know and love it, comprised of bountiful quantities of useless features.
—Jef Raskin, author (from "Why Software Is the Way It Is")