There are a lot of things to consider before starting to write code: Which software libraries to choose? Use SQL or NoSQL? What would the database schema look like? Would we need a caching system to handle heavy traffic? How should the code be structured? And so on… These questions are certainly important, but we live in an era of fast-changing and often ill defined user requirements. The conventional software development model of plan > code > test can more often than not fail to produce s...