목록으로 돌아가기
20242024-05-158분 읽기

2024년, 직접 만들어보기로 했다

2024년, 직접 만들어보기로 했다

에피소드 1. 시작

2021년 어느 날, 며칠 동안 기다렸던 대출자 명단 데이터가 드디어 나왔다.

원천 데이터를 추출해야 할 땐 IT 담당자에게 요청을 해야 한다. 그럼 그리 급하지 않거나 복잡한 조건을 가진 데이터는 족히 3~4일은 기다려야 한다.

이번 추출 데이터는 매 분기 뽑는 데이터에서 조건 두어 개가 달라진 무난한 건이었다.

그런데, 달랐다.

 

내가 예상한 수치와도 달랐고 수기로 계산한 엑셀과도 달랐다. 늘 별도로 첨부해주던 쿼리문도 달랐는데 이건 비개발자이고 까막눈인 내가 봐도 다른 게 보였다.   그래서 물어봤다.

"이거 수치가 좀 다른 것 같아요. 한 번만 더 봐주세요."

"음.. 크로스체크 한거고. 이게 맞아요. 설명해줘도 이해하기 힘들거고 하나하나 알려줄 순 없으니 그냥 이거 쓰시면 됩니다."  

아.. 도저히 납득이 되지 않았다.

그래서 공부했다. 이땐 AI가 대중적이지 않아서 구글링 열심히 하면서 뜯어봤다.

처음에 주석 하나 다른 걸 발견하고 한 분을 찾아가 여쭤봤더니 이건 다른 조건에 종속된 조건이라 주석 처리해도 문제없다고 한다. 오 하나 배웠다, 생각하고 다시 다른 분에게 다른 걸 물어봤다.

한 분에게 계속 물어보면 실례니까.

그랬더니 어? 하시더라. "이 조건은 빠지면 안 되는데.."

 

내막은 그러했다.

현업에서 요청할 때 언급했던 내용이고 모두가 인지했지만 자료추출 요청 문서에는 그 조건이 명확하게 적혀 있지 않았다. 두루뭉술하게 적혀 있었을 뿐..

  이 에피소드에서부터 시작되었다. 직접 해야겠다고 생각한 계기다.

그 뒤로 나는 데이터를 요청할 때 조금 달라졌다.

이전에는 결과 파일만 받으면 된다고 생각했다. 내가 필요한 것은 명단이고, 숫자이고, 최종 산출물이었으니까.

그런데 그 일을 겪고 나니 결과값만 보는 것으로는 부족했다. 어떤 조건으로 뽑았는지, 어떤 기준이 빠졌는지, 요청서의 모호한 표현이 쿼리에서는 어떻게 해석됐는지까지 봐야 했다.

개발자가 틀렸고 현업이 맞았다는 이야기를 하려는 것은 아니다.

개발자도 사람이다. 매일 수많은 요청을 받고, 그중 상당수는 애초에 요구사항부터 흐릿하다. 현업에서 "이 정도면 알겠지" 하고 넘긴 표현이 개발 쪽에서는 전혀 다른 의미로 읽힐 수 있다.

문제는 그 차이가 나중에 숫자 하나, 대상자 한 명, 의사결정 하나로 돌아온다는 점이다.

실무자가 원하는 것은 늘 A에 가깝다. 하지만 여러 제약조건과 해석을 거치고 나면 결과물은 B가 되어 돌아온다.

B가 나올 수밖에 없는 이유를 들으면 이해가 안 되는 것은 아니다. 다만 가끔은 생각한다.

내가 구조를 조금만 더 알았다면, 처음부터 A는 아니더라도 A-1 정도는 만들 수 있지 않았을까. 적어도 B를 받아든 뒤에 "그냥 이 수치 쓰시면 됩니다"라는 말을 그대로 삼키지는 않을 수 있지 않았을까.

그래서 언젠가 파이썬을 배워야겠다고 생각했다.

거창하게 개발자가 되고 싶었던 것은 아니다. 내 일을 내가 조금 더 정확하게 확인하고 싶었다. 누군가 만들어준 결과물을 불신하기 위해서가 아니라, 같이 검산할 수 있는 사람이 되고 싶었다.

