The proponents of TDD would have you believe that designing your test cases should be performed first. The DDD contingent would have you believe that apportioning the domain is the first activity. And the list of possible vectors can be endless and when you consider proper project management and the allocation of resources and resource availability the one true first step is never consistent or obvious; it just depends.Let me be clear that every project is going to start with the big bang whether it’s an internal need, a client request or just an unsolicited project idea. There is that spark that begins it all. And from that moment you’re not usually going to start writing code either and even if you did there are still many steps that have been started but not communicated.I like this plan:1) the spark2) initial requirements and use cases3) return on investment4) intellectual proof of concept and value5) estimate cost, time, resourcesand now things get fuzzy and more like a checklist than an ordered list) CI/DI or the build system) complete requirements gathering and prioritization) testing) metrics) architecture) design UI/UX) SLA) hardware (dev, test, staging, QA, prod)) monitoring) archives) disaster plan) …More to come.