[Programming can be hired out; business plans shouldn’t be.]
You’re missing the part where the “business plan” gets deciphered into technical requirements and then formalized into specifications.
Millions of dollars have gone down the toilet; spent by companies who failed to understand this and “contracted” a bodyshop in India that promised to magically create software for them.
Also no mention of project management.
A good and smart project manager will contractually tie payment to clean QA of milestones.
For projects without a such a PM -
By the time the customer figures out that what’s been delivered to them is unmaintainable junk (Because they usually don’t have a QA process to verify functionality), the bodyshop has cashed the checks; and the “manager” who got such a “great deal” on low cost labor is long gone and working for a new company.
“and the manager who got such a great deal on low cost labor is long gone and working for a new company.”
I call it the 3”/5 Plan”. A 5 year plan guaranteed to fail but the manager is out in 3.
Exactly right. This is the place where a system will succeed or fail. A system that has complete specifications and, more importantly, a concrete list of deliverables will almost always succeed. That list has to include specific acceptance tests.
The biggest problems arise because the business types don't understand the importance of things like RAS, upgradeability, and user training. These things are usually more important and more costly than the function that is being addressed. The CS people don't usually know enough about the business to develop this part of the requirements on their own, and even if they did, they don't know enough to make a convincing argument about why the system should cost 3X what the basic function would cost.
Even if there weren't offshore companies that would bid just the cost of the functionality without all of the system concerns, there are plenty of software shops in the US that will.
There's an old saying - "you get what you ask for". There are many fine CS people who can deliver what is asked for. The trick is finding people who know what to ask for. CS courses teach you the former; that's the "easy" part.