[작성자:] offcuts

  • 채용공고를 읽다가 불안해졌다

    올해 재취업을 준비하면서 채용공고를 꽤 봤습니다.

    그러다 좀 이상한 일이 있었습니다. 요구사항이 대부분 아는 것들이었거든요. 써봤고, 이력서에도 적을 수 있는 것들. 그런데 한 줄씩 짚어 내려가면서 “이거 지금 설명해보라고 하면 되나?” 싶으니까 답이 안 나오는 게 계속 나왔습니다.

    모르는 건 아니었습니다. 알았던 것 같은데 흐려져 있었던 거죠.

    그 느낌이 어디서 왔는지는 대충 짐작이 갔습니다.


    1년 4개월 동안 있었던 일

    직전 회사에서 1년 4개월 동안 Web3 프론트엔드랑 크리에이터 플랫폼을 혼자 만들었습니다. 디자이너도 기획자도 사수도 없었고요. 20여 개 페이지를 만들고, 지갑 붙이고, 결제 처리하고. 그런 일들이었습니다.

    물어볼 사람이 없으니까 AI가 사실상 동료였습니다. 기존 코드베이스를 AI로 분석해서 구조를 파악하고, 화면을 만들고, 고치고, 다듬었습니다. 그게 틀린 선택이었다고 생각하진 않습니다. 솔직히 그 상황에서 다른 방법이 있었나 싶기도 하고요.

    결과물은 나왔습니다. 서비스는 돌아갔고 사람들이 썼습니다.

    문제는 그다음이었습니다. 일을 쉬면서 돌아보니까, 결과물이 나온 만큼 제 안에 남은 게 있진 않더라고요.

    빠르게 만들어지는 만큼 “왜 이렇게 되는가”를 건너뛰기가 너무 쉬웠습니다. 돌아가면 넘어갔거든요. 돌아가니까요.


    저만 그런 게 아니더라고요

    이게 저만의 문제인지 궁금해서 좀 찾아봤습니다. 생각보다 많았습니다.

    한 주니어 풀스택 지원자는 기술면접에서 기존 애플리케이션에 기능을 직접 구현해보라는 요청을 받고 완전히 얼어붙었다고 합니다. 그 사람, 이미 실제 사용자가 있는 제품을 여러 개 만들어서 배포한 개발자였습니다. 본인 표현을 그대로 옮기면 이렇습니다. “소프트웨어를 어떻게 만드는지, 구조를 어떻게 잡는지, 디버깅을 어떻게 하는지 압니다. 그런데 AI 없이 빈 에디터에서 시작하려니 어디서부터 해야 할지 모르겠더군요.”(Reddit)

    더 인상적이었던 건 회사 지시로 그렇게 된 경우입니다. 어떤 개발자는 8개월 전 회사 디렉터 방침에 따라 모든 개발을 Claude Code로만 하게 됐다고 해요. 그 기간에 웹 프로젝트랑 iOS·안드로이드 앱을 만들었고요. 그가 쓴 문장이 오래 남았습니다.

    “이론적으로 저는 이제 모바일 앱 다섯 개를 만든 사람입니다. 그런데 제가 뭘 만들었고 어떻게 만들었는지에 대한 이해가 여전히 없습니다.”(Reddit)

    이력서는 채워졌는데 사람은 안 채워진 상태인 거죠.

    Hacker News에 “AI 코파일럿이 우리 프로그래밍 실력을 갉아먹고 있는가”라는 스레드가 있는데, 거기 한 개발자가 자기 코딩 실력이 눈에 띄게 떨어졌다고 적었습니다. 지금 일을 못하는 건 아닙니다. LLM으로 계속 일하고 있어요. 다만 순수 개발직으로 이직하려면 몇 달 연습이 필요할 것 같다고 판단했고, 그래서 실직에 대비해 1년치 생활비를 따로 빼뒀다고 하더군요.(Hacker News)

    이 사람들 공통점이 있습니다. 일을 안 한 사람들이 아니에요. 오히려 반대죠. 만들었고, 배포했고, 회사가 요구한 걸 해냈습니다.


    먼저 사라지는 건 문법이 아니었습니다

    AI 의존 얘기를 하면 보통 “문법을 잊어버린다”를 떠올리는데, 제 경우엔 그게 아니었습니다.

    먼저 사라진 건 오류 앞에서 버티는 시간이었습니다.

    예전엔 에러가 나면 로그를 읽었습니다. 어디서 터졌는지 추측하고, 검색하고, 가설 세우고, 고치고, 틀리고, 다시 세우고. 굉장히 비효율적이죠. 그런데 문제 해결 능력은 정확히 그 비효율 안에서 만들어지더라고요.

    AI를 쓰면 이 구간을 건너뛸 수 있습니다. 에러 복사해서 붙여넣고, 고쳐진 코드 받고, 실행하고. 또 에러 나면 또 붙여넣고. 결국 돌아갑니다.

    근데 프로그램의 문제가 해결된 것과 내가 문제를 해결할 수 있게 된 건 다른 일이잖아요.

    한 시니어 개발자가 최근 뽑은 주니어 두 명을 관찰한 기록이 이 장면을 정확히 묘사합니다. 둘 다 면접 잘 통과했고 코드도 빠르게 짠다고 해요. 그런데 뭔가 깨지면 디버깅을 안 하고 에러를 ChatGPT에 붙여넣는답니다. 안 되면 새 에러를 또 붙여넣고요. 그중 한 명이 그렇게 네 번 반복하는 걸 보다가 스택 트레이스 읽는 법을 알려줬더니, 그런 걸 해본 적이 없다고 했다는 겁니다. 코드 리뷰에서 “왜 이렇게 짰어요?” 물으면 대답이 안 나온다는 얘기도 있고요.(Reddit)


    회사 안에 있으면 잘 안 보입니다

    이게 좀 고약한 지점입니다. 부채가 쌓이는 동안 지표는 오히려 좋아지거든요.

    지금의 생산성에는 사실 여러 개가 섞여 있습니다. 나의 능력, AI, 회사 코드베이스, 익숙한 도메인 지식, 옆자리 동료, 회사가 세팅해둔 개발 환경. 이게 전부 합쳐져서 결과물이 나옵니다.

    퇴사하면 이 중 상당수가 사라지죠. 그리고 다음 회사 면접관은 그걸 전부 걷어낸 상태에서 묻습니다.

    “그래서 당신은 뭘 할 수 있습니까?”

    저는 그 질문을 면접장이 아니라 채용공고 앞에서 먼저 받았습니다. 그건 운이 좋았다고 생각합니다.


    그렇다고 “AI 쓰지 말자”는 아닙니다

    여기서 얘기가 좀 뒤집힙니다.

    한 개발자는 AI 솔루션을 직접 만드는 사람이었는데, 도구가 자기 사고를 대체하는 게 싫어서 Copilot 같은 걸 작업 환경에 안 붙였다고 합니다. 기술면접은 통과했고요. 그런데 이후 대표랑 면담하면서 그 얘기를 하다가, 생산성 도구 경험이 부족하다는 이유로 탈락했다고 적었습니다.(Reddit)

    반대 방향 기록도 있습니다. 미들급 백엔드 면접에서 지원자가 “AI 써도 된다”는 말을 함정이라고 생각하고 직접 코드를 쓰기 시작했더니, 면접관이 5분쯤 만에 멈춰 세웠다고 해요. 도구 없이 어떻게 하는지가 아니라, 도구를 쓸 때 어떻게 하는지를 보고 싶다고요. 실제 평가 대상은 생성된 코드를 어떻게 검증하고 버그를 어떻게 잡아내는지였습니다.(Reddit)

    그러니까 앞으로의 구분선은 AI를 쓰는 사람과 안 쓰는 사람 사이가 아닐 겁니다.

    AI가 없으면 아무것도 못 하는 사람AI 없이도 문제를 이해하지만 AI를 쓰면 몇 배 빨라지는 사람, 그 사이겠죠.


    남는 질문

    기술 부채라는 말이 있죠. 당장 빠르게 가려고 진 빚을 나중에 이자까지 쳐서 갚는 것.

    경력에도 비슷한 게 생길 수 있다고 생각합니다. 오늘 일은 빨리 끝나고, 야근도 줄고, 성과도 나쁘지 않습니다. 비용은 나중의 내가 냅니다. 회사를 옮길 때, 낯선 코드베이스 앞에 섰을 때, 지금 쓰던 도구가 없는 환경에 던져졌을 때.

    그래서 요즘 저한테 더 무거운 질문은 “AI가 내 일자리를 가져갈까”가 아닙니다.

    AI와 함께 일한 지난 시간이, 내 경력에도 그만큼 남아 있는가.

    가끔은 이렇게도 물어봅니다.

    지금 AI를 끄면, 나는 여전히 이 일을 할 수 있는가.

    지난달의 저는 여기에 자신 있게 답을 못 했습니다. 그래서 지금 이걸 쓰고 있고요.

    사실 이 블로그도 거기서 시작했습니다.

    흐려진 걸 다시 붙잡으려면 어딘가에 적어두는 수밖에 없더라고요. 머릿속에만 있으면 아는지 모르는지 구분이 안 됩니다. 그런데 글로 쓰려고 하면 금방 들통나거든요. 설명이 안 되면 모르는 거니까요.

    그래서 여기엔 흩어져 있던 것들을 하나씩 옮겨 적어두려고 합니다. 정리해서 남기는 김에, 어디까지가 아직 제 것인지도 같이 확인해보려고요.

  • 안드로이드에서 블록체인을 거쳐 프론트엔드까지

    한 줄

    모바일에서 시작해 스마트 컨트랙트와 백엔드를 거쳐, 지금은 웹 프론트엔드를 중심으로 일하는 개발자입니다.

    세 줄 요약

    2018년 안드로이드 개발자로 시작해 블록체인, 백엔드, 프론트엔드를 차례로 거쳤습니다.
    스마트 컨트랙트부터 지갑 연동 화면까지 혼자 만들어본 경험이 있고, 최근에는 AI 도구를 활용해 한 서비스의 프론트엔드를 혼자 맡아 설계 하고 운영했습니다.
    넓게 훑은 만큼 얕아지지 않으려고, 지금은 기초부터 다시 쌓고 있습니다.


    프로그래밍을 시작한 이유

    1990년생입니다. 자동차 공학·정비를 전공했고 고등학교 때 관련 자격증을 세 개 땄지만, 막상 해보니 제 적성이 아니었습니다. 대학을 중퇴했습니다.

    프로그래밍을 처음 만난 건 20대 초반이었습니다. 게임을 만들어보고 싶어서 종로의 학원을 다녔는데, for 문에서 막혔습니다. 반복문이 왜 그렇게 도는지가 이해되지 않았고, 결국 그만뒀습니다.

    그 뒤로 몇 년을 특별한 방향 없이 보냈습니다. 20대 후반이 되니 불안해졌습니다. 나이를 먹어도 오래 할 수 있는 일이 뭘까 생각했고, 예전에 도망쳤던 것이 떠올랐습니다.

    2017년 겨울, 다시 학원에 등록했습니다. 이번엔 끝까지 갔습니다. 안드로이드, HTML/CSS/JavaScript, PHP, MySQL, 리눅스, 소켓 통신을 훑었습니다. 대단한 수준은 아니었습니다. 수료생이면 누구나 하는 만큼이었죠. 다만 이번엔 for 문 앞에서 도망치지 않았다는 게 저에게는 컸습니다.

    2018년 4월, 첫 직장에 들어갔습니다.


    커리어의 흐름

    안드로이드로 시작해서 블록체인으로

    첫 회사는 안드로이드 개발자로 입사했습니다. 디자이너가 없어서 화면 구성까지 직접 했습니다. 지금 보면 부끄러운 UI지만, 그때 “누가 안 해주면 내가 한다”는 습관이 생겼습니다.

    블록체인은 우연히 맡게 됐습니다. 담당하시던 개발자분이 퇴사하면서 회사에서 인수인계를 받아보지 않겠냐고 물었고, 욕심에 손을 들었습니다. 2018년은 그 분야가 가장 뜨거웠던 시기였고, 저는 그때 아무것도 모르는 신입이었습니다.

    그 뒤로 비트코인·이더리움 노드를 세우고, 라이트코인 기반 오픈소스를 수정해 알트코인을 만들고, 솔리디티로 ERC-20 토큰을 짰습니다. 마지막에는 이더리움 지갑 앱을 자바와 Web3.js로 만들었습니다.

    결과적으로 이 선택이 제 커리어의 축이 됐습니다. 의도한 건 아니었습니다.

    안드로이드 · 백엔드 · 거래소

    두 번째 회사에서는 쇼핑몰 앱을 만들었습니다. WebView 기반 앱에 PG 결제를 붙이고, CodeIgniter로 API도 짰습니다. 프로젝트가 마무리 단계에 접어들면서 조직이 정리됐고, 6개월 만에 나오게 됐습니다.

    짧게 끝난 게 아쉬웠습니다. 실수도 많았고, 그게 제 몫이 아니었다고 말할 생각은 없습니다.

    세 번째 회사는 가상자산 거래소였습니다. 안드로이드와 iOS 웹뷰 앱을 만들고, 거래소 어드민 페이지 API와 클라이언트 API를 개발했습니다. Node.js를 처음 실무로 써본 게 이때입니다. 통계 쿼리를 짜고 입출금 내역을 다루면서, 돈이 오가는 시스템의 무게를 처음 실감했습니다.

    회사는 이후 사업을 마무리했습니다. 저는 개발팀 소속으로 제품을 만드는 일만 했습니다.

    다시 학생이 된 시간

    세 번째 회사를 나온 뒤, 취업 대신 공부를 택했습니다.

    첫 회사 다닐 때 호기심에 사뒀다가 잊고 있던 코인이 있었는데, 잔고를 확인해보니 꽤 올라 있었습니다. 그 돈으로 온라인 강의에 등록했습니다. 수학, Java, C++ 세 과목을 동시에 신청했습니다.

    강의 안내에는 “한 과목도 벅찰 것”이라고 쓰여 있었습니다. 저는 회사를 다니지 않으니 괜찮을 거라고 생각했습니다.

    결과는 처참했습니다. 1주가 지나고 2주가 지날수록 진도가 저를 앞질렀고, 중간고사와 기말고사 모두 형편없는 점수를 받았습니다.

    그런데 이상하게 돈이 아깝다는 생각은 들지 않았습니다. 억울했던 건 다른 거였습니다. 그동안 제가 공부해온 방식이 틀렸다는 걸 그제야 알았다는 것. 돌아가는 코드를 만드는 것과 왜 돌아가는지 아는 것 사이에 얼마나 먼 거리가 있는지를, 시험지 앞에서 처음 봤습니다.

    공부하다가 운 건 그때가 처음이었습니다.

    세 과목을 끝까지 듣긴 했습니다. 성적은 좋지 않았지만, 이 시간이 없었다면 저는 지금도 “돌아가니까 됐다”에서 멈춰 있었을 겁니다. 제 커리어에서 가장 값비쌌고 가장 남는 게 많았던 몇 달입니다.

    NFT, 그리고 프론트엔드

    네 번째 회사는 Web3 게임 플랫폼이었습니다. NFT가 한창 붐이던 시기였고, 블록체인 이력 덕에 입사는 어렵지 않았습니다.

    여기서 물고기 육성 게임의 NFT 스마트 컨트랙트와 인게임 재화 토큰을 설계했고, NFT 발행·조회·전송 API와 P2P 거래소 API를 Node.js와 Spring Boot로 만들었습니다. Polygon 위에서 돌아갔습니다.

    솔직히 말하면 이 시기에 처음으로 이 분야를 계속해야 하나 고민했습니다. 팀에서 블록체인을 아는 사람이 거의 없었고, 저 역시 잘 안다고 말할 수 있는 수준이 아니었습니다. 요구사항이 불명확한 상태로 무언가를 만들어내야 하는 날이 많았습니다.

    1년쯤 지났을 때 회사가 새 플랫폼을 준비하면서 React를 해보지 않겠냐고 물었습니다. 받아들였습니다. 사실 선택지가 많지 않기도 했습니다.

    이때 처음으로 사수가 있었습니다. 8년 개발하면서 저를 옆에서 봐주는 사람이 있었던 건 이때가 유일합니다. React와 Next.js를 그분과 함께 배웠고, 커머스 프론트엔드를 만들었습니다.

    의외로 잘 맞았습니다. 화면이 바로 반응하고, 만든 걸 사람들이 곧바로 쓴다는 감각이 좋았습니다. 블록체인에서는 못 느꼈던 종류의 즐거움이었습니다.

    회사는 이후 문을 닫았습니다.

    프론트엔드를 혼자 맡았던 1년 4개월

    다섯 번째 회사에는 제가 먼저 연락했습니다. 이전 회사에서 함께 일했던 분이 창업을 했다는 걸 구직 사이트에서 봤고, 직접 메일을 보냈습니다.

    여기서 1년 4개월동안 Web3 프론트엔드와 크리에이터 플랫폼을 혼자 만들었습니다. 디자이너도 기획자도 사수도 없었습니다.

    • Web3 게임·NFT 프론트엔드를 React / Vite / TypeScript로 신규 구축
    • MetaMask, Reown AppKit 지갑 연동
    • Polygon 네트워크 연동, 토큰 잔액 조회와 결제 처리
    • Unity 게임 iframe 연동, NFT 목록·상세·판매 등록
    • 크리에이터 플랫폼: 대시보드, 마이페이지, 커뮤니티, 쿠폰 스토어까지 4개 도메인 20여 개 페이지

    이 기간의 진짜 이야기는 AI였습니다. 기존 React/Next.js 코드베이스를 AI 도구로 분석해 구조를 파악하고, 화면을 만들고, 고치고, 다듬었습니다. 물어볼 사람이 없는 환경에서 AI는 실질적인 동료였습니다.

    동시에, 나중에 돌아보니 대가도 있었습니다. 빠르게 만들어지는 만큼 “왜 이렇게 되는가”를 건너뛰기 쉬웠습니다. 결과물은 나왔지만 제 안에 남은 것이 그만큼은 아니었다는 걸, 일을 쉬면서 알았습니다.


    지금 하고 있는 것

    지금은 기초를 다시 쌓고 있습니다.

    구체적으로는 자동완성과 AI 에이전트를 끈 상태에서 코드를 씁니다. Promise를 직접 구현해보고, useState를 훅 배열로 만들어보고, 스토리지 슬롯을 손으로 계산해봅니다. 이미 아는 것을 다시 하는 게 아니라, 안다고 믿었던 것을 확인하는 작업입니다.

    병행해서 그동안 벌어진 변화를 따라잡고 있습니다.

    • 2018년에 쓴 Web3.js와 Truffle은 지금 둘 다 지원이 끝났습니다. viem과 Foundry로 옮기는 중입니다
    • 2022년에 짠 OpenZeppelin v4 컨트랙트는 v5에서 컴파일조차 되지 않습니다. 마이그레이션하며 무엇이 왜 바뀌었는지 기록하고 있습니다
    • 이더리움은 The Merge 이후 사실상 다른 체인이 됐습니다. PoS, EIP-4844, 계정 추상화를 다시 공부하고 있습니다
    • 테스트를 제대로 배우고 있습니다. 이건 제 이력에서 가장 큰 공백이었습니다

    이 블로그에는 그 과정을 씁니다. 잘 아는 걸 정리하는 글보다, 몰랐다가 알게 된 것을 주로 쓰려고 합니다.


    블록체인에 대한 제 생각

    솔직하게 쓰겠습니다.

    8년 중 대부분을 이 분야에서 보냈습니다. 그 사이 시장은 두 번의 큰 사이클을 지났고, 제가 만든 것 중 지금도 살아 있는 서비스는 많지 않습니다. 한때는 그만둘까 오래 고민했습니다.

    그럼에도 남은 이유는, 이 분야가 저에게 가르쳐준 것이 명확하기 때문입니다.

    배포하면 고칠 수 없는 코드를 짜는 일. 되돌릴 수 없는 상태 전이를 설계하는 일. 누구나 내 코드를 읽고 공격할 수 있다는 전제로 만드는 일. 실패한 트랜잭션을 사용자에게 어떻게 설명할지 고민하는 일.

    이건 어느 도메인에 가도 쓸모 있는 감각이라고 생각합니다. 제가 프론트엔드를 하면서도 “이 요청이 두 번 실행되면?”을 먼저 묻게 된 건 여기서 온 습관입니다.

    지금 시장을 과장할 생각은 없습니다. 투기 사이클은 지나갔고, 남은 건 게임 아이템, 티켓, 자격증명처럼 좁고 구체적인 용도들입니다. 저는 그 좁아진 자리에서 제대로 만드는 쪽에 관심이 있습니다.


    일하는 방식

    안 해주면 내가 합니다. 디자이너 없이 화면을 만들었고, 기획자 없이 요구사항을 정리했고, 사수 없이 코드베이스를 파악했습니다. 좋은 환경에서만 일해본 적이 별로 없어서 생긴 습관입니다.

    AI는 속도를 올리는 도구지 이해를 대신하는 도구가 아닙니다. 1년 넘게 그렇게 써보고 나서 얻은 결론입니다. 지금은 생성된 코드를 한 줄씩 설명할 수 있을 때만 다음으로 넘어갑니다.

    모르는 걸 모른다고 말합니다. 이건 시험지 앞에서 배웠습니다. 아는 척하고 넘어간 것들은 결국 경력 부채로 쌓입니다.

    넓게 다녀본 게 강점이 되게 만들고 싶습니다. 안드로이드, 스마트 컨트랙트, 백엔드 API, 프론트엔드를 다 해봤습니다. 각각을 세계 최고 수준으로 하지는 못하지만, 어디서 문제가 생기는지 감이 옵니다. 컨트랙트 이벤트를 설계할 때 인덱서가 뭘 필요로 하는지 알고, 프론트를 만들 때 체인 파이널리티가 UI에 어떤 의미인지 압니다.


    개인적인 것들

    • 자동차 정비 자격증이 세 개 있지만 운전면허는 없습니다
    • 내향적인 편입니다. 여러 팀과 어울리는 일이 오래 어려웠고, 지금도 잘한다고 말하긴 어렵습니다. 대신 글로 정리해서 남기는 걸 잘합니다. 이 블로그도 그 연장입니다
    • 공부하다 울어본 적이 한 번 있습니다
    • 커리어가 한 번도 계획대로 간 적이 없습니다. 매번 우연히 맡은 일이 다음 챕터가 됐습니다. 이제는 그게 나쁘지만은 않다고 생각합니다

    지금 찾고 있는 것

    웹 프론트엔드를 중심으로, 백엔드와 온체인까지 손이 닿는 자리를 찾고 있습니다.

    작은 팀이어도 괜찮습니다. 오히려 한 사람이 여러 층을 봐야 하는 환경이 제가 해온 방식과 맞습니다.