에피소드 2. 공부 말고 그냥 일단 만들기

그 마음으로 파이썬을 몇 번이나 붙잡았다.

책도 보고, 강의도 보고, 변수와 반복문과 함수가 무엇인지도 익혔다. 그런데 늘 거기서 멈췄다. 개념을 모르는 것은 아니었다.

문제는 그 개념들이 내 일과 잘 연결되지 않았다는 데 있었다. 반복문이 무엇인지는 알겠는데, 그래서 내 업무의 어떤 반복을 줄일 수 있는지는 보이지 않았다. 함수가 무엇인지는 알겠는데, 내가 매일 눌러야 하는 버튼과는 아직 거리가 멀었다.

공부를 위한 공부는 오래가지 않았다.

퇴근 후에 문법을 조금 보고, 예제를 따라 치고, 며칠 지나면 다시 잊어버렸다. 비개발자에게 프로그래밍은 교과서 순서대로 들어오지 않는다.

필요가 먼저 오고, 그다음에 문법이 따라와야 한다. 그런데 당시의 나는 그 순서를 거꾸로 밟고 있었다. 언젠가 쓸모가 있겠지 생각하며 개념을 쌓았지만, 정작 당장 해결하고 싶은 문제 앞에서는 손이 멈췄다.

 

그러다 챗GPT를 알게 됐다.

지금처럼 바이브코딩이라는 말이 있던 시절도 아니었다. 그냥 챗GPT라는 것이 나왔고, 질문을 하면 파이썬 코드도 짜준다는 사실을 알게 됐다.

처음에는 공부 도구라고 생각했다. GPT가 짜준 코드를 하나하나 베껴 쓰고, 실행해보고, 모르는 부분은 다시 찾아보면 파이썬을 배울 수 있겠다고 생각했다.

그런데 몇 번 해보니 생각이 조금 바뀌었다.

모든 줄을 완전히 이해한 다음에야 무언가를 만들 수 있는 것은 아니었다. 일단 돌아가는 코드를 만들고, 그다음에 왜 돌아가는지 따라가도 됐다.

처음에는 코드를 공부하려고 베껴 썼다. 어느 순간부터는 결과물을 만들기 위해 베껴 쓰고 있었다.

이 변화가 내게는 컸다.

개발을 배운다는 말은 늘 먼 이야기처럼 느껴졌다. 하지만 내 업무에서 반복되는 작은 문제를 하나 정하고, GPT에게 묻고, 코드를 실행해보고, 에러가 나면 다시 고치는 과정은 생각보다 가까웠다.

완벽한 이해는 아니었다. 그래도 적어도 문 앞에 서 있기만 하던 상태에서는 벗어났다. 문고리를 잡은 느낌이었다.

에피소드 3. 첫 결과물

처음 만든 것은 정말 단순했다.

법원 나의 사건 검색 사이트에 들어가서, 내가 매번 누르던 버튼과 입력 과정을 자동으로 처리하는 프로그램이었다. 셀레니움이라는 라이브러리를 썼다.

지금 돌아보면 거창한 프로그램이라고 부르기도 민망하다. 사이트를 열고, 정해진 위치를 찾고, 값을 넣고, 버튼을 누르는 정도였다.

 

하지만 내게는 그 정도면 충분했다.

매일 같은 사이트에 들어가 같은 순서로 클릭하고 입력하는 일은 사소해 보이지만, 반복되면 은근히 사람을 지치게 한다. 한 번이면 별일이 아니다. 열 번이면 귀찮고, 백 번이면 실수가 난다.

그 일을 프로그램 버튼 하나로 줄일 수 있다는 사실이 좋았다. 기능은 작았지만, 효용은 분명했다.

그때 처음 알았다.

자동화는 대단한 기술에서 시작하지 않는다. 내가 매일 겪는 작은 마찰에서 시작한다. 남들이 보기에는 별것 아닌 클릭 몇 번이라도, 그 일을 매번 하는 사람에게는 충분히 줄일 만한 비용이다.

실무의 피로는 늘 큰 사건으로만 오지 않는다. 자잘한 반복이 쌓이다가 어느 순간 하루의 집중력을 갉아먹는다.

 

