Thumbnail

6분

The End of Front-End Development

https://www.joshwcomeau.com/blog/the-end-of-frontend-development/

AI에 대해 점점 불안해하는 개발자가 많은 것 같습니다. GPT-4와 같은 도구의 데모가 점점 더 발전하는 것을 보고 HTML/CSS/JS에 자신들보다 더 잘하는 AI로 인해 자신들이 할 수 있는 일이 없어지지 않을까 걱정하고 있습니다.

이러한 분위기는 트위터 전체에 퍼져있습니다.

Screenshot of tweet: Anyone who only has a frontend skillset should diversify their skillset immediately because their job won’t exist soon.

프론트엔드 기술만 가지고 있는 사람은 곧 일자리가 사라질 것이므로 즉시 스킬셋을 다양화해야 합니다.

이 의견에 전적으로 동의하지 않습니다. 웹 개발자 일자리는 사라질 것 같지는 않습니다. 그리고 현재 온라인에 퍼지고 있는 FUD(Fear, Uncertainty, Doubt)에도 꽤나 지쳐가고 있습니다.

그래서 이 블로그 포스팅에서 앞으로 일어날 일에 대한 가설을 공유하고자 합니다. 상황이 바뀔 것이지만 사람들이 말하는 무서운 방식은 아닐 것입니다.

들어가면서

CSS 언어는 1996년 인터넷 익스플로러 3.0에서 처음 소개되었습니다. 2년 후, 최초의 "no code" 웹 사이트 빌더인 Homestead가 출시되었습니다.

Homestead를 통해 사람들은 코드를 한 줄도 작성하지 않고도 맞춤형 웹 페이지를 만들 수 있었습니다:

Screenshot of website building software from 20+ years ago

웹 개발자들이 새로운 기술로 인해 일자리를 잃게 될 것이라는 우려는 처음부터 있었습니다. 2000년대에는 WordPress 였습니다. 2010년대에는 Webflow였고 2020년대 초반에는 "no code" 툴이 등장했습니다.

그리고 어떤 의미에서는 웹 개발자는 쓸모없는 존재가 되었습니다! 요즘에는 동네 빵집이나 치과, 예술가에게 웹 사이트가 필요하다면 개발자를 고용하여 수만 달러를 지불하고 처음부터 무언가를 만들지 않을 것입니다. 이들은 SquareSpace에 접속하여 마음에 드는 템플릿을 찾은 후 $20/month 를 지불할 것입니다.

그럼에도 웹 개발자는 계속 존재합니다.

얼마 전 OpenAI는 GPT-4 쇼케이스를 진행했습니다. 인상적인 데모를 선보였습니다: 손으로 그린 웹 사이트 스케치를 GPT-4에 입력하면 "Reveal Punchline" 버튼을 동작시키는 JS를 포함하여 모든 기능을 갖춘 웹 사이트로 변환할 수 있습니다.

Sketch of a website that displays a joke

HTML code that matches the sketch

HTML website that matches the sketch

이 데모를 보고 프로토타입 제작에 있어 많은 잠재력을 가지고 있다고 생각했습니다... 그러나 분명하게 말씀드리자면, 지난 수십 년 동안 이런 종류의 페이지를 제작하는데 웹 개발자가 필요하지 않았습니다. 이 HTML과 오늘날 프론트엔드 개발자가 작업하는 코드 사이에는 엄청난 차이가 있습니다.

미래를 바라보며

지금까지 본 대부분의 데모는 단순한 HTML 페이지나 단일 JavaScript 함수 등 범위가 매우 제한적입니다. 한 명의 개발자가 오후에 만들 수 있는 것과 비슷합니다.

하지만 아직은 초기 단계입니다! 지금과 같은 속도로 계속 발전한다면 몇 년안에 전체 애플리케이션을 구축할 수 있게 되겠죠?

GPT-4와 같은 LLM에 관해서는 전문가와 거리가 멀지만, 높은 추상화 수준에서 어떻게 동작하는지는 이해하고 있습니다.

