팩션 - 개발자가 되고 싶은 친구에게
2022.11.09.
친구에게 전화가 왔다. 비슷한 시기에 사회생활을 시작한 고등학교 동창이다.
최근 개발 외주를 관리하면서 직접 개발을 할 수 있으면 좋겠다는 생각이 들어, 개발자가 되려면 어떻게 하면 좋을지 궁금해 연락했다고 했다. 연봉도 높고 처우도 좋은 직업이라며 주변에서도 추천했다고 했다.
개발자가 좋은 점과 힘든 점
"맞아. 연봉 높은 편이고 처우도 많이 좋아졌어. 좋은 문화를 가진 회사를 만날 가능성도 높은 편이지. 자율 출퇴근, 재택근무를 보장하고 수평적인 문화를 지향하는 곳도 많고."
친구가 뭔갈 받아 적으려는 듯한 소리가 들렸다.
"무엇보다 직업 자체에 대한 만족도가 높아. 무언갈 만들어낼 수 있다는 게 정말 매력적이거든. 내가 만든 걸로 다른 사람에게 편의를 줄 수 있다는 점이 큰 보람을 느끼게 해 줘."
좋은 이야기만 해줄 필요는 없을 것 같아 덧붙였다.
"힘든 점도 있지. 개발자처럼 평생 공부해야 하는 직군도 잘 없지 않나 싶어. 이미 알고 있는 기술이 새로운 걸로 바뀌는 기간이 짧은 편이거든. 그래서 알고 있던 지식의 가치가 빠르게 떨어져. 개발자로서 돈 받고 일하려면 끊임없이 공부해야 해."
타이핑하는 소리가 잠깐 들리더니 질문이 돌아왔다.
개발자는 수학을 잘해야 할까?
"오케이, 그럼 개발자 되려면 수학 잘해야 하나?"
단골 질문이다.
"수학을 잘할 필요는 없는데, 수학적 사고는 필요해. 우리가 학교에서 배운 수학은 시험을 치기 위한 수학이었잖아. 공식을 암기하고 문제를 읽고 공식대로 푸는 수학. 우리가 배워 온 수학을 잘할 필요는 없어."
"그럼 수학적 사고는 뭔데?"
"나는 수학이 숫자와 기호로 논리를 표현하는 학문이라고 생각하거든? 프로그래밍도 비슷해. 숫자 대신 알파벳으로 논리를 표현해. 어떤 점에선 글쓰기랑 비슷하지. 그래서 나는 알파벳이 됐건 숫자가 됐건 한글이 됐건 논리적으로 사고하고 정리하는 수학적 사고만 할 수 있으면 충분하다고 생각해."
"음... 전부 이해되진 않지만 일단 수학을 잘할 필요는 없다는 희망적인 메시지 정도로 이해할게."
"그럼 영어는? 프로그래밍이 알파벳으로 논리를 표현하는 거면 영어는 잘해야 하는 건가? 개발자들 일하는 화면 보면 전부 다 영어던데"
"영어는 잘하면 좋지. 처음 프로그래밍 언어를 배울 땐 영어가 중요한가 싶은데 나중에 변수 이름 정할 땐 어휘력이 좋으면 편해. 영어로 된 문서를 읽을 일도 많아서 독해 능력도 중요하고. 문서를 잘 읽는 사람이 공부도 빠르니까."
"오~ 문과생에게 희망을 주는구먼."
생각해보면 수학보다 영어가 중요하다고 느끼는 순간이 많았다. 번역 도구가 좋아졌다곤 하지만 직접 읽고 이해할 수 있는 것과는 여전히 차이가 있다.
개발자가 하는 일
"근데 개발자는 구체적으로 어떤 일을 해? 왜 그렇게 많은 사람이 필요한 거야? 회사에선 개발자가 없어서 난리잖아."
솔직히 말해 나 역시 저마다 다른 개발자가 어떤 일을 하는지 정확하게 모르지만, 아는 선에서 최대한 설명해보겠다는 단서를 남기고 운을 뗐다.
"대중적으론 그냥 '개발자'라고 부르지만 다른 직군들처럼 개발자도 직무가 다양해."
다시 받아 적을 준비를 하는 소리가 들렸다.
"유저가 보는 화면을 만드는 클라이언트 엔지니어, 데이터를 읽고 쓰는 로직을 구현하는 백엔드 엔지니어, 인프라를 구축하고 정비하는 DevOps 엔지니어, 데이터와 인프라의 안전을 책임지는 보안 엔지니어, 데이터를 빠르고 정확하게 분석하기 위해 고심하는 데이터 엔지니어, 컴퓨터가 잘 푸는 문제를 AI로 구현하는 ML 엔지니어... 등 종류가 많아."
친구가 타이핑하는 소리를 듣고 있자니 말이 너무 빨랐나 싶어 템포를 늦추며 말을 이었다.
"개발자 채용에 집중하는 DevRel, 기술 문서를 작성하는 테크니컬 라이터처럼 직접 개발을 하지 않고 개발 관련 일을 하는 사람들도 있어. 개발하던 사람이 다른 일을 하기도 하고 방금 말했던 '~엔지니어'로 끝나는 사람 중에도 어떤 경우엔 서로 일을 바꿔서 하기도 해.
"너무 다른 세상 이야기라 좀 어렵네. 요약하면 '고양이 종류가 여러 가지인 것처럼 개발자도 여러 종류가 있다.' 그런 거지?"
"뭐 비슷하지."
고양이라니. 너무 단순화했지만, 개발자라는 직군에 다양한 직무가 있다는 걸 이해하는 데는 적절한 비유라는 생각이 들었다.
어떤 개발자를 목표로 할까?
"그럼 나는 어떤 고양이가 되면 좋을까?"
"사람마다 성향이 달라서 내가 골라주기는 어려워. 뭐라도 하나 만들면서 언어를 하나 익히고 만드는 과정에서 재밌었던 부분을 골라서 깊게 공부하는 방식으로 직접 찾아야 해."
"언어? 프로그래밍 언어 말하는 거네? 뭐부터 배우면 좋아?"
나는 C 언어부터 배웠지만, 친구에게 추천하긴 어려웠다. 처음부터 C를 배우라고 한다면 도무지 어디에 써먹을 수 있는지 납득하지 못해 금방 포기하고 말 거다.
C에 비해 쉬우면서 실용적인 언어를 추천해야 했다.
"JavaScript(자바스크립트)를 추천해. 브라우저에서 바로 사용할 수 있는 언어거든. 웹 페이지에는 늘 자바스크립트가 사용돼. 참고할 만한 자료도 많아서 시작할 때 배우기 좋은 언어야."
"Java(자바)? 들어본 적 있어. 웹 페이지 같은 거 만들 때 쓰는 언어지? 좋아. 자바부터 시작하자."
자바와 자바스크립트가 다른 언어라는 걸 설명하고 싶었지만, 나중에 따로 설명해줘야겠다고 생각했다.
어떻게 시작하면 좋을까?
"어떻게 시작하면 될까? 책을 살까? 추천해주고 싶은 책 있어?"
"개발자로 구직하고 싶은 거라면, 혼자 책으로 공부하는 건 권하고 싶지 않아."
"그래? 그럼, 온라인 강의를 들어야 하나?"
다시 키보드를 두드리려고 채비하는 소리가 들렸다.
"책이 아무리 쉬워도 기본 지식 없이 혼자서 보면 이해가 안 될 거야. 말한 것처럼 온라인 강의가 나아. 따라 하고 만들면서 배워야 익혀지거든. 코드를 따라 치고 다시 읽으면서 이해해보는 과정을 반복해야 해."
"그럼 자바 온라인 강의를 찾아보면 되겠네."
"응. 일단 그렇게 시작하고 프로그래밍이 재밌어지면 이것저것 만들면서 실력이 늘 거야. 근데 솔직히 말해서 개발자로 전향하려면 부트캠프 같은 걸 알아보는 게 나아."
"부트캠프가 뭐야?"
"개발자 양성 과정이라고 해야 할까. 프로그래밍을 익히고 실무를 할 수 있는 개발자로 키워내는 속성 과정이야. 3개월에서 6개월 정도 전일제로 운영되는 경우가 많아."
"전일제? 퇴사하고 다녀야 하는 거야?"
"응. 제대로 하려면 그래야 하더라. 주변에 개발자로 전향한 분들 보면 대부분 하던 일 관두고 부트캠프에서 배워서 개발자로 다시 구직하는 과정을 거치더라고."
반드시 부트캠프일 필요는 없지만, 그 정도의 시간과 노력은 필요하다. 단지, 그만한 노력을 들이기엔 부트캠프가 가장 쉬운 방법이라고 생각했다.
"주변에 부트캠프 출신인 개발자가 많아?"
"응. 제법 있어. 내 주위엔 다섯 명 중의 한 명 정도는 꼭 있는 거 같아. 전공자들보다 잘하는 경우도 많고."
"그렇구나. 뭔가 해봐야겠다는 마음이 드는 것 같기도 하고 살짝 '내 길이 아닐지도?' 하는 생각도 들고 그렇네. 조금 더 알아보고 또 연락할게. 오늘 진짜 고마워."
불편한 감정
다시 연락하자 인사하고 전화를 끊었다.
이내 불편한 감정이 들었다.
제대로 된 이야기를 해준 게 맞을까. 내 경험만으로 편향된 정보를 준 것은 아닐까. 내 조언이 친구를 잘못된 방향으로 이끄는 게 아닐까. 내가 뭐라고 그런 말을 했을까.
잠들기 전에 부디 내 말만 믿지 말고 다른 사람의 말도 듣고 지혜롭게 결정했으면 좋겠다는 문자를 남겨 불편한 감정을 달랬다.
물론, 자바와 자바스크립트가 다른 언어라는 사실도 잊지 않고 알려주었다.