It is well-known that generative AI can create images, producing photo-realistic pictures, illustrations, and paintings just by following instructions.
Meanwhile, in the business world, attention is focused on generative AI's capability to generate programs.
Chat-based AI is realized through foundational large language models, making it highly proficient at conversing in various languages and translating between them.
Programming languages, used to create programs, are also a type of language. Human programmers, in a sense, translate software requirements received verbally into programming languages.
For this reason, conversational generative AI using large language models is also highly skilled at programming.
Furthermore, programming is a type of intellectual work where the correctness of the output can often be verified automatically and instantly. This is because running the created program allows for automatic determination of whether the desired results are produced.
In fact, human programmers often create test programs simultaneously with the main program to verify that the main program functions as intended, checking its behavior as development progresses.
Generative AI can also progress through programming while testing, allowing for a mechanism where, if a human provides precise instructions, the AI can automatically iterate and complete the program until it passes the tests.
Of course, due to the limitations of generative AI's programming ability and the ambiguity of human instructions, there are many cases where tests cannot be passed even after multiple iterations. Also, tests may be insufficient or incorrect, often leading to bugs or problems in the completed program.
However, as generative AI capabilities improve, human engineers refine their instruction methods, and generative AI's programming knowledge is enhanced through internet searches, the scope for automatically generating appropriate programs is increasing day by day.
In addition, with the business world's attention, top companies conducting generative AI research and development are also focusing on improving generative AI's programming capabilities.
In such circumstances, the expansion of the areas and volumes where automatic programming can be entrusted to generative AI is anticipated to accelerate.
There are many cases where individuals who have never developed programs before have set up a basic development environment based on internet information, then let generative AI handle the programming, completing programs in a collaborative effort.
I myself, as a programmer, use generative AI for programming. Once I get the hang of it, I can complete software without editing the program at all, simply by copying programs into files or cutting and pasting according to generative AI's instructions.
Of course, there are many instances where I encounter difficulties. These are mostly due to my computer or programming development tools having slightly different settings from the typical configurations, or free software components being newer than what the generative AI learned, leading to a knowledge gap, or sometimes my requested content being a bit unusual.
In most cases, if there are no such minor differences or special circumstances, and I instruct it to create a very common software feature, appropriate programs are generated.
Towards the Era of Liquidware
As a software developer, I can release the software I develop. And the software that we engineers release is used by various users.
The future where anyone can perform this software development with generative AI is an extension of the discussion so far.
However, this is not just a change on the software development side. A significant change will also occur on the user side.
Instructing generative AI verbally to automatically add or change features to software can be done not only during the development phase before software release but also while it is in use. Moreover, it can be done by the software users themselves.
Software developers simply need to define the permissible and unchangeable ranges and release the software with a generative AI-powered customization feature.
This would allow users to request generative AI to change minor usability issues or screen design preferences.
Furthermore, it would be possible to add convenient features found in other apps, perform a combination of multiple operations with a single click, or view frequently accessed screens on a single display.
From the software developer's perspective, enabling such user customization offers significant advantages. It eliminates the need for them to add features based on user requests, and considering that it could increase software popularity by avoiding negative feedback and dissatisfaction regarding usability, it's a big win.
When users can freely change screens and functions in this way, the concept deviates significantly from what we traditionally called "software."
It would be appropriate to call it "liquidware" to signify that it is even more fluid and adaptable than software (which is flexible compared to hardware), and that it perfectly fits the user.
In the past, functions were realized solely by hardware, but then replaceable software emerged, allowing functions to be realized by a combination of hardware + software.
From there, we can think of liquidware emerging, which refers to parts that can be modified by generative AI. Thus, overall functions would be realized by hardware + software (provided by developers) + liquidware (user modifications).
In this era of liquidware, user-side modification ideas will explode.
A groundbreaking modification idea invented by one user might become a hot topic on social media, leading others to imitate and modify various liquidware.
Also, liquidware that can integrate and handle various types of software is bound to emerge. This would allow users to view timelines from multiple different SNS platforms in a single app, or integrate search results from numerous platforms.
In this way, in a world where liquidware is prevalent, various devices, including PCs and smartphones, will provide functions that perfectly fit each individual's life and activities.
A Current Phenomenon
What's important for software engineers like me is that liquidware isn't a futuristic concept or something several years away.
This is because very simple liquidware is already achievable.
For example, let's say I'm an engineer developing a web application for my company's e-commerce site.
Such web applications typically have databases, sales management systems, and product shipping systems on servers managed by the company or contracted cloud services. When a user makes a purchase, these systems link up to collect payments and ship products.
The core systems and databases for these operations cannot be arbitrarily changed.
However, if the design of the e-commerce website that users see is modified for each user's convenience, it usually causes little trouble. Of course, if one user's changes affect another user's screen, that's a problem, but individual user-specific customizations are fine.
Various modifications are conceivable: making text larger, changing the background to a dark tone, moving frequently pressed buttons to positions easily accessible with the left hand, sorting items by price on a list screen, or displaying the details of two products side-by-side.
Technically, these modifications can be achieved by altering the configuration files and programs like HTML, CSS, and JavaScript that display the screen on the browser.
In terms of security, these files originally run on the web browser, so they are modifiable by engineers familiar with web applications. Therefore, they only handle functions and data that are safe to be modified.
Thus, on the e-commerce web app's server side, one could store these files separately for each logged-in user, add a screen for conversation with a chat AI, and create a mechanism to modify that user's HTML, CSS, and JavaScript files on the server according to their requests.
If you provide this text, along with the configuration information and source code of an existing e-commerce web app, to generative AI, it will likely provide the steps and necessary programs to add such functionality.
In this way, liquidware is already a current topic; it wouldn't be surprising for it to be an ongoing phenomenon.
Omnidirectional Engineer
Even if the scope of AI-powered automatic programming expands and the era of liquidware has already begun, software development cannot yet be carried out solely by generative AI.
However, it is certain that the weight of programming in software development will significantly decrease.
In addition, to develop software smoothly, a wide range of knowledge and engineering skills are needed, not just general programming, but also cloud infrastructure, networks, security, platforms, development frameworks, and databases—covering the entire system from top to bottom.
Personnel with such knowledge and skills are called full-stack engineers.
Until now, a few full-stack engineers handled the overall design, while the remaining engineers either focused solely on programming or specialized in specific non-programming areas within the system stack, sharing roles in this manner.
However, as generative AI takes on the programming portion, software development costs will be significantly reduced, leading to the planning of various new software developments.
Consequently, each development project will require very few engineers who can simply write code; instead, a large number of full-stack engineers will be needed.
Furthermore, in this situation, simply having full-stack knowledge and skills will be insufficient. This is because various software development projects will demand diverse types of software, meaning that development will not always be requested within the same system stack. Also, the demand for composite systems requiring multiple system stacks is bound to increase.
For example, the system stack for a web application differs from that for business or core systems. Therefore, a full-stack web app engineer cannot be entrusted with a core system development project.
Moreover, web apps, smartphone apps, and PC applications have different system stacks. In the world of embedded software, like IoT, the system stack completely changes depending on the device it's embedded in.
However, if the emphasis on programming decreases and the overall cost of software development lowers, the development of composite systems that combine software with different system stacks should increase.
While this will require assembling multiple separate full-stack engineers for development, engineers who can oversee the entire picture and perform basic design will hold a crucial position.
This means that engineers with omnidirectional knowledge and skills across numerous system stacks, transcending the boundaries of individual system stacks, will be in demand.
Such engineers will likely be called omnidirectional engineers.
And just as the demand for engineers who can only program will decrease due to generative AI, an era will eventually come when the demand for full-stack engineers confined to a single system stack also diminishes.
If you wish to remain active as an IT engineer in that era, you must start striving to become an omnidirectional engineer right away.
The Role of the Omnidirectional Engineer
The programming languages, platforms, and frameworks to be developed are diverse.
However, this doesn't mean one must learn all of them. This is because the omnidirectional engineer can also receive assistance from generative AI.
If entrusted to generative AI, even programming languages, platforms, or frameworks that one has never personally used can be generated simply by providing instructions verbally.
Of course, there is a risk of introducing bugs or security holes, or accumulating technical debt that could make future modifications difficult.
To identify and mitigate these risks, knowledge of the specific language or library is necessary. However, that knowledge can also be obtained from generative AI. The omnidirectional engineer only needs to be able to thoroughly construct the procedures and mechanisms for detecting and preventing these issues, or for handling them post-factum.
These procedures and mechanisms do not change significantly with differences in the system stack. If one can formalize the procedures and mechanisms for suppressing the introduction of bugs and security holes, and for ensuring future extensibility during development, then the rest can be entrusted to generative AI or engineers skilled in those particular areas.
The omnidirectional engineer does not need to possess detailed knowledge or long-term experience with every individual system stack.
Furthermore, one of the major roles of an omnidirectional engineer is to design how functions are distributed and how they interoperate within complex software that operates collaboratively across multiple, different system stacks.
In addition, considering how the entire software should be developed and managed also becomes an important role for the omnidirectional engineer.
Omnidirectional Software
Let's consider what kind of software development calls for an omnidirectional engineer.
Earlier, I gave the example of developing an e-commerce web application.
Under the direction of an executive in charge who has been ordered by the company's top management to overhaul this e-commerce web application, the planning team might come up with the following requirements:
User Community Platform Conversion. This means not just an e-commerce specific app or site, but providing a platform where product users can interact with each other about the products themselves and their usage. The aim is user retention, word-of-mouth effect, enrichment of content through user contributions, and integration of product development feedback (both positive and negative) with new product planning and marketing.
Omni-device Compatibility. This enables access to the user community and product information from not only web apps but also smartphone apps, voice assistants, wearable devices, smart home appliances, and all other devices.
Omni-platform Compatibility. This includes not only the company's own user community platform but also, for example, product listings and review sharing on general e-commerce sites, integration with social media, and functional and information linkage with various AI tools.
Business System Refresh. While temporarily linking with existing sales management and product delivery systems, these systems will also be refreshed. After the refresh, real-time sales data aggregation, demand forecasting, and integration with inventory management systems are envisioned. Furthermore, as gradual integration with regional distributed inventory systems and product shipping services provided by delivery companies progresses, the information systems must also gradually integrate accordingly.
Liquidware Compatibility. Of course, all user interfaces will be compatible with liquidware. In addition, all internal user interfaces, such as those for information aggregation and feedback for product development and planning, system operation departments, and management reports, will also be converted to liquidware.
If a development plan for such complex software were presented, a traditional software development team would likely not accept it immediately. Or, during the process of refining system specifications, they would logically demonstrate the need for enormous development costs and time, and push for significant reductions in specifications.
However, what if generative AI could automate most of the programming, and more than half of the presented system stacks were familiar to someone on the team, and the team had previous experience successfully introducing new system stacks, platforms, and frameworks from scratch with the assistance of generative AI? And what if you, as an omnidirectional engineer, had already embarked on this path and were intending to continue on it?
From that perspective, it should appear to be a very attractive project. You would get to work with a planning team that puts forth ambitious proposals under the direction of planning leadership, and a development team with the potential to grow into an omnidirectional software development team.
There's also the reassurance of existing systems. It's also a project that allows for agile development processes, where high-impact features can be built quickly, and the system can grow incrementally with feedback from early adopter users.
Considering this, the development of this omnidirectional software should appear to be an attractive project.
In Closing
Thanks to automatic programming by generative AI, liquidware and omnidirectional software development are already becoming current realities.
In such a situation, IT engineers are increasingly needing to move beyond full-stack and aim to become omnidirectional engineers.
Furthermore, beyond that, their scope will expand to omnidirectional business engineering, which comprehensively engineers organizational activities by connecting customers, internal employees, and AI beyond the scope of IT systems, and omnidirectional community engineering.
And even further beyond that, I believe a field called omnidirectional social engineering will emerge, aimed at comprehensively improving society.