The biggest mistake of software developers
In many courses of a technical university education students learn how they have to handle big projects in order to realize them in the specified time and budged. The most important task on a project time line is the planing process. In the planing process of a software application you have to be sure that you have correctly understood the software requirements given by the customer to be able to start the real tasks of the planing process. If you start a software development process without any additional information except of the idea of your customer than I would prefer to start with a team meeting with every team member which will be involved in the development process to be sure everyone gets in touch with the idea behind the application and can make his own impressions about it and can bring in already shown possible problems. If your customer has already prepared a design or has engaged a company to produce one, you can profit from the more specific information and your team members will be able to get a better understanding of the application in less time.
The problem of some software companies I was in touch with or had heard of was that the most of them have underestimated the potential of a software planing process. All of the companies which passed on the development process without spending time on planing exceed the deadline by more than weeks or made huge deficits. Developing a software is familiar with a construction project, if an architect starts a building process without any planing and lets the construction workers do their jobs the workers will have problems with the simplest tasks because they don't know essential informations about it. Maybe the ground-level is completed fast because the workers were able to start earlier as a result of no one spending time in the planing process. Of course after finishing the 2nd floor they had to break down 4 walls and one floor because some conductions were mislaid.
So if the project leader doesn't provide information even for the simplest tasks the project could any time reach a point where the developers have to reconstruct the software application to achieve a task which was not possible before. One book we had to read in a software development class, named Extreme Programming Explained: Embrace Change: Embracing Change made me understand the importance of the planing process.