LLM
Large Language Models, the machine learning models that power tools like GPT-4

기본적으로 LLM은 매우 강력한 텍스트 예측 모델입니다. 프롬프트가 주어지면 머신러닝을 사용하여 프롬프트 다음에 나올 가능성이 가장 높은 문자 집합을 찾아냅니다.

OpenAI와 같은 회사들은 결과물을 개선하기 위해 모델을 조정하는데 많은 시간과 에너지를 투자합니다. 인간 라벨러 부대가 모델의 출력에 "등급"을 매기면 모델은 학습하고 진화합니다.

Chat GPT나 Bing의 AI 기반 검색과 같은 도구를 실험해 본 적이 있다면 응답의 정확도가 80% 정도라는 것을 알 수 있습니다.

LLM은 자신의 가정을 검증하거나 가설을 테스트할 수 없습니다. 자신이 말하는 것이 사실인지 아닌지 확인할 수 없습니다. 확률 게임을 하고 있으며, 생성해내는 문자가 프롬프트의 문자와 호환되는 것 같다고 추정합니다.

때로는 응답의 일부가 말도 안 되는 경우도 있습니다. OpenAI 팀은 이를 "할루시네이션(환각)"이라고 부릅니다.

Screeshot of Chat GPT 3.5 hallucinations

기술이 개선됨에 따라 일부 다듬어질 것으로 기대할 수 있지만 근본적으로 어느 정도의 부정확성은 항상 존재할 것입니다. 이러한 도구에는 응답을 객관적으로 검증할 수 없는 메커니즘이 없기 때문입니다.

Screeshot of Chat GPT 4 correct answer

따라서 정확도는 개선되겠지만 완벽하지는 않을 것입니다. 웹 개발자를 쓸모없는 존재로 만드는 것이라면 이는 문제입니다. 프로그래머가 아니라면 어떤 부분이 정확하지 아닌지 구분할 수 없습니다. 할루시네이션을 발견할 수 없을 것입니다.

하지만 잠깐, GPT-4 데모에서 AI가 스스로 고치는 방법을 보았습니다. 오류 메시지를 복사/붙여넣기 하면 문제를 알아서 해결합니다.

하지만 모든 할루시네이션이 예외로 이어지는 것은 아닙니다. 예를 들어, 최근에 GPT-4를 사용하여 React를 사용한 <Modal />컴포넌트를 생성했는데, 결과는 놀랍게도 좋았지만 여저히 몇 가지 접근성 실수를 범했습니다. 앱을 만드는 사람은 이러한 문제를 알아차리지 못할 수도 있지만 최종 사용자는 분명 알아차릴 것입니다.

코드의 보안 취약점은 어떨까요? 일이 끔찍하게 잘못되면 책임은 누가 져야 할까요?

한 가지 더 말씀드리면, 50줄자리 HTML를 생성하는 것과 프로덕션에 바로 사용할 수 있는 웹 애플리케이션을 만들어내는 것 사이에는 엄청난 차이가 있습니다.

정확도가 95%라고 해도 디버깅하기가 엄청나게 어려울 것입니다. 개발자가 코드가 100% 완성될 때까지 실제로 실행해 보지도 않고 몇 달 동안 거대 프로젝트를 만드는 것과 같습니다. 이것은 악몽과 같은 상황입니다.

AI는 마법이 아닙니다. AI는 학습 데이터만큼만 우수할 뿐입니다. 코드 스니펫 은 인터넷에 널려 있으며 일반적인 경우가 많습니다. 반면에 모든 코드베이스는 유니크합니다. 대규모 오픈소스 코드베이스는 거의 없습니다. AI는 어떻게 실제 대규모 프로젝트를 구축하는 방법을 학습할 수 있을까요?

개발자가 아닌 사람도 챗봇과 함께 소규모의 프로젝트를 만들 수 잇는 시점에 매우 빠르게 도달하고 있습니다. (현재 사람들이 Webflow와 같은 도구를 사용하여 구축하는 것과 같은 종류의 프로젝트) 정말로 멋진 일입니다!

