As a technology consultant in the nonprofit sector for 10 years, I’ve helped a lot of organizations select and adopt technology platforms and software titles — everything from simple desktop widgets up to full-blown operational database implementations. When I was a much younger consultant, wet behind the ears and with a much thicker head of hair, the primary question for software selection was always “Do we build or do we buy?”
Build or Buy?
In this context, “buying the software” refers to the purchase and deployment of an “off-the-shelf” software title — software that was already created, sold to, and used by other organizations. On the other hand, “building software” refers to the process of developing a customized piece of software just for our organization, usually by contracting with a consultant or development firm since the vast majority of nonprofits don’t have their own application development personnel.
Depending on the size, complexity, and uniqueness of the software, deciding whether to build or buy can require significant cost-benefit analysis. Most organizations, for instance, would never hire a programmer to build their own word processor when they could just buy Microsoft Word. But an organization seeking a complicated database application targeted at their specific operational activities might not have commercial options available or might find those options unsatisfactory compared to the features they could demand in a custom application.
About 10 years ago, the rapid increase of Free/Libre and Open Source Software (FLOSS) gave nonprofit organizations a third option, turning the “build vs. buy” binary question into a branching decision tree: nonprofits could now “borrow” existing software and components from the Free Software community, from a “commons” of free software growing by leaps and bounds. By doing so, these organizations could conserve resources that would have otherwise been directed to “buying” commercial software or “building” out their own customized apps.
The benefits of this model should seem evident by now to anyone already familiar with Code for America and the work we do helping cities adopt modern internet-based technologies with an eye toward citizen engagement. The “Adopta” platform Code for America built and deployed in Boston has spread to Chicago, Honolulu and other cities but you won’t find a purchase order anywhere with “Adopta” as a line item. Every line of code we write is licensed so that it joins our shared commons, so that it can be used and re-used by any city or developer in the world that needs it: it becomes part of our digital heritage.
Every nonprofit is different, yet each have similar needs in common. My time so far at Code for America has proven without a doubt to me that while every city is different, they all have similar needs in common as well. And open source software development is the best way to let us harness our collective energies on meeting these common needs while conserving resources for satisfying our unique needs.
Just a few years ago, not long after the FLOSS folks brought “borrow” to the table, we got another massive change in our software procurement options: “rent.” The related marketing terms can be vague and may include or exclude certain features but whether you call it “cloud” or “Web 2.0″ or “distributed computing,” it’s clear that that certain applications, platforms, services, and systems are now being economically provided remotely via the Internet. Maybe you’re running a significant part of your infrastructure on Amazon’s EC2 and S3 platforms or maybe you’re just embedding a single Google map in your city’s website; virtually everyone is now using some software or service that they didn’t buy, build, or borrow (at least in the senses outlined above).
Procuring software-as-a-service or taking advantage of platform-as-a-service offerings are two of the most highly visible ways of using this new model. These are transformative services that are disrupting the IT landscape for all organizations, no matter the size or focus or technical sophistication.
Bringing it all together…
It’s no longer the 1990′s: as the requirements and expectations of our users have grown tremendously in scope and sophistication, so too have the skills and tools in our technologist/developer toolbelts. There really isn’t too much “standalone” software these days — even for the simplest desktop or mobile utility, we (rightfully) insist on centralized management and enterprise integration. Likewise, it’s much too simplistic to expect “build or buy?” to be useful in this environment any longer.
Instead, cities — like businesses and nonprofits and startups and individual programmers and anyone else working with interconnected technical systems — are using hybrid models incorporating all of these procurement and development models. A modern project might involve the customization and use of an open source application to extract data from an existing proprietary database while offloading some storage and processing to multiple Internet-based service providers. These models – combining “buy,” “build,” “borrow,” and “rent” in various ratios – will be the norm for all but the smallest applications within a few years.
Many of our cities are suffering from technological stagnation resulting from several cumulative years of budget cuts and layoffs — how can we help them transform their infrastructure, development, and procurement models? There are no easy answers but here’s what we’re doing in the City of Santa Cruz:
0) Begin transformation of municipal IT culture – specifically, devote time and resources to experimentation, learning, metrics and measurement, user-focused design, etc. Santa Cruz is fortunate to have a City Council and City Manager that understand the importance of these new approaches and they fully support the City’s Chief Technology Officer in his efforts to effect culture change.
1) Begin transformation of municipal IT policies and practices – government IT agencies must not be hamstrung by rigid IT policies or practices with no basis in a modern environment. At the same time, it’s important to maintain traditional focuses on cost-effectiveness, stability, security, and long-term strategy. In Santa Cruz, for instance, the City is working to ensure that any future technology platforms or software purchased from vendors must have methods of interoperability. This policy helps prevent vendor-lockin and promotes integration between systems.
2) Build a learning organization – training, practice projects, skills-sharing, skills-building, etc. — in technology more than any other field, it’s important to continually acquire, build, and refine our skills. And from “Introduction to Ruby” to MIT’s “Community Growth and Land Use Planning,” there are more free learning and training resources available now than at any time in human history. In addition to learning new technologies and skills, giving teams the ability to work together on pilot/development projects is a fantastic strategy for building experience.
3) Build organizational diversity - cross-team, cross-functional, cross-everything. Smashing through barriers, organizational layers, and tech- or discipline-specific silos will be key to successful adoption of these new models. Architecting these types of hybrid solutions requires a high-level “CTO’s-eye view” of the organization’s tech infrastructure as well as deep working-level knowledge of the individual systems and data and departments to be integrated. Team members with an intimate knowledge of an organization’s current infrastructure need to collaborate with team members that are familiar with industry-wide best practices and an ever-changing roster of new products and services.
The best is yet to come…
It’s so exciting to be participating in these conversations at this point in time. As the capabilities of our raw materials — code, data, platforms, services, network — grow rapidly, the solutions we can build from these materials become even more sophisticated and powerful. For cities, this means new applications that help conserve resources and budgets, applications that provide more and more effective services, and apps that just make our cities cooler.