There are some interesting discussions regarding software development. There are those out there that say everyone should learn to code. There are others that say don’t learn to code. There is also a movement known as Low-Code/No-Code. The truth is somewhere in the middle. I believe the real topic of interest is when to code.
For clarity in this article, I will refer to coding as “custom” software and the alternative to that as “commercial-off-the-shelf,” shortened to COTS. On one side, there is COTS – the cost and time of deployment is low. It usually does not cover 100% of the end-user requirements. At the other end is custom, where the cost and time of development and deployment is high, but you can get closer to meeting 100% of the end-user requirements. If you always seek to meet 100% of those requirements, you will always go custom.
In between COTS and custom are various intermediate options, like taking COTS code and customizing it by changing or adding code. There are Application Programming Interfaces (APIs), Software Deployment Kits (SDKs) and other frameworks that allow for custom application development without the need to write code from scratch. There are also many code exchanges like GitHub.
The important thing to remember is that no government agency should run exclusively on COTS or custom. Each one, and the options in-between, have a role, like tools in a toolbox, in providing the organization with the software they need to accomplish their mission in an efficient manner. Another thing to remember is that technology must be deployed in a sustainable manner. By sustainable I don’t mean green or environmentally friendly. I mean that the organization can sustainably maintain the software it has deployed in a fiscally sound manner.
Having worked with government agencies for most of my career in the software realm, I have seen too many of them deploy custom solutions when they do not make business sense. The decision to code and develop custom software is a business decision. Many times, I have seen that decision made by asking “can we do it?” not “should we do it?” Just because you CAN provide a custom solution doesn’t mean you SHOULD.
Before any decision is made on whether to develop a custom software solution, a Total Cost of Ownership (TCO) analysis should be prepared to see if it makes business sense to initiate such a project. Too often, when I see people send a list of end-user requirements to a developer to see if they can do it, they skip the TCO analysis and don’t worry about the commitment it requires to successfully develop, deploy, support and maintain the solution. This is shortsighted and can negatively affect the organization’s stability. Additionally, I often see organizations look at custom software development by staff as “free.” This is not the case, as those staff members are not volunteers, and once the solution has been deployed there is a need for support, maintenance and, oftentimes, training, integration and migration.
Software developers are valuable, skilled people, and their work should be focused only on the solutions that make business sense for the organization. Many common workflows can be addressed with COTS solutions because, as David McCullough, Jr. so eloquently said in this commencement speech and in his book of the same name, You Are Not Special. There are over 3,000 counties and 35,000 cities and towns in the U.S. They all do the same business and have the same problems. They all need apps that help them inspect assets and apps that allow the public to find a park. They all don’t need to solve those needs with custom software solutions. That would be reinventing the wheel. Professional custom software development is a difficult enterprise to accomplish successfully. Its use should be focused and used only when necessary and if it makes business sense.
It makes business sense that organizations should state their preference for COTS solutions in policy and enforcement to prevent ill-advised software development. There are examples of this “Buy vs. Build” philosophy from Pinellas Co., FL and Nashville, TN. For Pinellas Co., FL, not only do requests for custom GIS software development go in front of their Enterprise GIS Steering Committee, they see custom solutions as temporary. As soon as they can replace a custom solution with a COTS solution they will because it makes better business sense.
Please make your coding decisions wisely. Use the COTS options out there first; make sure you have the resources and a plan to successfully implement and maintain the apps and remember, you don’t need to meet 100% of the end-user requirements. It’s not CAN you do it; it’s SHOULD you do it.
Adam Carnow is part of the GovLoop Featured Contributor program, where we feature articles by government voices from all across the country (and world!). To see more Featured Contributor posts, click here. You can follow Adam on Twitter or LinkedIn.