하지만 주요 기술 회사들이 개발자를 즉시 해고하고 프롬프트 엔지니어로 대체하기에는 아직 너무 이르다고 생각합니다. 이런 일이 현실화되는 데 방해가 되는 몇 가지 잠재적으로 해결할 수 없는 문제가 있습니다.

대체가 아닌, 증강(Augmenting)

이 글에서는 잘 모르시겠지만 사실 AI에 대해 꽤 낙관적입니다. 😅

가장 가능성이 높은 시나리오는 GPT-4와 같은 도구가 개발자 도구에 통합되어 숙련된 개발자가 할 수 있는 일을 증폭시키는데 사용되는 것이라고 생각합니다.

목수가 전동 공구로 대체되지 않았고, 회계사가 스프레드시트로 대체되지 않았으며, 사진가가 디지털 카메라/스마트폰으로 대체되지 않았듯이, 개발자도 LLM으로 대체되지 않을 것입니다.

믿거나 말거나, 전문 사진작가의 수는 해마다 증가하고 있습니다. 미국 노동 통계국에 따르면 향후 10년간 일자리 수가 매년 9%씩 증가할 것으로 예상하고 있습니다. 참고로 전체 산업 평균은 5%입니다.

개발자가 개개인의 업무 효율이 훨씬 더 높아지면 개발자 일자리가 줄어드지 않을까요?

꼭 그렇지는 않습니다. 현재 소프트웨어 개발자는 공급보다 수요가 훨씬 더 많습니다.

개발자의 생산성이 갑자기 2배로 높아지면 어떨까요? 더 많은 버그가 수정되고, 더 많은 기능이 출시되고, 더 많은 수익이 창출될 것입니다. 개발할 것이 부족하지 않으니 개발자들이 할 일이 부족할 일도 없을 것입니다.

오히려 전체 개발자 일자리가 늘어날 수도 있다고 생가합니다.

오늘날에는 소프트웨어 개발자를 전혀 고용하지 않는 회사가 많습니다. 개발 비용이 너무 비싸기 때문에 개발자를 사내에서 고용하는 것보다 외주를 주는 것이 더 합리적입니다.

포춘 500대 기업은 현재 소프트웨어 개발 비용을 기준으로 계산하고 있습니다. 몇 가지 숫자를 보겠습니다. 각각 15만 달러씩, 연간 60만 달러에 해당하는 4명의 개발자가 필요하다고 가정해 보겠습니다. 이를 관리하기 위해 외부업체에 50만 달러를 지불하는 것이 더 합리적입니다. 하지만 LLM이 실제로 개발자의 생산성을 향상시킨다면, 동일한 양의 작업을 수행하기 위해 각각 15만 달러에 개발자 2명을 고융할 수 있습니다.

분명히 말씀드리지만: 저는 경제학자가 아니며, 이 모든 것은 추측에 불과합니다. 실제로 이런 식으로 바뀔 것이라고 확신하는 것은 아닙니다. 제가 말씀드리고 싶은 것은 이것이 우리에게 좋지 않을 것이라는 예견된 결론이 아니라는 것입니다. 이 상황이 어떻게 전개될지 아무도 모르는데, 사람들이 최악의 시나리오가 기정사실인 것처럼 행동하는 것에 조금 지쳐가고 있습니다.

우리만 이런 고민을 하는 것이 아닙니다

Aaron Blaise는 베테랑 애니메이터이자 일러스트레이터입니다. 그는 거의 20년간 디즈니에서 일하면서 미녀와 야수, 알라딘, 포카혼타스 등 디즈니의 영화에 기여했습니다.

몇 주 전, 그는 YouTube에 동영상 하나를 올렸습니다: 디즈니 애니메이터의 AI 애니메이션 리액션 이 블로그 게시물을 읽고 나면 그의 견해가 친숙하게 들릴 것입니다. 그는 이러한 도구를 위협으로 보지 않고 애니메이터의 생산선을 높이고 더 많은 애니메이터 일자리를 창출할 수 있는 도구로 보고 있습니다.

