Part 1. Startup

 

The beginning of a new project is extremely exciting and at times a bit daunting. You aren’t encumbered by old code or bugs, but you are starting from scratch on an idea that you aren’t sure will work. You don’t know if the market will like it or if it will stand up to high loads of traffic. You definitely don’t want to paint yourself into a corner too quickly, nor do you want to make things so broad that it becomes impossible to reason about. This is the difference between having a narrow, unstable base and an expansive, cumbersome base.

The goal is to be flexible at this stage. Build your product so that it can change and grow comfortably for both you and your team. In this section, we discuss how to start a project with documentation and a plan in chapter 2. We establish a simple and flexible way of writing tests in chapter 3 early on to help find bugs quickly. We release a product to production that will cost nothing until it is heavily used in chapter 4. Throughout this process, we build tools that automate a good portion of the process of moving your code through testing and delivery.