Mark Headd shared an interesting thought on Thursday:
Thursday hot take: a limiting factor on the ability of #civictech to help improve government digital services is the dearth of experience (and interest) in the tech stacks most commonly used inside government agencies.— Mark Headd (@mheadd) December 6, 2018
Which I then briefly replied to:
However Chris Whong at NYC Planning Labs weighed in with an important point as well:
This feels backwards to me. The inflexible/inaccessible nature of the stacks I have encountered in gov is the barrier. But you’re right, I have neither experience or interest in working in a locked-down windows enterprise environment.— Chris Whong (@chris_whong) December 6, 2018
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.
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.