Stay the course, be open to change
Posted on June 1st, 2007 in Product, Technology |
Software development at a startup is hard. In oder to get through the process successfully, it’s important to remember that things will never evolve the way you expect. If you can stay flexible but still remain focused - i.e. stick with the goal, but accept that your route may meander from time to time - you’ll get there.
In theory, building a product is a predictable exercise that involves the following (high-level) steps:
- Problem Identification & Definition
- Initial Concepts/Iteration
- Functional Spec/Iteration
- Technical Spec/Estimates
- Development/Testing
- Alpha/Beta/Release
- Maintenance
Software estimation is a notoriously difficult activity, but even if it were not, there’s a ton of unpredictability in the system. Even with perfect estimation, I’d be willing to bet a significant amount of money that the schedule will not be exactly what you expect.
In practice, the real world intrudes on our theoretically deterministic system. When it comes to things that can go wrong, “the list is long and distinguished” (movie anyone?)
- Competitors and Partners do unexpected things
- Users can’t remember which of their pets’ names they used for their password
- Individuals discover that stuffing a post with 50 tags helps their SEO; that’s nice, unfortunately it screws the user experience
- People get sick, go on vacation, have bad days
- Hard drives fail
- OS upgrades change functionality you were relying on
- Once you get live data in prototype page you realize your design was wrong
- etc. etc.
You will also do yourself a world of good by keeping your development chunks bite-sized. This has multiple benefits, not the least of which are making a large task seem manageable and perhaps more importantly, helping you build momentum as you check items off a list. Momentum is infectious and it’ll help keep the product moving forward when you hit the inevitable rough patches. Another benefit of incremental development is the ability to adjust if you need to.
Even though you have the ability to change course every two weeks, it doesn’t mean that you should. Something that seems obvious in theory but is really hard to keep sight of in practice is that you’ll get there faster if you commit to a course of action rather than constantly second guessing yourself. When I say this, I’m not saying that you shouldn’t step back every so often and ask “Does this still make sense?” but rather that you shouldn’t adjust your priorities daily based on what’s happening around you. (By the way, as someone in charge of the product, making sure this doesn’t happen is your job.)
Trust in your vision but don’t be blinded by it. As with all things in life, easier said than done.