You may reply - "People", "Programming Skills", "Time", or mention any of the myriad other factors involved in Software Development.
In my opinion, the real bottleneck in Software Development is really "Communication Skills" and Requirements Gathering. This is the most overlooked and often ignored one, but is the real troublemaker in every software development project.
Every big mistake in software projects is made in the first 10% of the time available. This is when you do Requirements Gathering and guess what skill is most needed in this stage?
Communication Skills!
During Requirements Gathering stage, there is the theory of Software Development Life Cycle (SDLC) and then there is what really happens in practice!
In Theory, users all line up like the Von Trapp children, early on in the movie "The Sound of Music", they know perfectly exactly what they need in the software system, they articulate it perfect pitch. The Requirements Gathering team is made up of super sharp listeners that understand precisely what is needed, and write down in perfect language, very unambiguous requirements.
Then programming superstars do a perfect job of coding and users are delighted and come to work every day, a little early, just to be able to use the software!
But then there is reality!
We all know that during Requirements Gathering, users think they are communicating perfectly, the requirements gathering folks (usually Business Analysts) get it sort of right with lots of mistakes and gaps.
Users have this requirements gathering document gathering dust on their desks till the last day it is due back with comments. They scribble a few notes here and there and send it back.
They are all shocked and awed when they see the software system delivered and it is quite not like what they had in mind even if it is exactly "what they said they needed". Then it becomes an argument of "Why didn't they figure out what we needed?".
Take a 100 software development projects and this is the story with 90 of them!
This is where you realize that all mistakes are made in the Requirements Gathering stage but they don't show up till late in the cycle!
So you want to fix Software Development Projects? Pay attention to the real bottleneck! Communication Skills and Requirements Gathering.
The newest computer can merely compound, at speed, the oldest problem in the relations between human beings, and in the end the communicator will be confronted with the old problem, of what to say and how to say it. - Edward R. Murrow












Money