A Startup Development Plan

  1. Continuous Integration, use it.
  2. All code must have tests. Lower coverage == CI fail
  3. Tests must run fast. Slower average test speed == CI fail
  4. Code quality regression == CI fail.
  5. Vagrant and Chef for your development environment. A new dev machine is a “git clone” and “vagrant up” away. (this means good seed data!)
  6. Any and All strings that a user could ever see must be internationalized, resource file in {native language} first, of course.
  7. Github is the hub: pull requests for code review. One other person signs off on code before it goes to staging
  8. Deployment, Rollback, and Scaling are all one command away.
  9. Build for horizontal scaling.  Start with multiple instances of every server/database/application/service type. Plan on your servers/apps/services being fungible, unreliable, and innumerable. Discovery over configuration. (etcd, zookeeper, ironfandoozerd)
  10. Faster response to the user is always better. Anything that doesn’t need an immediate response, queue it up and do it  in the background. Cache and pre-compute as much as possible.
  11. If someone else has made a library that does most of what you want, use it. (Submit patches so it does all of what you want)
  12. If you can abstract the solution out of the app into a standalone library, do so and make it open source. Open source is the great code review in the sky. More eyes means better code.
  13. A service is better than a solution. A solution is better than a hack. A hack is better than nothing at all.
  14. Done is the engine of more.
  15. Perfect is the enemy of the good.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.