I have a tremendous amount of experience with the 12 Factor book having worked with at Heroku for 6 years. I am also working on an open source 12 Factor platform called Convox.<p>One reason the factors are presented as prescriptive because apps that don&#x27;t do this won&#x27;t work on Heroku.<p>Is there a specific factor you&#x27;d like to deep dive into?<p>I&#x27;ll pick one to start: Environment.<p>There are many ways you can set and read configuration for an app: env, config files, config tools like chef or puppet, config database like zookeeper or etc. if we are talking about config like a database URL you could also use a service discovery system.<p>Env represents the simplest contract between your app and whatever platform is running it (the OS, Docker, Heroku, ECS).<p>If the platform can update env and restart the processes to get the new settings, no other config management is necessary.<p>It&#x27;s UNIX, it&#x27;s simple, and it helps you bootstrap any more specialized config management if you need it (set ZOOKEEPER_URL or CHEF_SERVER_URL).<p>So ENV feels like a factor to become very prescriptive about.<p>The biggest debate I can see is if ENV is sufficient to build our micro services on, or if service discovery &quot;magic&quot; is necessary too. I.e Zookeeper, Airbnb SmartStack or Docker Ambassador containers.<p>For the vast majority of apps, ENV is sufficient.<p>I personally still build my more complex apps around ENV and at all costs avoid needing to use a service discovery system. The added complexity and operations isn&#x27;t worth it to me.<p>I have a strong hunch that service discovery won&#x27;t become an app development pattern that everyone uses until a managed platform (like Heroku) offers it. Perhaps this is where Docker, Swarm and Tutum is headed.