The one thing that unifies all software developers is at some point in our lives is when we created some software that did something cool, a light went on, and we got hooked. However, building software for ourselves is very different from building software for someone else. We have to be motivated to work collaboratively to set up the right environment and make the magic happen.
No matter what type of software product we're building, there is always an element of uncertainty in what the final shape of that outcome will be. And so, when we work with our customer to bring their idea to life, we work on the premise that the concept itself is likely to have holes in it and we will have to work to fill in the gaps.
We know as we begin to build out potential solutions that we will discover much new information and we will need to learn at a rapid rate...