on
만들면 개발자다
Thread 앱을 깔아서 심심할때마다 잘 보고 있는데 바이브코더가 개발자냐는 글이 올라와서 댓글을 달았다.
원글의 요지는 바이브코딩으로 앱 만들었다고 본인을 개발자라고 말하는건 틀렸다, 최소한 버그 났을때 디버깅은 할 수 있는 수준은 되어야 개발자라는 얘기다.
내가 계속 이 업에 종사하면서 느꼈던 개발자들이 본인을 꽤 특별하게 여기는 모습이 여기 그대로 들어있다.
내가 답글을 달았다.
컴퓨터 언어로 소프트웨어 만들면 개발자다. 디버깅 못하면 그냥 허접한 개발자인거고. 나도 예전에 쉽게쉽게 가는 사람들 깔보고 그랬는데 오래 있어보니 부질없다. 다같이 개발자라 해줘야 개발자들 입지도 넓어진다.
그랬더니 누가 밀키트로 요리해도 요리사, 셰프라고 불러주냐라고 댓글을 또 달길래, 아 이 논쟁은 어찌된게 세월이 지나도 변하는게 없다는 생각에 정리할 겸 글을 써본다.
이런 주장을 하는 개발자들의 기본 멘탈 모델이 있다. 컴퓨터언어를 배워서 프로그래밍을 하여 소프트웨어를 만드는건 대단한(쉽게 하지 못하는) 일이다는 생각이다. 개발자로서 연봉을 다른 직군보다 좀 더 많이 받고 우대받는 것 같으니 나는 잘났다는 인식이다. 나는 이걸 개발자 자의식 과잉이라 부르는데 택도 없는 소리다. 2022~3년도 즈음의 개발자 수요가 폭발했을때 너도나도 개발자 몸값들을 올려서 개발자들을 소위 모셔가느라 이런 콧대높은 소리들을 하는거고 원래 이 직종은 업황이 좋았던 적이 잘 없다.
이런 멘탈 모델을 탑재해서 그 렌즈로 이 현상을 바라보면 “진짜” 개발자 논쟁은 낮은 추상화 시대에 진입했던 나를 포함한 레거시 개발자들의 헤게모니 투쟁처럼 느껴진다.
솔직한 고백으로 나도 몇년전까지만 해도 개발자라는 단어는 너무 광의적이니 잘게 쪼개서 세분하여 부르는게 “개발자 같지도 않은 애들”이랑 나같은 진짜 개발자를 구분지을 수 있는 방법이라 생각했었다. 지금 생각해보면 얼마나 어리석은 생각인지 모르겠다. 이 생각이 어리석기때문에 반대로 개발자라는 말이 쉽사리 대체되지 않고 계속 통용되고 있는것이다.
예전에는 스크립트 키디, 코더, 개발자 등을 나누더니 이제는 굳이 바이브코더까지 꺼내와서 개발자라는 단어를 게이트로 쓰면서 너는 개발자 아님, 나는 개발자임 도장찍기 놀이를 하며 소위 게이트키핑을 하고 있다. 어찌보면 두려움의 발로일 수도 있다.
쉽게 생각하자. 그냥 소프트웨어를 제작하는 사람은 개발자다. 그 제작 도구가 무엇인지는 관계없다. 스레드 댓글에는 컴퓨터언어라고 쓰긴 했지만 그 조건마저 필요없다. 그 제작도구가 지금은 LLM인거고, 그 전에는 framework였고, 그 전에는 고수준 언어였고, 그 전에는 C였고, 그 전에는 어셈블리였던거다. 그냥 새로운 패러다임이 등장할 때마다 추상화 정도는 높아져가고 그 추상화의 힘 덕분에 개발자의 문턱이 낮아지니 밖에 있던 사람들이 들어오고, 기존의 낮은 추상화때문에 고생했던 사람들이 그냥 그 꼴이 불편한거다.
밀키트 요리사 얘기도 똑같다. 밀키트(추상화)를 뜯어서 한 끼 차려냈으면 요리한거지 뭘. 잘했으면 잘한 요리고 못했으면 못한 요리다. 밀키트가지고 시비를 걸거면 아예 치킨스톡도 닭잡아서 뽑지 그래?
다같이 개발자라고 불러주면 뭐가 달라지나? 내가 더이상 특별해지지 않는것인지? 애초에 왜 개발자가 특별해야하는가? 그냥 디지털 프로덕트를 만드는 직군 중 하나일 뿐이다. 혹, 역할을 침해당한다고 생각하나? 침해당하면 좀 어때? 그냥 시대가 그런것이다. 무위한 저항이라 생각한다.
물론, 원 스레드의 글 마냥 디버깅을 못한다면 괴롭기야 할 것이다. 괴로운 만큼 성장하면 될 일이다. 바이브코딩으로 열심히 만들어서 내놨는데 개발자로서 프로덕트에 애정이 있다면 버그 수정하고 새 기능 만들면서 배워나갈 것이고, 아니면 더이상 만들지 않을것이다. 그럼 개발자가 아닌것이다.
이 단순한 도식에서 “개발자”에 저 의미 말고 특별한 타이틀을 부여하려고 하니 괴로운 것이다. 사실 개발자 자의식 과잉인 사람들은 말만 안하지 개발자 자격증이 생긴다하면 두손들고 환영할 사람들이다. 근데 개발업무가 뭐라고 대체 자격증으로 보호를 한다는 말인가?
소프트웨어 개발이라는건 배움에 대한 의지와 논리적인 사고력만 있으면 누구나 할 수 있는 작업이다. 그 과정에서 컴퓨터 시스템에 대한 깊은 이해와 시스템 구성에 대한 깊은 이해가 필요하면 그때 가서 또 배우면 될 일이고, 심지어 그걸 배우지 않더라도 소프트웨어 개발을 한다고 말할 수 있다. 이미 그러고들 있지 않은가? 응용 개발자 중에 내부 동작 잘 알고 개발하는 사람이 얼마나 있다고. 다들 말만 들으면 CSAPP 책은 다 떼고 온것처럼 말들 한다.
어떤 형태로든지 소프트웨어 개발을 하는 사람에게 이 업에 먼저 들어온 사람으로서 같이 발전하고 협력을 할 생각을 해야하는게 아닐까? 나는 요즘 소프트웨어 개발 씬에 흔히 말하는 비개발자 (비 레거시 개발자)가 개발자가 컴퓨터 공부하느라 못 쌓은 도메인 지식으로 무장한채 디지털 프로덕트를 만드는 것을 보며 신선한 충격을 받는다. 그리고 이제는 개발자도 취향(taste)이 중요하다는 생각이 강하게 든다. AI 시대에 코드를 찍어내는 일 자체는 싸질 것이다. 역사적으로 도구가 쉬워질때마다 만들것은 늘어났으니 프로그램을 만드는 사람은 계속 필요하다. 다만 어떤 문제를 고를것인가 어떤 취향으로 만들것인가가 이제 중요해지는 것이다. 코딩이 싸지는게 두려워서 진짜 개발자 밥그릇 싸움을 하고 있는것이라면 동정은 가지만 올바른 방향은 아니다.
두려우면 어떻게 해야하는가? 사실 도구를 뺏기는것이 두려운게 아니라, 내가 더 이상 도구를 다루는 특별한 소수가 아니게 되어서 두려운것이다. 그런데 그 특별함은 낮은 추상화 때문에 생긴 문턱 때문이었지 내가 잘나서가 아니었다. 문턱이 낮아지면 남는것은 내가 뭘 만들었느냐 뿐이다. 원래도 그것 뿐이었다.
그렇다고 그동안 쌓은 지식이 없어지진 않는다. 아직은 디지털 프로덕트를 쉽게 찍어낼 수 없고, 추상으로 덮인 내면을 아는 컴퓨터공학적 지식이 여전히 큰 도움이 된다. 다만 그걸 안다는것이 개발자의 조건이라는 얘기는 아니다. 추상화 레벨이 더 올라가면 그 지식마저 덜 필요해질거고, 몰라도 만들어 내는 개발자가 더 늘어난다. 레거시 개발자들은 불편한 감정이 들겠지만 높아진 추상화 레벨을 아무렇지 않게 무기로 휘두르는 사람이 새 시대의 개발자가 될것이다.