마지막으로 개발 관련 글을 쓴 게 언제인지 모르겠네요. 회사일이 많이 바빴고, 개인적인 일로도 힘든 사건들이 끊이지 않았습니다. 채용사이트에 이력서를 업데이트하다 보니 벌서 3년차라고 하더군요. 3년차. 슬슬 길을 정해야 할 시점이 된 것 같습니다.
얼마 전 사장님이 절 부르시더군요. 사장님 화법으로 장황하게 이야기했지만 요약하자면 결국 이거였습니다.
지금같이 개발을 하는 건 '코더' 수준이지, '프로그래머'라고 할 수 없다.
그 놈의 코더 소리.
이제 리액트를 그만 두겠다고 다짐한 순간이었습니다.
저는 개발자들이 싫어할만한 요소를 다 갖추고 있습니다.
국비지원으로 학원에서 딱 1달 파이썬을 배웠고, 비전공자로 개발에 대한 기초 지식은 하나도 없고, 리액트는 유튜브와 노마드코더 그리고 리액트 책 한 권으로 배웠고, 나이는 많고 성별은 여자니까요.
1년차 때 유튜브에서 개발자 채널을 닥치는대로 보다가 그만 둔 이유는 '국비지원으로 배운 쓸모없는 프론트엔드 신입'에 대한 비난이 끊임없이 나왔기 때문입니다. 물론 그게 저를 향한 직접적인 공격은 아니었지만 저와의 공통점이 있기 때문에 무시하기 힘들었습니다. 노력을 해서 이겨내면 된다고 하지만 노력을 할 수 없는 문제도 있죠. SNS와 여기 브런치에서 종종 여자 개발자의 무쓸모 경험담을 보다보면 음, 생각을 그만두죠. 제가 바꿀 수 없는 것을 고민하는 것만큼 제 자신을 괴롭히는 일은 없으니까요.
아무튼 사장님이 저런 이야기를 한 건 무슨 연유였을까요.
웃긴 건 최근 제 코드를 보지 않았지만, 너는 '코더'이다. 라고 이야기할 수 있는 근거는 무엇이었을까요.
저의 무엇을 바꾸고 싶어했는지는 알지만 모르는 척 했습니다. 개발자들이 부딪히는 '벽'을 넘어야한다고 주구장창 '벽'이야기를 하더군요. 이 '벽'을 깨기 위해서는 어느 순간에 코드를 치다보면 시간 가는 줄을 몰라서 밤을 새기도 하고 그런다~ 라떼는 그랬다~ 하면서 실체가 없는 '벽' 이야기를 한 시간 가까이 했네요. 쓰잘데기 없이 말입니다. 그래서 제가 만난 '벽' 이야기를 해 볼까 합니다.
제가 처음 만난 '벽'은 TRUE / FALSE. 즉 0과 1 이었습니다.
코드는 영어로 되어있지만, 결국 컴퓨터는 0과 1입니다. 제가 하고 있는 리액트도 파이썬도 사람이 이해하기 쉽게 만들어 진 문자로 이루어진 언어는 결국엔 0과 1로 변환되어서 컴퓨터에게 전달됩니다. 고급언어는 물론이거니와 완전한 0과 1로 이루어진 명령이 아니라면 결국 개발 언어는 인간이 합의하에 정한 언어규칙입니다. 영어라는 언어로 포장되어 있지만 결국엔 0과 1로 명령을 내려야 한다는 것을 깨닫고 조금 더 많은 기능을 개발할 수 있었습니다.
그 다음에 만난 '벽'은 상태값이었습니다.
리액트는 굉장히 무식한 방법으로 작동됩니다. 상태값이 바뀌면 모든 것을 다시 렌더링 해 옵니다. 이 덕분에 커뮤니티나 SNS를 만들기에는 편리할 수 있겠지만, 제가 회사에서 만들던 것은 완전 다른 것이었습니다. 리액트 하나만으로도 상태값을 관리하기 힘든데 여기다 graphQL을 붙인다? 환상의 짝꿍이 지옥에서 올라온 케르베로스가 되는 순간이었습니다. 리액트가 렌더링 될 때마다 graphQL은 쿼리를 다시 호출하거든요. 리액트에서 지정해 둔 상태값을 제어하면 graphQL 쪽에서 문제가 터지고, 쿼리를 잡으면 리액트 상태값이 꼬여서 화면이 하얗게 불타버리고. 정말 얄미운 녀석들이었어요. 이 두 녀석의 상태값을 제어할 수 있게 된 순간 제가 만든 프로젝트는 조금 더 완성도가 올라갔습니다.
세 번째 만난 '벽'은 구조였습니다.
컴퓨터에게 명령을 내리기 위해 합의된 개발언어를 사용하는데 이게 회사마다 개발팀마다 그리고 그 팀 내에서 개발문화를 정하는 사람에 따라서 프로젝트의 구조가 달라집니다. 학교 다닐 때 선생님마다 요구하는 숙제 제출 방법이 달랐죠? 그런 겁니다. 내용은 바뀌지 않는데 권력자가 원하는 구조가 있어요. 그걸 맞추지 않으면 아무리 내용이 괜찮아도 좋은 점수를 받기 힘들잖아요. 리액트를 혼자서 배우다보니 다른 사람의 코드를 참고 하고 싶어서 1년 차 때 깃헙을 유랑하고 다녔는데 함수형 코드때문에 코드를 읽을 수조차 없었습니다. 저는 개인적으로 이런 코드는 '낙지 탕탕이'라고 부르고 있어요. 탕탕이처럼 코드를 너무 잘게 쪼개놔서 파일만 열어봤을 때는 도저히 어떻게 작동하는지 알 수가 없거든요. 인고의 시간이 지난 지금은 깃헙에서 탕탕이 코드를 봐도 흐름을 이해할 수 있게 되었습니다.
저걸 이해하는 그 때에는 그저 꾸역꾸역 물 없이 고구마 먹는 기분으로 회사를 다녔는데 지금 생각해보면 저 경험들이 '벽'이라고 이야기하던 것이 아닐까 싶었습니다. 비록 아직 '코더'소리를 듣고 있는 처지이지만 2년 동안 최선을 다해서 프로그램을 만들었고 회사 내에서 십 여명이 넘는 분들이 그 프로그램을 사용하면서 유지 보수를 하면서 나름의 재미도 있었어요. 괜찮았던 시간이었지만 이제 그만두려고 합니다.
사실 그만두는 데 남자 개발자 때문에 힘든 일이 있어서 짧게 토로하려고 합니다.
얼마 전 들어온 이 남자 개발자는 제 코드를 보더니 헛웃음 터뜨리고서는 줄 수 부터 세더라구요. 한 파일에 이렇게 줄 수가 많으면 안 된대요. 700이 넘으면 안된다고 하는데 700은 안 넘었거든요. 스크롤 쭉 내려보더니 다른 트집을 잡더라구요.
그 때 한창 리뉴얼을 준비하고 있어서 작업하려고 기획논의를 하던 중인데 개발 시간이 얼마나 걸리겠냐고 하길래 2주 이야기했습니다. 역시나 비웃으면서 '그게 평일 기준 맞아요? 개발자들이 그렇게 이야기하면 거기서 1.5배를 더 해야되요.' 라고 하더군요. 정작 그 분은 2일이면 된다던 작업을 2주 잡아먹으셨어요.
마지막으로 회사 내에 기존에 합의된 정의와 규칙이 있는데 이걸 설명하려고 하면 그건 자기한테 필요없는 이야기니까 하지 말라고 말을 끊어먹네요. 그리고선 나중에 문제가 생기면 저는 또 그 옆에 불려가서 같이 코딩하고 있어야 했어요. 지난한 시간이었어요.
그래도 저 리액트 열심히 했어요.
redux로 회원가입 하는 것도 구현하고, 장바구니랑 결제하는 시스템 연동도 테스트하고, 여러 SNS 로그인 API도 연결하고, 이제 혼자서 어지간한 건 만들 수 있을 것 같아서 이것저것 기획도 짜고 있어요.
꽤 괜찮은 경험이었습니다.
이상입니다.