수십 개 산업 분야의 아티스트와 지식 근로자들이 이와 같은 대화를 나누고 있습니다. 사람들은 GPT-4, DALL-E 2, Midjourney와 같은 인공지능이 자신들의 일자리를 잠식할까 봐 걱정하고 있습니다.

GPT-4는 모의 변호사 시험에 합격할 수 있을까요? 많은 변호사들이 이와 똑같은 논의를 하고 있습니다.

저는 개인적으로 대부분의 현업 전문가들이 이 기술을 업무에 통합하여 생산성과 가치를 높일 수 있는 방법을 찾을 것이라고 믿습니다. 일부 업무는 인공지능에 위임할 수 있지만, 많은 업무는 그렇지 않을 것입니다.

하지만 예상이 빗나가고 LLM이 소프트웨어 개발자를 완전히 대체할 수 있다면 어떨까요? 이렇게 된다면 LLM이 지식 근로자의 대다수를 대체할 것이라고 생각합니다.

이것은 다른 분야로 바꾼다고 해서 피할 수 있는 쓰나미가 아닙니다. 더 높은 곳은 없습니다. 따라서 미래에 어떤 일이 일어날지 예측하기보다는 자신이 열정을 가지고 있는 분야, 관심 있는 분야, 잘하는 분야에 집중하는 것이 어떨까요?

프론트엔드 vs 다른 엔지니어링 분야


온라인에서 일부 사람들은 프론트엔드 개발이 특히 AI 대체에 취약하다고 주장하며 개발자가 백엔드 또는 데이터 엔지니어링에 집중할 것을 제안합니다. 이는 완전히 반대된 생각입니다. 어떤 개발자도 쓸모없어지는 것에 대해 걱정할 필요는 없다고 생각하지만, 만약 취약한 점이 있다면 백엔드에 있다고 생각합니다. 최근 OpenAI의 GPT-4 라이브스트림에서는 코드 관련 데모 2가지를 선보였습니다:


  • "Joke website" 프론트엔드
  • 파이썬 베이스의 Discord bot

두 프로젝트 중 파이썬 코드가 훨씬 더 프로덕션에 적합해 보였습니다. 저도 최근에 Node.js를 사용하여 Discord 봇을 만들었는데, 코드가 상당히 비슷해 보였습니다. 반면에 "Joke website"를 위해 생성된 기본 HTML은 제가 매일 작성한 프론트엔드 코드 사이에 많은 차이가 있습니다. 지나친 일반화이긴 하지만 지난 10여 년 동안 많은 복잡성이 서버에서 클라이언트로 이동해 왔습니다. 모놀리식 애플리케이션은 서버리스 모음으로 바뀌었고, 프론트엔드는 점점 더 데스크톱급 애플리케이션으로 진화했습니다. 또한 프론트엔드는 사용자가 상호작용하는 제품입니다. 기업들은 일반적으로 자사 브랜드에 맞게 독특하고 세심하게 제작된 맞춤영 제품을 원합니다. 반면 백엔드는 눈에 잘 보이지 않습니다. 일반적인 백엔드는 일반적인 프론트엔드보다 훨씬 더 수용적입니다.


업계에서는 많은 사람들이 백엔드 개발이 프론트엔드 개발보다 더 어렵거나 복잡하다고 생각하며, "진짜" 엔지니어링은 서버에서 이루어진다고 생각합니다. 물론 이것은 말도 안되는 이야기입니다. 저는 스스로를 풀스택 개발자라고 생각합니다. 두 개의 스택은 서로 다른 방식으로 어렵습니다. 둘 다 복잡하고 어렵습니다.


