(2) Can AI replace the technical skills of developers leading the digital world?

To celebrate its 20th anniversary, Korea IT Times is presenting special contributions that share the profound insights of opinion leaders from Korea and abroad. Following the notable experts who authored articles in July and August, we introduce the contributors for September:Prof. Jong-Shik Kim: D

featured-image

To celebrate its 20th anniversary, Korea IT Times is presenting special contributions that share the profound insights of opinion leaders from Korea and abroad. Following the notable experts who authored articles in July and August , we introduce the contributors for September : By Hyunseok Shin Can AI replace the technical skills of developers leading the digital world? Software development means writing source code using mathematical knowledge and problem-solving skills, and source code refers to the sequence of words and symbols that enable the program to operate. Ordinary people who are not involved in IT think that software development is the same as learning programming languages such as C, Java, Python,it’sjust coding.

Of course, developers are based on coding. However, just as anyone living in the United States can speak English well, but being good at English does not mean that you can work as an accountant or in marketing, knowing a programming language means that you have reached the first step toward software development, just like being able to speak English. I will list some of the important skills that are essential to becoming a software developer leading the digital world.



First, you need to know the programming language correctly. Knowing how to use the language correctly is important. It means the same as knowing how to code, JavaScript, Java, Go Lang, Python, etc.

Second, you need to know the development platform and framework. When developing a web, there are codes that are commonly required for all websites, but it is inefficient to develop them all yourself every time. A framework refers to a set of libraries used to develop codes on a specific platform or multiple platforms.

React, Angular, Vue.js, etc. Third, business logic, that is, you need to understand the industry to develop, which is the most important part of software development.

You need to know what you are developing to create the results you want.Programming languages and frameworks are just tools for businesses to create the results that customers want, but you need to understand the business of each industry, such as game, finance, manufacturing, and distribution, to properly create the required services. Because of the high level of complexity, it is difficult to acquire in a short period of time, and since each company and industry is different and does not allow external leakage of information, you need to work with field workers at the company for a long time to acquire domain knowledge.

Of course, since there are technologies that are commonly required for each industry, developers who know how to handle programming languages, platforms, and frameworks are utilized, but you need to understand the business logic of the industry to be able to be invested in the development of important core services. Understanding the business is very important. Fourth, algorithms and data structures.

Algorithms are general methods for solving various computer science and programming problems. For example, there are several sorting algorithms used to sort a list, and better methods can be developed, but the difference between someone who can solve something in a few minutes and another developer who cannot solve it in a few days is the field of algorithms. Data structures belong to a similar category and work together with algorithms.

Data structures that software developers should know include arrays, vectors, stacks, and queues. Fifth, understanding software architecture. It is important to learn how to properly design software and understand how it works overall, and whether software can be expanded or reduced when the number of users increases or decreases is determined by the architecture design.

Representative generative AI services include Microsoft Copilot, ChatGPT, Google Gemini, and Amazon Code Whisperer. Based on my experience using Microsoft Copilot, the advantage of AI services is that they can provide code suggestions while entering code, reducing coding work time. On average, the time it takes to complete the work code can be reduced by 30-40%.

It also helps reduce the time spent searching code examples or documentation by up to half, and suggests best practices to prevent common errors. It can help you find code that may cause errors or memory leaks in the future, focus more on the logic and structure of your code rather than syntax, and generate comments and documentation to improve readability and maintainability of your code. The downside of generative AI is that it is more likely to suggest potential errors in writing complex or non-standard code, and sometimes generates code that is out of context, leading to bugs.

If the suggestions are vague or irrelevant, it can take a lot of time to analyze which code needs to be modified. In addition, over-reliance on Copilot can lead to poor problem-solving skills or overall poor understanding of the underlying code. Since Copilot learns from code in GitHub repositories, it can struggle to provide accurate suggestions for complex algorithms or business logic, and it may not adequately represent certain problems or complex structures.

Failure to carefully review the generated code can lead to unsafe practices or security vulnerabilities. In general, generative AI services have excellent learning effects in areas such as understanding programming languages, development platforms and frameworks, algorithms and data structures, and they suggest surprising codes, so utilizing them helps improve development productivity. However, I think that specific business logic, specific algorithms, and software architecture areas of the industry that are difficult to replace with AI.

The business logic of various industries is not disclosed on GitHub, etc., so it is not learned. Algorithms are difficult to understand when looking at code developed by others, and it is hard to imagine how you can debug and correct problems if you use the algorithm suggested by AI.

Algorithm adoption is an area that should be used carefully. As mentioned in the previous article, software architecture does not seem to be able to suggest complex service environments through APIs for complexities in microservices, containers, Kubernetes, and hybrid cloud environments, and I think AI should not be utilized. Can you accept a situation where you can do nothing and just wait for AI to solve problems when problems occur? If AI does not respond in time, the service will continue to be interrupted, so I think this kind of adventure should not be adopted as a business operation strategy.

It is a core competency of an architect to create and manage the architecture of a system that handles a large number of users, but it is still difficult to judge how AI can replace it. In summary, I think AI is suitable for supplementing software development, but it is still premature to replace it. In the next article, I would like to discuss (3) Software development, what strategy should we use to respond to the current situation?.