In these days it's hard to imagine any bigger organisation to work without proper software supporting its everyday tasks. Very often this needs to be highly specific system that cover custom data and custom workflows, but also specific tools and technologies used within the organisation. There are also many common functionalities across institutions, e.g. shared by multiple universities or government organs. And seeing how it's currently handled in Polish institutions pushes me to ask: how hard can it be?
The problem
Just take a look on a newest "failure" - system made for 2014 local elections. I won't go into technical details about the system cause I don't have enough knowledge about all the circumstances, but the circumstances itself are a very good starting point. How can it be that the development process for such an important system starts just 3 months before the elections? For sure there is some fault in public orders system which doesn't handle critical cases well. Loosing competitors can revoke the results until it's too late to actually start work. And the specifications… How is it possible that people who create requirements aren't able to provide sufficient technical requirements, not to mention judging the results. And the cooperation, or rather lack of it. Is it really so hard to have some common standards across multiple institutions? Is it really so expensive to have a group of experts dedicated to help people from different sections create those standards and help to implement it?
Some possible solutions
So how can we address those issues? First of all, by learning. Look around the world and see how others are handling such challenges. In the UK for many years there is a standard methodology that is required to be used by government organisations for managing projects. It's called PRINCE2 and can be used in many different areas. It keeps focus on managing the resources effectively, making sure you learn from what you're doing and keeping track on progress. With P3O - Portfolio, Programme and Project management practices it helps British institutions deliver high quality project with benefits for everyone. The benefits are obvious, and the cost of implementing it is really low compared to the results. Why not reuse it then?
And then it comes to software development. There are virtually endless options available, I can just name few. Is it really necessary to have public orders for such an important software? Shouldn't it be handled differently? As the domain in this case is very specific there should be a requirement for the ones that actually design such software to fully understand the needs of customer. Is this possible that some random company that has only a very brief understanding of what is required, basing on public order specification, create a good quality software in short term and with lowest possible cost? It seems almost impossible, and it's confirmed by reality. In my opinion the best approach for government software is to have in-house software development teams that not only know how to create computer systems, but also have good understanding of how those institutions work. This (at least in theory) should not only be cost-effective (in a long term) but also should guarantee that the results match the expectations.
The other option is for some related institutions to sign long term contracts with vendors to do the work. It could be more cost-effective and probably could improve quality even further, but there is a catch. If a vendor is selected mainly (or even only) on a basis of expected cost, it won't work at all. There is plenty of companies that assume that every task can be handled by limited number of students, and with even brilliant students you'd probably won't have enough experience and knowledge to solve all the complicated tasks. Not to mention analyzing, understanding and documenting sometimes ridiculously strange requirements.
Summary
There is no perfect approach for given problem, and the problems and solutions I've mentioned are only tip of an iceberg. Nevertheless, even small steps forward can help to solve numbers of problems with just minimal effort. We need to learn, to cooperate and not to look for guilty ones, but look for solutions. Without that each and every project of this kind would be a Russian roulette, with more chances to lose than win.