There is a tendency in software development to prescribe that certain types of learning be done only in certain phases of the project, or only by people who have been properly anointed with the correct title.
The truth, however, is that the best results are usually obtained when everyone on the team is allowed to learn new things at all points in the project. This doesn’t mean that the project needs to immediately stop and incorporate every new learning, but it does mean that artificial constraints on learning should not be imposed, and that new learnings should at least be considered at all points in the project, no matter who makes the discovery.
This is the idea supporting the assertion of the Agile Manifesto that they value “customer collaboration over contract negotiation” and “responding to change over following a plan.”
One of the puzzling aspects of ‘waterfall’ development is the idea that knowledge, in the form of ‘requirements,’ exists prior to and separate from coding. Software development is a knowledge-creating process. While an overall architectural concept will be sketched out prior to coding, the validation of that architecture comes as the code is being written. In practice, the detailed design of software always occurs during coding, even if a detailed design document was written ahead of time.
From the book Implementing Lean Software Development: From Concept to Cash (2006)
He [Jeff Bezos] said people who were right a lot of the time were people who often changed their minds. He doesn’t think consistency of thought is a particularly positive trait. It’s perfectly healthy — encouraged, even — to have an idea tomorrow that contradicted your idea today.
He’s observed that the smartest people are constantly revising their understanding, reconsidering a problem they thought they’d already solved. They’re open to new points of view, new information, new ideas, contradictions, and challenges to their own way of thinking.
This doesn’t mean you shouldn’t have a well formed point of view, but it means you should consider your point of view as temporary.
What trait signified someone who was wrong a lot of the time? Someone obsessed with details that only support one point of view. If someone can’t climb out of the details, and see the bigger picture from multiple angles, they’re often wrong most of the time.
Next: Don't Wait to Integrate