Generative AI: Code

Code Generation. The generation of source code, including code refactoring, code translation, and code explanation. But, one by one.

📙 Btw. NLP = Natural Language Processing, and is part of AI.

Generation: The NLP creates source code including comments following manual code input. For example, Deepgenx (with video) suggests potential code succession, just after only a part of the initial comment. Others are GitHub's Copilot, SourceAI, Themesberg (CSS code generator), and some more see here or here.

Refactoring: When code needs to be re-structured one can refactor it via GAI models. For instance, Typist’s AI offers this functionality. The input is code, which is text, which the NLP GAI model modifies/ re-organises into better-structured code, with respect to better practices.

Translation: Similarly, code can be translated from one language to another, from Python to Perl, from SQL to C++, etc. This video showcases OpenAI’s Codex capabilities to do that. Btw. as Microsoft owns both of them, it seems to be a logical move to use OpenAI’s Codex in GitHub’s Copilot.

Explanation: You have legacy code and don’t understand it, or perhaps you want to improve your code documentation? Then, you could run a respective GAI model over it to explain it to you. For a better look & feel of code explanation, try it out yourself on Stenography’s Dashboard.

Here is a screenshot of how Copilot suggests code to you. It is seamlessly integrated into the workflow:

💡 What could this mean?

  • Shift of coding focus: It seems obvious that the focus of coding will shift. Rather than coding administrative, and perhaps more straightforward code, developers can semi-automate it and allocate their time and energy to solving harder problems - where GAI’s limits are obvious. Thus, the software product development cycle is likely to shorten. It also seems logical, hopefully, that only officially secure libraries and packages are allowed to be integrated by AI, reducing vulnerabilities.

  • Developers stay integral: However, questions remain like: how do we ensure quality? How do we ensure code readability for fellow developers? We believe that in the short- and mid-term code quality and readability can not be guaranteed by an AI. A human in the loop (HITL) will stay inevitable.

  • Shift of skills: What skills could be important for future developers? As the long-term trend goes, the code abstraction for most developers continues to be successively more high-level. Over the years and decades, we’ve moved away from low-level (close to machine language) coding to high-level programming languages e.g. Python, and Go. Thus, coders will shift their profiles towards more holistic programmers that not only see the code problem at hand, but also all other aspects of software product development. A holistic programmer keeps in mind:

    • Coding best practices: Code generation ≠ (not equal to) best code generation.

    • The software’s architecture: Which cloud? Hybrid? On-prem? What interfaces is it using? What design patterns to use?

    • Cyber security: Can the seed code (this is the prompt for invoking the generated code) be typed in a way that it prevents various cyber attacks in the best way possible?

    • For all points above, prompt engineering (the skill of creating high-quality, sophisticated prompts) will have great significance.

These are just a couple of aspects that might happen, but maybe not. What is your opinion of how this tech will affect our way of working?