A strategic challenge is facing CIOs: there is far more software to be written than developers available to write it. The result: software developer salaries are at an all-time high, and turnover in enterprise software developers was 13% between April and September 2021 according to an MIT study.
This is not a new challenge, of course, but there are some fresh things on the menu: innovative solutions that give CIOs new strategic options to solve the problem.
At the highest level, there are two principal approaches: finding ways to avoid writing code to solve a problem, and reducing the amount of code that needs to be written by developers. These map into three main areas of intense innovation:
- No code alternatives
- Low code — specifically open source stacks
- AI-augmented coding
CIOs in organizations that are growth-focused or are going through digital transformation are particularly well-placed to adopt no code tooling: it doesn’t need developers and provides a level of protection from technical debt and code maintenance costs. No Code is particularly well-suited for automating business processes, the essential “how work gets done” at all organizations. Manual processes — including “spreadsheet wrangling” — are growth killers because they are very fragile and break under change, and fixing them involves retraining and changing behavior.
In the past, a lot of this automation was implemented by software developers. Tooling for enterprise programming languages like Java followed this business automation evolution: in the 2000s Spring Java emerged as the leading framework for the rapid development of web-based business applications. In the 2010s, Spring re-invented itself with Spring Boot, a framework for developing not just websites but also APIs and the microservices behind them. The emphasis had shifted from stand-alone websites to more complicated integrations of processes and data, to enable greater scope for automation (Gartner calls this “the composable enterprise”).
Yet much of what was implemented in the 2000s as a Spring Java application could today be implemented in a modern CMS from Adobe or ContentStack, and those platforms can also access data and processes sitting behind external APIs. More general “Super-spreadsheets in the cloud” like Airtable can knit together almost anything with an API for automation into a solid, responsive cloud-based web app.
Gartner terms this approach of relentlessly automating everywhere “Hyperautomation.” The opportunity for CIOs is to take advantage of the sophistication of new automation platforms to have “Business technologists” automate everything in cooperation with IT. In a case study of Heathrow Airport, IT staff established communities of interest around no code tools to catalyze their adoption. They also established three levels of IT cooperation with the business depending on scope and risk: “private pilot” (IT largely hands-off), “co-pilot” (business leads with IT involvement) and “Passenger” (IT leads with business involvement). A key result was avoiding £2m in costs for developing traditional apps using traditional coding.
The boundary between no code and low code is somewhat blurry because most no code platforms offer the ability to customize and integrate other systems via traditional coding. And that provides a key insight: unlike no code solutions, low code tools are used by people who write code for a living. They might not have a developer title, but they write code and are more expensive and scarce — Data Scientists are a good example — but not as expensive and scarce as professional developers.
Low code platforms are not new: OutSystems, one of the bigger players in the space, was founded 21 years ago. What is new is low code based on open source stacks. CIOs can give their organizations access to a much larger pool of open source low coders and also make their organizations a more attractive place to work. Make the open source cool factor work for you!
Data Science is a good example: Python is the top language for data science because it’s free and easy to learn, and thanks to the excellent ecosystem of open source data science libraries. NumPy, the core scientific Python math library, is in the dependency tree of nearly every Python data science program and library. Can you do data science in Java and code what NumPy does? Of course. Is it anything like as easy as doing it in Python? Not even close. Do Data Scientists want to write Java? Nope.
Because Python data science programs run on top of a thick stack of open source libraries that do the heavy lifting, a small amount of Python data science code can do a lot. A few lines of Python can load up some data and kick off scale-out parallel training for a neural network. Notebook technology — principally the open source Jupyter Notebook — makes it possible to blend code, data, text, charts and images as easily as drafting a web page, without writing any additional code.
Low code open source stacks help CIOs because they require less code to be written, and it doesn’t have to be written by professional developers. There is also a large ecosystem of vendors who can warrant, secure, and support the popular open source stacks and will happily sell you platforms that make them easier to manage, govern and use.
One reason there’s more code to be written than people to do it is the oft-overlooked fact that 99.999% of code is written by hand. Software has transformed productivity in so many fields — you couldn’t launch a new venture in most fields where 99.999% of the work was done by hand. But that’s what we do with software. It’s like the ideas and approaches of the industrial revolution and everything that came after it has never touched the writing of software itself.
To be fair to developers, previous attempts at automated code generation were crude and ineffective, generating clunky code that only a machine could love but which — ironically — human developers would be required to maintain. Unsurprisingly, they didn’t want to do it.
What’s new is the application of AI and machine learning techniques, which has opened the door to code that looks like a human wrote it. Today there are two main approaches to AI-augmented coding: automated code completion tools, and automated test-writing tools.
AI-based code competition tools are a big advance on the basic code completion present in current IDEs: they write more substantial chunks of code by trying to infer the developer’s intent from code and/or comments that have come before. These tools came out of work on Transformers, a form of neural network designed for natural language processing — language translation, text summarization and similar applications. CoPilot from GitHub is perhaps the most well-known and is in technical preview at present.
Transformers are trained on a very large corpus of examples, and they use the resulting model to synthesize new examples — in the case of CoPilot, likely completions of code written so far.
According to GitHub, CoPilot gets that right about 43% of the time, so developers must review the code the tool generates. This is more useful than it perhaps might sound — a strength of CoPilot is in generating code that calls “foreign lands” such as cloud service APIs. To write this sort of code, most developers read the documentation and then run Google or Stack Overflow searches to find code examples that they can adapt, and then try it out in a trial-and-error process. CoPilot writes a complete call in a few seconds, which the developer can try right away. It’s also good for writing “boilerplate code” – the kind of standardized code that the language or framework requires to be filled out to form the basic structure of the code.
Automated test-writing tools use reinforcement learning to write unit tests that match the code they are testing, which results in a test suite that can find regressions in subsequent code changes. This is especially useful for poorly tested existing codebases and legacy code that is being modernized.
They work by conducting a search for the best test that achieves the best code coverage. They write a test and see how well it performs, and based on that predict a better test, try that and so on. Good test results reinforce the algorithm’s direction of travel through the set of all possible tests, hence the name. Although less well-known than neural networks, reinforcement learning has been growing in popularity and forms the algorithmic core of some spectacular AI successes, such as Google AlphaGo.
Diffblue, an AI spin-out from Oxford University, offers a product that 100% autonomously writes and maintains Java unit tests using reinforcement learning. It is used by large banks, pension funds and healthcare companies to write and maintain unit tests for its Transformers and Reinforcement Learning.
Feature image via Pixabay.