Agreed in full, but...
One of the things we should get out of the problems with federal software procurement is a sense of the dangers of overreliance on outsourcing (we should get that out of the Snowden incident as well). Organizations typically employ a fair number of intelligent people with good ideas and not all of them are managers. And unlike contractors or consultants, regular employees have invested part of their working careers in the organization and are likely to be there to pick up the pieces when the contract is finished. Ergo, the regular IT staff in both federal agencies and elsewhere should have the freedom to experiment and develop programs and systems that help them do their own jobs better and help the front line employees do their jobs better. IT makes sense to outsource for big ticket items, but the careerists should be actively involved in developing the specifications, and they're the ones who should be administering the systems when they go on line (there's really no valid excuse for outsourcing system administration in a large organization).
The general principles should be:
1. Contractors should handle temporary needs. Permanent employees should handle permanant ones.
2. Core governmental functions (especially the ones involving the use of force) should always be in the hands of regular government employees (who might be temporary or part time); never contractors.