저는 AI에 대해서 잘 모릅니다. 단순히 보고 들은 것으로 작성할 뿐이며, AI는 chatGPT를 기준으로 합니다.
순도 100% 자기 생각이 담겨 있는 글이므로 틀린 내용이 있을 수도 있습니다.
이 글은 chat gpt의 도움을 받아 작성하였으며, 뼈대는 스스로 고안하여 작성하였습니다.
시작하며
인공지능(AI)의 발달은 현대 사회에 큰 영향을 미치고 있다. 우리는 이제 AI가 우리의 일상 생활에 점차적으로 진입하고 있음을 목격하고 있습니다. 이러한 발전은 Chat GPT, Bing Chat, 그리고 최근에는 Bard와 같은 고급 AI 모델들의 등장으로 한층 더 확대되고 있다.
Chat GPT는 텍스트 기반 대화 시스템의 한계를 뛰어넘어, 심지어 삼행시와 같은 창의적인 작업도 수행할 수 있게 되었다. 이전에 주어진 질문과 답변을 바탕으로, Chat GPT는 이후의 대화에서 신뢰성 있는 답변을 생성하는 데에도 도움이 되고 있다. 예전에는 인간이 대화의 흐름을 파악하고 적절한 답변을 구성하는 것이 필요했지만, 이제는 AI가 이 역할을 대신 수행할 수 있게 되었다.
AI의 발달은 개발자들에게도 혁신적인 변화를 가져왔다. 이제 개발자는 원하는 코드를 AI에게 명확히 전달하기만 한다면 AI가 자동으로 코드를 작성해준다. AI는 개발자의 목적과 의도를 파악하고, 필요한 코드를 생성해주는 역할을 수행한다. Github의 Copilot은 적절한 함수명을 작성하면, AI가 그 의도를 파악하여 적절한 코드를 작성해준다(물론 제대로 동작하지 않을 수도 있다).
AI의 도움은 개발 작업뿐만 아니라 문서 작성에도 영향력을 끼치고 있다. 예를 들어 Notion과 같은 도구는 AI Ghost Writer를 도입하여 사용자가 작성하고자 하는 내용을 AI가 신속하게 채워줄 수 있도록 도와주는 서비스를 개시했다(유료임). 사용자는 빈 화면에서 아이디어를 구체화시키고 문장을 완성하는 데 집중할 수 있다. 이러한 도구는 창의적인 아이디어를 빠르게 표현할 수 있는 기회를 제공하며, 글쓰기와 문서 작성 과정을 더욱 효율적으로 만들어주기도 한다.
chat gpt가 이렇게 관심 받는 이유
AI 기술은 몇 년 전부터 굉장히 핫한 주제였지만, 최근에는 그 관심이 더욱 높아지고 있는데, 그 이유 중 하나는 "나의 밥줄이 정말로 끊어질 수 있다는" 우려가 들 정도로 우리 생활에 밀접하게 침투했기 때문이다.
이전에는 AI가 주로 사무 업무를 대체할 수 있는 도구로 생각되었습니다. 하지만 Chat GPT와 같은 AI 모델은 단순히 사무직을 대체하는 수준을 넘어섰고 이제는 창의력이 필요한 문화와 예술 계열에서도 AI가 활약하고 있다. 심지어 AI로 작성된 책이 시장에 출시되어 GPT가 작가로서 활용되는 경우가 있다.
다음과 같은 웹 사이트도 있다.
예술 분야에서도 AI에 대한 반대 운동이 일어나고 있는데, 웹툰 작가들 중 일부는 AI로 그린 그림에 대한 반대 운동도 펼치고 있다(기사).
https://github.com/mrbartrns/blog/assets/56826914/ef65bd46-091c-4f88-9b7a-edeaee249c98
개발자와 AI
이러한 AI의 발전은 웹 개발자들에게도 영향을 미치고 있다. 개발자들은 이제 원하는 동작 방식을 말하기만 하면 AI가 코드를 작성해주는 도움을 받을 수 있다. 예를 들어, "두 수를 더한 값을 반환하는 함수를 만들어줘"라고 말하면 AI가 그에 맞는 코드를 작성해준다.
또한, 개발자들이 문제를 직면했을 때 AI에게 물어보면 AI가 실제로 원인을 알려주기도 한다. 실제로 이 블로그를 만들면서 React의 Context api를 사용했었는데, React Suspense 블록과 Context api의 충돌로 인하여 hydration error가 발생했었고, chat gpt에게 물어보기 전 까지 정확한 원인을 파악하지 못했었다.
개발자에게 있어서 AI의 발전은 득이 될까, 실이 될까?
이를 통해 개발자들은 더욱 효율적으로 작업을 수행할 수 있게 되었고, 시간과 노력을 절약할 수 있게 되었다.
AI는 개발자라는 직업을 위협하지 않을 뿐더러 오히려 득으로 작용한다
인공지능(AI)의 발전은 개발자라는 직업에 있어서 사라질 위험보다는 오히려 득으로 작용할 것이라고 생각하는 이유는 다음과 같다.
생산성 향상과 작업 효율성
AI를 활용함으로써 개발자는 단순하고 반복적인 작업을 AI에게 맡길 수 있다. AI는 이러한 작업들을 더욱 빠르고 정확하게 수행할 수 있으며, 개발자의 업무에 대한 생산성을 크게 향상시킨다.
또한, 구체적인 요구사항을 명확하게 제시할수록 AI가 원하는 결과를 산출하는 확률이 높아지기 때문에 보다 구체적으로 요구사항을 제시하는 것이 중요하다.
- 두 수를 더하는 함수를 만들어줘 → 두 수를 더하는 함수를 만들어줘. 함수명은 OOOOO이고, 자바스크립트를 이용하여 만들어줘
- 디자인 시스템을 만들어줘 → gray900, 800, 700 ... 100의 색깔을 정의하는 웹 프론트엔드 디자인 시스템을 typescript로 만들어줘, gray 톤은 최대한 neutral한 색감으로 만들어줘
완벽하진 않아도, 그래도 의도대로 코드를 만들어준다.
AI의 한계와 개발자의 역할
방금까지 AI에 대한 칭찬을 했는데 갑자기 한계가 무슨말이냐 할 수 있지만, AI에 의하여 개발자라는 직업이 사라질 수 있는가?에 대한 주제를 논하기에는 적절하다고 생각한다. 현재 AI의 학습에 한계가 있기 때문에, 근시일 내에 개발자라는 직업이 대체된다고 보기에는 어려움이 있다.
실제로 AI의 성능에는 한계가 있으며, 생성된 코드를 그대로 사용할 수 없거나 의도와는 다른 동작을 수행하는 경우가 있다. Chat GPT의 경우 없는 이야기를 지어내는 경우도 종종 있다(GPT-4에서는 어느정도 해결되었다고 한다).
대표적으로 주펄찜 레시피가 있다. 주펄찜이라는 요리는 우리나라에 없다.
따라서 개발자의 역할은 AI가 생성한 코드를 검수하고 수정하는 일이다. 특히 Frontend 개발의 경우 사용자와의 상호작용과 감성적인 측면이 포함되어 있고, 이는 정량적인 부분 뿐 아니라 정성적인 요인이 반영되는 부분 역시 적지 않으므로, AI가 전적으로 처리하기 어려운 영역이다. Backend 개발의 경우 실제 비즈니스 로직을 다루는 경우가 많고, 도메인 지식이 필요한 부분이 있어 AI가 대체하기 어려울 것이라고 생각한다.
AI 모델의 유지 비용과 확장 제약
AI 모델을 유지하기 위한 비용 역시 AI의 발전을 저지하는 요인이 되고, 개발자라는 직업이 여전히 존재할 전망이라고 생각하는 요인 중 하나다.
AI 모델은 많은 컴퓨팅 자원과 데이터를 요구하며, 그에 따른 유지 비용이 발생한다. 이로 인해 AI 모델의 확장에 제약이 생길 수 있다.
실제로 현재 chat gpt 모델을 유지하는데 필요한 비용은 하루에 약 9억이라고 한다.
AI는 개발자의 직업을 위협한다
인공지능(AI)의 발전은 현대 사회의 모든 직업에 영향을 미치고 있는데, 그 중에서도 개발자의 직업에 대한 위협은 더욱 현실적으로 다가온다. 위에서 보았듯이 현재 chat gpt가 작성할 수 있는 코드는 굉장히 다양하며 개발자의 생산성에 매우 긍정적으로 기여한다. 그러나 미래에 더욱 발전하여, 개발자의 생산성에 기여하는 것 뿐만 아니라 개발자 두 명, 세 명의 몫을 하게 된다면? 더 이상 초급 개발자는 사라지게 될 것이고, 다양한 이유로 인해 AI는 개발자의 직업을 대체할 수 있는 가능성을 지니고 있으며, 이는 직업적 안정성과 미래 전망에 대한 우려를 불러일으키고 있다.
인간과 비교할 수 없는 AI의 학습 속도
AI의 학습 속도는 인간과는 비교할 수 없을 정도로 빠르다. 인간의 학습은 한계가 있지만, AI는 컴퓨팅의 힘을 통해 끊임없이 학습할 수 있다. 특히 웹 개발 분야에서는 인터넷을 통해 접근 가능한 다양한 정보들이 존재하고 있어 AI는 빠르게 웹 개발에 관련된 지식을 습득할 수 있다. 이로 인해 웹 개발자들은 AI에 의해 더욱 큰 위협을 받을 수 있다는 점을 염두에 두어야 한다. 또한, AI는 현재는 학습하지 못한 지식들도 지속적으로 학습하고 있으며, 다양한 분야의 지식을 융합하는 능력을 갖추고 있기 때문에 앞으로 더욱 다양한 분야에서 활동할 수 있는 가능성이 있다.
이미 AI에 의한 해고는 시작되었다
AI에 의한 해고는 이미 현실화 되었고, 개발자도 미래에 그 대상자가 될 것이라는, 약간의 절망적인 생각이 있다. 창의력을 요구하는 예술과 문화 분야에서도 AI에 의해 창작된 작품들이 성공적으로 수상하는 사례가 등장하고 있어, 이는 인간만이 할 수 있다고 생각했던 창작의 분야에서도 충분히 인간을 대체할 능력을 갖추고 있다는 것을 보여준다. 또한, 미국에서 마케팅과 소셜 미디어 분야에서 이미 AI에 의해 사람들이 해고되기 시작했고, 이는 머지않아 개발자들도 AI에 의해 대체될 수 있다고 여겨진다.
AI의 발전은 개발자들에게 미래에 대한 불안을 안겨주고 있다. 하지만 이는 동시에 개발자들에게 새로운 기회와 도전을 제공한다는 점도 염두에 두어야 한다. AI가 개발자의 일부 업무를 대체하더라도, 여전히 인간의 창의력, 도메인 지식, 윤리적 판단력 등을 필요로 하는 분야들은 AI로 대체하기 어렵다. 따라서 개발자들은 자신의 강점을 발휘하고 AI와 협력하여 새로운 가치를 창출해 나갈 수 있는 능력을 갖추어야 한다.
AI의 발전이 개발자의 직업을 위협한다는 사실은 부정할 수 없다. 그러나 이는 단지 현재의 상황에 머물러서만 생각하기보다는 AI와의 공생을 모색하고, 새로운 역량을 개발함으로써 개발자들이 새로운 일자리와 기회를 창출할 수 있는 가능성을 열어둬야 한다. 개발자들은 지속적인 역량 강화와 새로운 분야에 대한 탐구를 통해 미래에 대비할 필요가 있으며, AI와의 협력을 통해 보다 혁신적이고 가치 있는 일을 수행할 수 있는 길을 모색해야 한다.
AI 시대에서 개발자로서 살아남기
개인의 생각이 이렇다 정도로 봐주시면 감사하겠습니다.
본인만의 특별한 강점 찾기
가장 어려우면서도 가장 중요한 전략은 본인만의 특별한 강점을 찾는 것이다. 이는 흔히 말하는 스펙과는 거리가 있다. 우리나라는 특히 스펙에 대한 경쟁이 과열되어 있고, 그렇기 때문에 스펙을 따기 위해 오랜 시간을 투자 하더라도 시간이 지나면 다른 사람들과 차별점이 없게 된다. 따라서 스페셜리스트가 되기 위해서는 본인의 강점을 찾고 개발하는 것이 굉장히 중요하다.
물론 이렇게 작성은 하고 중요성에 대해 느끼고 있으나 실제로 자기 자신이 무엇을 잘하는지 잘 아는 것은 굉장히 어려운 일이다. 따라서 나에 대해서 명확하게 파악하는 것이 어렵다면 몇 가지 검사를 통해서 알아보는 방법도 좋다. 워크넷에서 관련 검사들을 제공하고 기록 역시 저장된다.
기본에 충실하기
기본 지식은 응용을 가능하게 하며, 기초가 탄탄해야 새로운 지식을 빠르게 습득할 수 있다. 기본에 충실하다는 것은 곧 새로운 트렌드에 대한 대처가 빠르다는 것과 같다.
예를 들어, 다음의 두 사람이 있다.
- 모던 프레임워크를 빠르게 사용하기 위하여 유튜브 또는 각종 교육 업체를 통해 동영상으로 속성으로 배워서 해당 문법에 대해 잘 아는 사람
- 모던 프레임워크에 대해서 잘 모르지만, 자바스크립트의 동작 원리에 대해 이해하고 어떤 특성을 가지고 있는지 명확하게 알고 있는 사람
이 두 사람 중 더욱 빠르게 트렌드를 읽고 실력이 성장할 수 있는 사람은 후자라고 생각한다. 모던 프레임워크만 배운다면 해당 프레임워크는 잘 사용할 수 있겠지만, 다른 것을 배우는데 있어서 애를 먹을 것이며, 심지어는 해당 모던 프레임워크를 사용할 줄만 알고 해당 현상이 나타나는 이유는 잘 모를 수도 있다. 예를 들면, React에서 상태를 관리하는 방식은 이전 class 문법에선 this.state 형식으로 관리를 했고, 현재는 useState hook을 통해 관리하고 있는데, 이는 자바스크립트에서의 this
는 함수 호출 시 결정되는 특성과, useState의 경우 클로저를 통해 상태를 관리하며 클로저의 현상의 이해 없이는 완벽하게 프레임워크를 사용할 줄 안다고 말하기 어렵다.
더 나아가 자료구조와 알고리즘, 컴퓨팅적 사고 방식을 길러야 한다. 이는 웹 프론트엔드 개발자도 예외가 아니라고 생각한다. 다른 사람들은 웹 프론트엔드는 화면에 보이는 것이 중요하고, 데이터만 잘 받아와서 연결하면 된다
라고 말하는 사람들도 있지만, 웹 프론트엔드 역시 개발분야이다.
- 우선 DOM 부터 트리 형식으로 이루어져 있으며, 자료를 저장할 때 배열과 오브젝트, 집합 등을 이용하여 저장하는 경우가 많다.
- 웹 분야가 고도화 됨에 따라, 백엔드와 프론트엔드의 분리가 이루어졌고, 컴퓨터 및 브라우징 성능이 증가함에 따라 프론트엔드에서 로직을 처리하는 경우가 많아졌다(물론 데이터 처리 같은 부분은 백엔드에서 다루고 있지만, 증가하긴 했다). 웹 게임은 대표적인 브라우징 성능을 이용하는 예시로 볼 수 있으며, 게임을 ‘잘’ 만들기 위해서는 구조가 탄탄해야 하며, 설계 능력 역시 중요하다.
많은 시행착오 거치기
백문이 불여 일타라고 생각한다. 머리속에 아무리 지식을 때려 넣는다 한들, 직접 코드를 작성해보지 않으면 완벽하게 이해하기 어렵다고 생각한다. 예를 들어 이벤트 루프에 관련된 내용을 공부할 때도, jsfiddle.net 등 간단히 dom을 작성하고 확인할 수 있는 웹 사이트에서 실제로 어떤 식으로 동작하는지 확인하는 습관을 들이는 것이 개인적으로 좋았다.
배운 지식을 기록하는 방식도 좋은 방법이다. 필자도 처음 학습할 때는 단순히 끄적이는 정도로만 기록했으나, 배운 내용을 글로 남기면서 머리속이 정리도 되고, 조금 더 오래 남는 것 같았다. 동기 부여를 위해 블로그 활동을 하는 것도 좋다. 다만, 이미 온라인에 정형화 된 지식 정보들은 유명하신 분들 블로그에도 많이 있기 때문에 조회수라던가… 그런것들은 기대하지 않는 것이 좋다. 개인적으로 자신의 생각이 들어가 있지 않은 글들은 영혼이 없다고 생각하는 입장이다.
마치며
AI의 발전은 긍정적이든, 부정적인 방향으로든 우리 사회에 큰 변화를 일으킬 것이라고 생각하며, 개발자 역시 이러한 사회적인 흐름에 큰 영향을 받을 것이라고 생각한다.
개발자 내에서도 양극화가 심화될 것으로 예상되며, 실력 없는 개발자들은 사회에서 도태될 가능성이 크다. 기술적인 역량과 능력이 부족한 사람들은 산업 환경에서 경쟁력을 잃게 될 수 있다. 따라서, 실력 있는 개발자로 남기 위해서는 지속적인 업무에 대한 자기계발과 학습이 필요하다.
개발자로서 살아남기 위해서는 큰 그림을 그릴 수 있는 능력이 필요하다. AI의 발전으로 인해 자동화되는 부분이 증가하게 될 것이므로, 기초가 탄탄하고 전략적인 사고를 갖춘 개발자가 더 많이 필요해질 것으로 예상된다.
AI의 발전으로 인해 일부 개발자의 일자리가 감소할 수 있지만, 동시에 새로운 일자리가 생길 것으로 예상된다. AI 기술의 발전은 새로운 분야와 기회를 창출할 것이며, 새로운 역할과 직무가 등장할 가능성이 있다. 이러한 변화에 대한 사회적인 제도와 대응이 필요하다고 본다.
마지막으로, 어느 분야든 최고는 대체될 수 없다는 점을 인식해야 한다. 기술의 발전은 도구와 도움이 되지만, 창의성, 전략적인 사고, 문제 해결 능력 등 인간의 강점은 여전히 중요하다. 따라서, 개발자로서의 업무는 AI에 의해 영향을 받을 수 있지만, 인간적인 요소와 전문적인 능력은 여전히 필수적인 역할을 할 것이다.
AI의 발전은 개발자의 직업에 영향을 줄 것이라는 사실은 불가피하다. 그러나 이에 대응하기 위해서는 개발자들은 지속적인 업무 개선과 자기계발에 주력해야 한다. 업무의 변화와 기술의 발전에 능동적으로 대응하며, 자신의 강점을 발전시켜야 개발자로서의 경쟁력을 유지하고 성공할 수 있을 것이다.