Civic Tech Stacks

December 09, 2018

Mark Headd shared an interesting thought on Thursday:

Which I then briefly replied to:

However Chris Whong at NYC Planning Labs weighed in with an important point as well:

Technology is a tribal industry. Apple and Microsoft continue to fight for the desktop market. Apple and Google fight for the smartphone market. Users of technology are used to having choices, and are passionate about the choices they make. This extends to software development where folks often find a programming language and framework they love like Ruby on Rails and attempt to find employment coding in that framework. Greater adoption by others of your technology stack means more options and often a brighter future for you. Your opportunities grow with the size of your tribe.

A challenge software developers face is how frequently software development tools, languages, and preferences are changing. One of the most popular programming languages, Javascript, adds features more quickly than many browsers add support for those features. A software developer gets excited about using a backtick to denote something in their code but then has to implement a polyfill. A polyfill means having a tool re-write the code in a different way to get it to work in different browsers. This lack of uniformity means the developer needs to think about tools to automatically translate code for different browsers, or think about and code their Javascript in different ways if they want to use the latest features. Spending time on this axis of complexity becomes a tax on every project developed in Javascript going forward.

After years of software development many developers have used multiple languages and technologies. They become polyglots. They learn concepts that are portable from one language to another and when they have a specific project they will sit down and learn a new language and its libraries. Modern consultancies like Pivotal Labs use pair programming to reduce the amount of time needed for a developer to pick up a new technology. This agnostic approach means flexibility for the developer in picking their projects, but it is not free. The tuition of learning debugging tools, language syntax, and libraries must be paid along the way. Polyglots sacrifice time and familiarity for freedom.

The challenge Mark highlights is that many programmers are not polyglots. Even if they can learn other languages they are not agnostic towards what they use. The consequence is if a developer sees a job requires they program in Microsoft Visual Basic .Net but they like writing Python, the developer will often decline to apply for the job. Software development hiring pools become language segregated. In Civic Tech this means organizations that do not adopt fashionable languages cannot hire talent trained in modern software development processes. Solutions developed by one software community can fail to proliferate to others. Poor quality software is built not because of technical limitations of a language, but because of the bad practices used by the developers that adopt that tool set.

If we are going to succeed at building better software for government, government and software developers must meet in the middle. A North Star of government should be making sure its new software infrastructure is written in modern open source languages. This will increase the hiring pool and reduce the learning curve for new projects. At the same time developers need to learn the old languages and tools to re-write or interface with old systems. Harry Potter would not have been as successful if it was only available in English, and Civic Tech will not succeed if it is only available in Javascript.

Want to get posts like this in your email?

This work by Matt Zagaja is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.