This is a very difficult question to answer as there are so many important aspects of any software development project. However, in my experience if a Project (any kind of Project) isn’t begun correctly a team will have one painful experience after another throughout the project, not the least of which is a lack of data enabling the team to tell when (or if) they will be done.
A while ago in a previous engagement we got together as a group of Agile Coaches to discuss if creating “Release Planning exit criteria” was the right thing to do for our client. We went back and forth with advantages and disadvantages and it wasn’t a light discussion. But, in the end we felt that helping new Agile teams understand the part of an pieces of the project that needed to be known at the beginning would help them begin correctly was the best thing to do. Now we didn’t call it “exit criteria” because we didn’t want to come off as ‘if you do these things then you are doing it right’. We called it something like “Release Planning Exit Guidelines”. This is because while each Agile project has some basic items in common such as creating and sizing a Release Backlog there are still many items and questions that are unique to each project that they have to consider and decide if they should do it or not. These could be things involved at in at the individual level, the team level, the technical level, the process level or any number of things at the organization level. Add to that the fact that since we know that individual, teams, technology, processes and organizations change over time creating one static list of “do this” is impractical. This subject has to be approached very carefully and deliberately.
I was once involved in a project which began without a complete Backlog (the Product Owner refused to define it). We asked for it at Release Planning but didn’t receive it. As the Iterations went by I grew more and more uncomfortable until the VP of Finance asked me one day if we would be able to meet our delivery date. Honesty reared its (ugly) head and had to tell him I had no idea. I told him we knew our velocity but not the remaining Backlog. It was not a comfortable situation but I was glad that someone was finally curious about knowing where we were going.
Experience has taught me that beginning a project correctly is the #1 thing you want to do. What you need to figure out is what does “correct” mean to you, your team, your product and your organization. You have to ask yourself this question on purpose and you have to answer it on purpose.
Associated Link: From Rally What happens when Agile Teams skip Release Planning