We users use Artificial Intelligence (AI) almost every day, often without even realising it i.e. a large amount of the apps and online services we all connect with have a degree of Machine Learning (ML) and AI in them in order to provide predictive intelligence, autonomous internal controls and smart data analytics designed to make the end user User Interface (UI) experience a more fluid and intuitive experience.
That’s great. We’re glad the users are happy and getting some AI-goodness. But what about the developers?
But what has AI ever done for the programming toolsets and coding environments that developers use every day? How can we expect developers to develop AI-enriched applications if they don’t have the AI advantage at hand at the command line, inside their Integrated Development Environments (IDEs) and across the Software Development Kits (SDKs) that they use on a daily basis?
What can AI can do for code logic, function direction, query structure and even for basic read/write functions… what tools are in development? In this age of components, microservices and API connectivity, how should AI work inside coding tools to direct programmers to more efficient streams of development so that they don’t have to ‘reinvent the wheel’ every time?
This Computer Weekly Developer Network series features a set of guest authors who will examine this subject. This post comes from Clemens Mewald, director of product management for machine learning and data science at Databricks – the company was founded by the creators of Apache Spark in order to provide an alternative to the MapReduce system and provides a just-in-time cloud-based platform for big data processing clients. Databricks’ technology is used by developers, data scientists and analysts to help users integrate the fields of data science, engineering and the business behind them across the machine learning lifecycle.
Mewald writes as follows…
There is a gold rush in the developer tools industry to invent the canonical developer toolkit for AI developers (developers who build and deploy products utilising AI; think Data Scientists, ML Engineers and the like). As the thinking goes: All future products will utilise AI to some degree, so the vendor with the best AI developer toolkit will be the next Microsoft. While this gold rush is keeping some of us, including myself, busy, all other developers are wondering what AI can do for them.
AI being applied in developer tools is nothing new of course. In this post I’d like to suggest four maturity levels, provide some examples seen in the wild and suggest some bold new directions.
The four maturity levels of AI (in increasing order of difficulty) are:
- AI applied transparently without the developer’s knowledge.
- AI applied to improve existing developer-facing features.
- AI used to create new previously inconceivable features.
- AI used to create new previously inconceivable products.
Level 1: AI applied transparently without the developer’s knowledge
There is a category of AI applications that are humbly working behind the scenes. One concrete example is particularly interesting because it is AI applied to developer tools for AI. When AI developers use a distributed Machine Learning framework like TensorFlow, one of the most important aspects for the performance of their algorithms is how the computation is placed on different hardware (e.g. which computation do I run on a CPU vs. a GPU?). Deep within TensorFlow itself, there are methods to use Reinforcement Learning to perform this device placement task (example paper). This happens transparently to the developer who can simply enjoy the performance benefits.
Level 2: AI applied to improve existing developer-facing features
Most modern IDEs support autocomplete to some degree, which is simply a ranking problem. AI is particularly good at ranking problems and can help incrementally improve this feature. Atlassian, the maker of software development and collaboration tools, uses Machine Learning models trained on Databricks to rank @mentions in Jira and Confluence. When you assign a Jira ticket to another developer it ranks all available developers by the likelihood they’d be the correct assignee, accelerating your workflows.
Level 3: AI used to create new previously inconceivable features
Previously inconceivable features are where things get interesting. This is the type of AI application that you couldn’t have solved with simply applying heuristics or counting (like the most basic ranking algorithms). At the risk of blurring the lines between level 2 and 3 I would suggest that the leap from basic autocomplete to auto-suggest features like Gmail’s Smart Compose is big enough to warrant the “new feature” label. Sounds futuristic? Several products are already well down this path, e.g. TabNine.
Level 4: AI used to create new previously inconceivable products
Finally, what types of developer products can be conceived with the knowledge of what AI can do today and in the near future? As we make progress on multi-modal generative models (did you know you can use GPT3 and GANs to generate portraits?), how outlandish would it be to expect some advanced form of model-based code generation (a model, in this context, being a visual representation of the logic to be implemented)? Or, better yet from a Product Manager’s perspective, a PRD-to-code-converter?
With so-called ‘citizen developers’ on the rise alongside no-code/low-code applications, the market is wide open for AI applied to developer tools in creative ways. That being said, even those who want to apply AI to developer tools first need developer tools for AI to build these solutions.
So the goldrush for AI developer tools is still on.
Clemens Mewald leads the product management, machine learning and data science team at Databricks. Previously, he spent four years on the Google Brain team building ML infrastructure for Google, Google Cloud and open source users, including TensorFlow and TensorFlow Extended (TFX). Clemens holds an MSc in computer science from UAS Wiener Neustadt, Austria and an MBA from MIT Sloan.