The Future of Code Development
The entire coding process has shifted radically throughout its creation and into its tenure. While the five main steps of the code process have remained the same
The entire coding process has shifted radically throughout its creation and into its tenure. While the five main steps of the code process have remained the same
Coding has become the necessary currency of the new job market. From high budget campaigns with former President Barack Obama encouraging Americans to learn computer science, to Apple’s new collaboration with the Boys & Girls Club of America to launch a new coding program, computer science is being taught earlier and earlier and has now become an essential part of a well-rounded education.
A recent study done by code.org shared how Computer Science courses have grown from being available in 35% of High Schools nationwide to now over 51%, just within a span of the last three years. With Computer Science based degrees being some of the highest paying out of college, and the software industry becoming ever more prominent in popularity and prowess, how big can the industry get? What is the future of software engineering?
The entire coding process has shifted radically throughout its creation and into its tenure. While the five main steps of the code process have remained the same (defining the problem, planning the solution, coding the program, testing the program, documenting the program) there have been significant innovations to help this process become more streamlined. Regardless of what programming language is used or whether a company's or personal projects are on premise or in the cloud, AI and machine learning technology have begun to automate the process of software engineering.
The most recent example of such efforts being used on a large scale was GitHub’s launch of its latest software development tool CoPilot. CoPilot provides developers with automated code snippets that can be embedded into a user’s codebase. Where developers once went to check websites such as stackoverflow for prewritten code that was far too time-consuming to write out themselves, CoPilot seeks to decrease time spent searching, freeing up more time for developing meaningful codebases.
But the coding process does not stop here. Developers spend a considerable amount of time reviewing already written code. Recent studies have shown that this process can take up to 35% of a developer's work hours. In the past, the only real way to define any reasonable solutions for bugs was to go through them manually, painstakingly trying to figure out where a problem is arising and why. Early development tools looking to aid developers in the process were somewhat useful, but not inherently beneficial. Most of these adaptations could only comb through and find bugs easily detectable to the human eye.
Some current code review solutions check for style, others for security issues and select bugs, and a few even offer visualizers for a codebase. Yet, automated code review of more time-consuming errors remains a challenge these tools have been unable to rise to. Most of these review tools check for a variety of problems that are preset by the developer. More specifically, the developer defines rule-based algorithms for the code review process.
This human intervention, however, limits the scope of what is detected to what the developer knows, which in turn sets boundaries for the error detection process. Moreover, rule-based code review prevents automated learning of the tool. Current tools do not tell the developer how to go about solving issues in any meaningful way.
Metabob is a static code analysis, AI code review tool that learns from bugs found in millions of open-source code repositories. Specifically, Metabob runs attention based, graphed neural networks to detect coding errors. The attention network sits atop inputs given to it, learning in which areas of the codebase bugs typically hide. The model learns dynamically based on each specific node change or correction. Given that Metabob learns from both bugs and individual repositories, it is possible to detect context-based bugs.
Context and logical-based bugs, as defined by techterms, are “a mistake in a program's source code that results in incorrect or unexpected behavior.” In this way, the information provided to developers is more useful, as it is catching issues it already knows to be of concern. Metabob enables developers to check where problems are and show how they interact with other aspects of the codebase. In addition, Metabob recently added code recommendations. That is, the AI is now also able to make suggestions on how to fix coding errors, which represents another step to a fully automated code review process. Metabob is an all-in-one solution, providing all the standard tools developers already use to debug code. Metabob is not rooted around commonly known local rule-based systems. Instead, it utilizes intuitive AI practices to learn and create solutions developers need.
The future of software engineering is still hotly debated. While we are somewhat in that future now, we understand that the process of developing code will continue to evolve, with AI playing an increasing role in writing and reviewing codebases. The questions that developers will continually end up running into are “is automating helping me solve the bigger issue?” and “do I have more time freed up for innovation?”
Tools such as CoPilot and Metabob are leading the way into the future of software engineering. While CoPilot makes an important first step towards automating the more tedious parts of programming, Metabob’s AI code review is ushering in an era of code correction.
Metabob could potentially even aide in helping improve the recommendations CoPilot provides, as researchers at NYU have mentioned: “Code often contains bugs—and so, given the vast quantity of unvetted code that Copilot has processed, it is certain that the language model will have learned from exploitable, buggy code.”
As the next few years unfold, we will see more and more tools looking to automate and minimize the time spent on the ‘plumbing’ of code development, freeing up time for creative, more nuanced areas of the field.