(참고로 프론트엔드는 JS 프레임워크가 아니더라도 여전히 복잡하고 어렵습니다. 저는 사용성과 접근성에 중점을 두고 HTML, CSS, Vanilla JS를 사용하여 고품질 웹사이트를 전문적으로 제작하는 분들을 정말로 존경합니다. 그리고 이들이 조만간 AI로 대체될 것이라고 생각하지 않습니다.)

학습에 도움이 되는 LLM 사용

몇몇 분들로부터(또한 저도) ChatGPT가 기술 학습에 정말 도움이 되었다는 이야기를 들었습니다. 튜토리얼에서 헷갈리는 부분이 있으면 인공지능에게 설명을 요청할 수 있습니다!

기본적으로 ChatGPT는 이해가 안 되는 부분을 이해하도록 도와주는 페어 프로그래머와 같은 역할을 합니다. 구체적인 질문을 하고 구체적인 답변을 얻을 수 있습니다.

하지만 조심해야 할 필요가 있습니다. 학습을 돕기 위해 이와 같은 도구를 사용하는데는 올바른 방법과 잘못된 방법이 있습니다.

잘못된 방법은 내비게이션처럼 취급하는 것입니다. 어딘가로 운전해야 할 때 내비게이션에 주소를 입력하고 그대로 따릅니다. 그러면 대체로 목적지에 도착하긴 하지만 정신적인 노력을 전혀 들이지 않아도 됩니다. 그 결과 방향 감각이 완전히 위축되었습니다. 이제는 내비게이션 없이는 목적지에 도착할 수 없습니다. 😬

ChatGPT가 생성하는 코드를 무턱대로 복사/붙여넣기 하지 말고 한 줄 한 줄 살펴보고 이해했는지 확인하세요. 설명을 요청하세요. 그리고 의심스러운 부분은 공신력 있는 출처(예: 공식문서)를 통해 다시 확인하세요. LLM은 100% 확신할 수는 있지만 100% 정확하지 않다는 점을 명심하세요.

마무리하며

저자의 말:
이 블로그 포스팅을 작성하게 된 이유는 웹 개발을 배우는 과정에서 이 분야 전체가 곧 쓸모없어질 텐데 왜 이렇게 많은 시간과 에너지를 들여 기술을 쌓아야 하는지 불안해하는 분들을 위해 특별히 말씀드리고 싶었기 때문입니다.
상황이 완전히 똑같이 유지될 것이라고 약속할 수는 없습니다. 하지만 AI가 우리의 업무 방식에 영향을 미칠 것이라고 생각합니다.
하지만 지금까지 제가 본 것 중 우리 직업이 위험에 처해 있다는 징후는 없었습니다. 저는 웹 개발자가 쓸모없어지는 시점에 와 있다고 생각하지 않습니다.

개인적인 의견 또한 위 내용과 비슷합니다. 대체로 프론트엔드가 백엔드에 비해 쉽다는 말을 많이 듣기도 했고,(전혀 동의하지 않습니다만) 프론트엔드가 AI로 인해 줄어들거나 대체될 가능성이 높다는 말도 많이 들었습니다.

하지만 저는 프론트엔드가 AI로 인해 대체될 가능성이 높다고 생각하지 않습니다. 저 또한 ChatGPT를 업무에 사용하고 있고, DeepL, Copilot 등을 사용하고 있습니다. 하지만 이들은 저를 대체할 수 없습니다. 저는 이들을 사용하여 업무 효율성을 높이고, 더 나은 결과물을 만들고 있습니다.

저는 오히려 AI 기술이 발전함에 따라 프론트엔드가 더욱 중요해질 것이라고 생각합니다. 기술이 발전함에 따라 프론트엔드는 더욱 복잡해질 것이고, 더욱 많은 기술과 지식이 요구될 것입니다. 이 때 AI는 좋은 도구로써 프론트엔드 개발자를 도울 것입니다.

reference

마지막 업데이트

4/30/2023


Avatar

JHSeo

배우는 것을 좋아하고 관심이 많은 웹 엔지니어 입니다. 느리더라도 꾸준하게 성장하려고 노력하는 개발자입니다.