Delivering good services to the public, in the internet era, depends on designing and developing good software.
In the Canadian government, there’s about 17,000 IT professionals, comprising the Computer Systems (or CS) job classification. The CS classification has five levels (CS-01 to CS-05) and includes IT helpdesk staff, software developers, software team leads, database administrators, enterprise architects, security assessors, and a handful of executive-equivalent roles at the top end of the classification.
However, the number of CS staff whose day-to-day job is software development is relatively low, and this drops to nearly zero at the top end (for example, CS-04 and CS-05 roles). This is significantly different from typical private sector tech companies.
In the private sector, competition for experienced software developers – who can quickly and thoughtfully design software, deploy it reliably and securely, and mentor junior staff – is incredibly fierce. Large tech companies frequently try to poach experienced developers from each other. For new startups, having one or two senior developers early on can mean the difference between success and failure.
Here’s how Microsoft (one of the world’s leading technology companies) describes the importance of developers:
Computing is becoming embedded in the world, with every part of our daily life and work and every aspect of our society and economy being transformed by digital technology. Developers are the builders of this new era, writing the world’s code.
As every industry – from precision medicine to precision agriculture, from personalized education to personalized banking – is being impacted by technology, the developer community will only grow in numbers and importance. Developer workflows will drive and influence business processes and functions across the organization – from marketing, sales and service, to IT and HR. And value creation and growth across every industry will increasingly be determined by the choices developers make.
In short, developers will be at the center of solving the world’s most pressing challenges.
Identifying why the government has so few senior developers
The government does have a few thousand developers, mostly at the CS-01 and CS-02 levels (exact numbers by type of work are difficult to determine, within the 17,000 total CS staff). The government also has an estimated 60,000 or more IT contractors and consultants, many of whom likely do software development as their primary role.
But, the absence of senior developers is notable, and concerning given their value in being able to understand and build on complex software systems, hold external contractors and consultants to account, and – as a US Department of Defence guide elegantly says – detect “agile BS”.
There’s a number of reasons why the government has so few senior developers. (If there’s entries missing from this list, please let me know!) Here’s a few:
Lack of senior specialist/developer (non-management) tracks: From the CS-03 level on, government IT staff are expected to manage other employees. Unlike most private sector tech companies (which have “dual-track” career progression models), senior non-management technical roles largely don’t exist in the Canadian government. (Although there are non-management CS-03 and CS-04 roles in some departments, they’re rare and public servants who choose them aren’t able to progress to the management-only CS-05 level.)
Bilingualism requirements for all management roles: The federal public service’s Official Languages commitments require that anyone in a management role is able to effectively communicate with their employees in both English and French. Since mid-level CS staff and up are almost all expected to manage other employees, this imposes bilingualism requirements widely across the CS population. In an already fiercely-competitive industry, finding developers who also speak both English and French makes a small pool of potential candidates even smaller.
Limited internal career progression: The CS “generics” classification structure used in many parts of government require a certain number of CS-04s below each CS-05, a certain number of CS-03s below each CS-04, and so on. This rigid pyramid structure causes “bunching” and stagnated careers at the lower-end CS levels, with public service developers sometimes waiting more than 10 years for promotions into the small number of higher-level positions available. This also makes it more difficult and more controversial for teams to bring external developers into salary-competitive higher-level positions.
Extensive hierarchy and lack of autonomy: The extensive hierarchy of the public service – the number of layers between working-level staff and decision-makers – can be unsettling and discouraging to technology professionals who are often accustomed to startup or freelance work, more enthusiasm for bottom-up idea-generation, and a much higher level of personal autonomy over their work. Public service IT management and leadership also tend to use more outdated approaches and tools, discouraging developers who are new to the public service.
Centralized government IT shops: Isolation in centralized IT or corporate services branches and waterfall project management methods also disconnect developers both from important colleagues (designers and researchers, for example) and from the end-users who would benefit from their work. Frequent reassignment from project to project prevents developers from being able to see the impact of their work from end-to-end.
Outdated technical stacks: Many of the technology systems and programming languages used in government are decades older than those used by leading technology companies. Given the choice, most developers would rather not use many of these technologies. The continued use of these systems (and the rejection of widely-used modern programming languages and frameworks) is often the result of misplaced attempts at standardization.
Inability to customize and choose your own tools: Developers (especially very good developers) are famous for very carefully customizing their working environment, operating systems, and programming tools. In many government settings, desktop security settings and group policies prevent staff from doing things as simple as changing their screensaver – let alone installing and customizing software development tools in order to work at their best productivity.
Slow, cumbersome hiring processes: The average time to staff a government position (from start to finish) is 40 weeks. In the private sector, companies frequently hire developers in 1-4 weeks. Average staff tenure at large tech companies is 2-3 years. By the time government institutions are able to offer talented developers a job, they’ve more than likely accepted private sector offers elsewhere. An emphasis on formal education and technical certifications in hiring processes also hinders applicants who have extensive experience but unconventional paths to becoming a developer.
For developers who do end up in government, there tends to be an overemphasis on makework instead of programming. Here’s an example from a federal department’s developer job posting in 2018:
Significant and recent experience in leading IT enabled projects or operations through all stages, including preparing business cases, leading multi-disciplinary teams, managing project or operational budgets, as well as delivering digital services to users
The “as well as” at the end – delivering digital services to users – is ultimately the work that software developers tend to find the most meaningful.
Experienced software developers – the people that government IT and service delivery teams need most – have a wealth of job options. Convincing them that the government is a fulfilling place to work depends on overcoming many of the reasons above. Doing this will be challenging work, and will require changes both to government policies and collective bargaining agreements. But to deliver internet-era services, these are critical steps.