@Trevor_Pott
Can I defend the developer please? All they do is take the specification from users / PM's / bloke in the pub*, ask the pertinent question 'Is that EXACTLY what you want ? There's no other way you will use this programme?' get the reply 'Yes, that's all we want' and build what's been asked for. Along the way they supply mock ups and test beds for the users to test, and await feedback as to whether they have grasped the essence of what is required.
Finally they hand over the finished product to the project sponsor, who at last gives it to the users that will actually use it only to find that they don't actually work the way that has been described to the developer. Nobody in control asked the right people about what they wanted! Developer now demoralised and bald, due to all the hair pulling.
Sysadmin arrives to try and wedge square programme into round hole - blaming developer, who is now completely bolshy as it is a fixed price contract. No surprises the sparks fly.
Meanwhile, some beancounter with o-level VBA has created a workround in Excel that does what the users want but the internal logic is known only to them and users some form of self modifying macro linked to multiple other worksheets. Works fine till he/she leaves and collapses in heap 2 days later. Now its both the Sysadmin's and Developer's problem.
By the way, I'm on both sides here - and I've done the func spec stuff as well. In the end, never trust anything you are told in a meeting called to thrash out a spec - find the person who is actually going to use the software and take them to the pub ......
* = The bloke in the pub probably has a better grasp of what he wants than the others - once (in a former life) had a designer draw a plan for a stage set on a packet of Gaulois in a pub for us to build and we got it out on time and under budget. He won a prize for it as well!