Here's an interesting article by Heroku founder Adam Wiggins on managing the expansion of a startup's development team through its life, using Heroku as an example.
- The light touch approach early on feels right to me based on my management experience. More formal processes are more likely to hurt a small team than help it. That said, that depends on the team, and also on whether that team is distributed. If you don't get to be in the same room every day, even with just 3 people you probably need to put in place some kinds of processes to keep everyone in sync.
- The split into functional streams in "stage 3" is just one option. Many other companies find that cross-functional teams focused around specific features or subprojects work better as an organisational approach. Being a very technical product with very heavy infrastructure demands, a functional split may have worked well for Heroku, but be sure to consider cross-functional teams too.