물론 처음부터 매끄럽지는 않았다.

셀레니움이 브라우저를 제대로 못 찾기도 했고, 버튼 위치가 바뀌면 코드가 멈췄다. 에러 메시지는 여전히 낯설었다. GPT가 알려준 코드를 그대로 붙였는데도 내 컴퓨터에서는 안 되는 일이 많았다.

그때마다 다시 물어보고, 다시 고치고, 다시 실행했다. 이해하고 고친다기보다, 부딪히면서 맞춰가는 쪽에 가까웠다.

그래도 프로그램이 한 번 제대로 움직였을 때의 감각은 선명했다.

화면이 열리고, 입력칸이 채워지고, 버튼이 눌렸다. 내가 하던 일을 컴퓨터가 대신하고 있었다.

그 순간 무언가 거대한 가능성을 본 것은 아니다. 오히려 생각은 단순했다. 아, 이 정도는 내가 만들 수 있구나. 그리고 이 정도만 만들어도 내 일은 조금 편해지는구나.   그 작은 성공이 중요했다.

파이썬 문법을 완벽하게 이해한 날이 아니었다. 개발 환경을 깔끔하게 세팅한 날도 아니었다. 다만 내 업무의 반복 하나를 골라, AI의 도움을 받아, 어쨌든 돌아가는 물건으로 만든 날이었다.

그때부터 공부의 기준이 조금 바뀌었다. 무엇을 배웠느냐보다, 무엇을 줄였느냐가 더 중요해졌다.

에피소드 4. 손잡이

돌이켜보면 AI가 나에게 준 것은 개발 실력이 아니었다.

챗GPT를 쓴다고 해서 갑자기 개발자가 되는 것은 아니다. 에러가 나면 여전히 막히고, 라이브러리 이름 하나만 바뀌어도 헤매고, 내가 붙여넣은 코드가 정확히 어떤 원리로 움직이는지 모를 때도 많았다.

그 사실은 지금도 크게 다르지 않다.

 

다만 달라진 것이 있다면, 예전에는 닫힌 문처럼 보이던 것들에 손잡이가 생겼다는 점이다.

SQL을 모를 때 주석 기호 하나가 벽처럼 보였던 것처럼, 파이썬도 처음에는 온통 벽이었다. 그런데 AI에게 물어보고, 코드를 받고, 실행해보고, 실패한 지점을 다시 묻는 과정이 생기자 벽은 조금씩 문처럼 보이기 시작했다.

중요한 것은 내가 모든 것을 이해하게 되었다는 사실이 아니었다.

오히려 반대에 가까웠다. 모르는 것이 많다는 것을 더 자주 확인했다. 하지만 이제는 모른다는 이유만으로 멈추지는 않게 됐다.

최소한 물어볼 수 있었고, 시도해볼 수 있었고, 안 되면 어디서 막혔는지 다시 들여다볼 수 있었다.   2024년의 첫걸음은 그래서 거창한 출발이 아니었다.

새로운 기술을 멋지게 배운 해도 아니었고, 개발자로 변신한 해도 아니었다. 실무자로서 오래 품고 있던 답답함을, 처음으로 내 손으로 조금 움직여본 해에 가까웠다.

내가 원하는 A와 돌아오는 B 사이에서, A-1 정도는 직접 만들어볼 수 있지 않을까 생각하기 시작한 해였다.

 

그 뒤로 내가 만든 것들은 대부분 그런 식이었다.

대단한 서비스라기보다, 내 주변의 반복을 줄이는 작은 도구들이었다. 크롤링 프로그램도 그 연장선에 있었다. 매번 열어보고, 복사하고, 정리하던 일을 컴퓨터에게 시켜보자는 생각.

지금 보면 투박했지만, 그 투박함 덕분에 다음 것을 만들 수 있었다.

어쩌면 내가 2024년에 배운 것은 파이썬이 아니었는지도 모른다.

문제 앞에서 물러서지 않는 방식, 모르는 것을 모른 채로 붙잡고도 일단 한 걸음 나아가는 방식, 그리고 실무자의 감각을 코드라는 형태로 조금씩 바꿔보는 방식.   그게 내 첫 시작이었다.