brunch

You can make anything
by writing

C.S.Lewis

by 리암 Nov 05. 2022

비전공자 개발자의 공채 도전기

입사 후 3개월

인트로


 안녕하세요. 저는 2022년 카카오 블라인드 채용에 합격하여 현재 브런치 iOS 개발자로 근무하고 있습니다. 저는 본 전공이 상경계열이라 베이스도 많이 부족했고 주변에 조언을 구할 수 있는 선배들도 없었습니다. 이 때문에 개발자로 진로를 변경하고 취업 준비를 하는 과정에서 많은 답답함과 불안함을 느꼈습니다. 이 글이 저와 같이 비전공자이면서 개발자를 목표로 하는 사람들에게 도움이 됐으면 하는 바람으로 적어봅니다. 방법론적인 이야기가 일부 포함되지만, 제 주관적인 이야기일 뿐이며 절대적인 정답은 존재하지 않는다고 생각합니다. 다만 과정들을 부풀리거나 숨기는 일 없이 사실만을 이야기하겠습니다.


왜 개발자가 되려고 하시나요?
"프로그래밍은 지루하고 반복적인 작업의 연속이다."
"컴퓨터 공학과에 입학하느니 대학에 가지 않겠다."
"평생 재미없는 코딩을 하면서 보낼 수 없다."

이는 내가 실제로 가지고 있던 생각이다. 물론 나는 코딩에  '코'도 모르는 코린이었고 개발자가 될 것이라고는 상상하지도 못했다. 군 복무 중에 읽은 스티브 잡스 책 한 권이 내 삶의 방향을 바꿨다. 제품에 철학을 담아 사람들의 마음을 움직인 그의 일대기는 내 가슴을 뛰게 했다.  '세상에 긍정적인 영향을 주는 개발자가 되고 싶다'라는 꿈이 생겼다. 참 단순한 계기였고 뻔하고 진부한 이유이지만 나한테는 포기하지 않고 계속 도전할 수 있게 해 준 큰 원동력이다.


 여러분은 왜 개발자가 되려고 하시나요? 먹고 사려고 하는 일에 이유를 붙이는 것은 항상 어려운 것 같습니다. 만약 아직까지 적절한 대답이 떠오르지 않는다면 한 번쯤은 시간 내어 정의하는 것을 권장드리고 싶습니다. 이러한 고민이 필요한 이유는 크게 두 가지입니다. 첫째, 이는 비전공자들에게 면접에서 빈출 되는 소재입니다. "진로를 왜 변경했나요?", "개발자를 선택한 것에 후회한 적은 없나요?", "어떤 개발자가 되고 싶은가요?" 등 다양한 변형 질문에 준비할 수 있습니다. 물론 면접 전에는 답변들을 더 포장하여 준비해야 합니다. 하지만 본인의 이유를 미리 정리해둔다면 말에 진정성이 더해진다고 생각합니다. 둘째, 포기하고 싶은 순간에 다시 일어날 수 있는 힘이 됩니다. 비전공자가 개발자로 첫 발을 내딛는 과정은 절대 쉽지 않습니다. 저는 취업 준비를 하면서 포기하고 싶을 때가 정말 많았습니다. 그럴 때마다 "왜 개발자가 되고 싶은가?"를 되뇌며 한 발자국씩 더 나아갈 수 있었습니다.


잘하고 있다는 착각
2020년 12월, 난 뭔가 잘못됐다는 것을 느꼈다.

"올해 자격증도 4개 취득하고 토익도 봤어. 학점도 잘 받아서 졸업할 쯤엔 4점대 넘길 것 같아."

"뭐라고? 팀 프로젝트 해봤냐고?"

"아니 그럴 시간이 어딨어.. 엄청 바쁘다니깐? 이제 해야지"


 저는 2020년 IT 공부를 처음 시작했습니다. 2020년 한 해는 정말 바쁘게 보냈습니다.  OCJP, SQLD, 정보처리기사를 차례로 취득했습니다.  학교에서는 ICT 융합전공 수업을 들으면서 컴퓨터 사이언스에 대한 이해도 높였습니다. 높은 점수는 아니었지만 남는 시간엔 졸업을 위해 토익 점수도 취득했습니다. 학기 중엔 학점 관리가 최우선이었고 방학 때는 자격증 취득이 우선이었습니다. 나름의 단기 목표들을 가지다 보니 2020년 한 해를 잘 보내고 있다는 착각 속에 살았습니다.


 물론 2020년에 한 일련의 활동들이 도움이 전혀 안 됐다고 생각하지는 않습니다. 깊이는 얕았지만 자료구조, 알고리즘, 운영체제, 객체지향 프로그래밍, 데이터베이스 수업을 열심히 들었던 것은 정말 많은 도움이 됐습니다. 다만 자격증을 취득할 시간에 실제 개발과 CS를 더 깊게 공부했으면 어땠을까 라는 아쉬움이 남습니다. 사실 인터넷에 조금만 검색해봐도 공부 방향을 수정할 수 있었을 텐데 당장의 목표 달성에 시야가 너무 좁아져 있었습니다. 비전공자에게 힘든 점 중 하나는 본인이 노력하지 않는 한 얻을 수 있는 정보가 한정적이라는 것입니다. 여러분은 학습 방향성을 끊임없이 점검하고 수정하면서 저와 같은 실수를 하지 않았으면 좋겠습니다.


비전공자의 현실적인 취업 준비

인턴

 개발자가 되겠다는 사람이 4학년이 되어서야 처음 개발을 시작했습니다. 늦었지만 당장 시작하는 것이 중요하다 생각하여 한 달간 안드로이드를 공부하여 교내 연계 인턴에 지원했습니다. 인턴에 지원하기 위해 패스트 캠퍼스 안드로이드 올인원 강의를 수강하고 MVVM, RxJava를 공부하여 아주 간단한 개인 프로젝트에 흉내 냈던 것으로 기억합니다.


 그렇게 안드로이드 개발을 할 줄 알았지만 인턴 출근 첫날에 대표님이 iOS 개발을 할 것을 제안하셨습니다. 지금 돌이켜 생각해보면 이때 iOS를 시작한 것이 저에게는 큰 행운이었던 것 같습니다. 처음엔 기본적인 swift 문법, 스토리보드를 공부하고 더 나아가 아키텍처 패턴, 반응형 프로그래밍을 학습하고 적용해 나갔습니다. 업무가 단순 화면 작업이 주요해서 이렇다 할 프로젝트 산출물은 없었지만 iOS를 처음 공부하면서 학습에 대한 자신감이 붙었습니다. 새로운 기술을 공부할 때 저에게 적합한 방법들을 정립해 나갔습니다.


코딩 테스트

 3월부터 6월까지 4개월 간 인턴이 끝나고 이제 정말 취업을 고민하는 시기가 찾아왔습니다. 코딩 테스트를 한 번도 준비한 적이 없기에 당장 코딩 테스트 준비부터 시작했습니다. 저는 2개월 간 '이것이 취업을 위한 코딩 테스트다' 책을 2 회독하고 백준 삼성 기출문제, 프로그래머스 카카오 문제들을 풀었습니다. 이후에는 코딩 테스트 스터디에 참여해서 감을 잃지 않을 수준으로 준비했고 테스트를 앞둔 1주일 전에는 코딩 테스트만 준비했습니다. 저는 너무 짧은 기간 안에 준비하다 보니 코딩 테스트는 커트라인 수준으로 밖에 준비하지 못했습니다.


프로젝트

  8월부터 11월까지는 한이음 공모전에 참여해서 프로젝트 하나를 진행했습니다. 제가 자소서에 적은 유일한 프로젝트입니다. 프로젝트를 진행하면서 중요한 것은 '어려웠던 점을 어떻게 해결했는가?'입니다. 어려웠던 점으로는 기술적인 이슈와 협업 시 갈등이 있습니다.  기술적인 이슈는  왜 어려웠는지, 어떻게 해결하였는지, 다른 유사한 기술들과 비교하여 현재 기술을 선택한 이유가 무엇인지 잘 정리해두어야 합니다. 협업 시 갈등도 마찬가지로 본인이 어떻게 주도적으로 극복하였는지가 중요합니다. 저는 프로젝트가 하나뿐이라 면접 때 여러 갈등 상황에 대한 질문에 꽤나 애를 먹었습니다.


면접 준비

 코딩 테스트를 통과하고 나니 더 큰 시련이 기다리고 있었습니다. 프로젝트 관련 질문이나 인성 질문은 여태껏 쌓아놓은 것들로 풀어냈어야 했기 때문에 현재까지 준비한 내용들을 잘 정리하는 것에 집중했습니다. 프로젝트의 개요, 사용 기술, 해당 기술을 선택한 이유, 협업 시 갈등을 정리하였습니다. 어차피 이 이상으로 당장 준비할 수 있는 것은 없었습니다.


 CS는 정말 답도 없었습니다. 학교에서 들었던 수업이 있었지만 대부분 전공이 아닌 학생들을 대상으로 얕게 가르치는 수준이었기에 많이 부족했습니다. 코딩 테스트가 끝난 후에 면접을 준비하려다 보니 시간이 부족했고 깃 헙에 정리되어 있던 면접 질문들을 따고 그 질문들에 대한 대답 그리고 꼬리 질문들을 반복해가며 이해하려 노력했습니다. 이 범위가 말도 안 되게 많아서 단기간에 모두 준비한다는 것은 사실상 불가능합니다. 그래도 얕게 많은 내용을 아는 것보다 하나라도 깊게 아는 것이 중요하다는 생각으로 준비했습니다.


 면접은 매번 힘들었습니다. 하루 전날에는 속이 울렁거리고 토가 나올 것 같았습니다. 준비가 부족한 제 자신이 실망스러웠지만 면접 들어가기 직전에는 '현재 내가 가진 것은 모두 보여주자'라는 마음으로 임했습니다. 그리고 면접 한번 한 번이 모두 값진 경험이라 생각하며 버텼던 것이 좋은 결과로 이어진 것 같습니다.




만약 2년 전으로 돌아가서 준비한다면?


 전 취업 직전까지 준비가 많이 미흡했었습니다. 누가 방향을 제시해주는 사람이 없으니 일이 닥쳤을 때 해결하기 급급했습니다. 때문에 준비가 많이 미흡했지만 정말 운이 좋게도 저의 가능성을 알아준 면접관님 덕분에 카카오에 합격할 수 있었습니다. 다음은 제가 2년 전으로 돌아간다면 준비할 것들을 생각해보았습니다. 이러한 준비들은 단순히 취업이 끝이 아니라 향후 개발자로 나아가기 위해 좋은 밑거름이 될 것이라고 생각합니다.  


1. 코딩 테스트는 꾸준히

 코딩 테스트는 기업에서 사람을 걸러내는 값싼 채용 프로세스라고 생각합니다. 다른 능력치에 비해 알고리즘, 코딩 테스트를 수행하는 능력이 조금은 부족한 사람들이 떨어지는 경우가 생길 수 있습니다. 그럼에도 기업 입장에서 코딩 테스트는 아직까지 매력적인 카드라고 생각합니다. (이런 부분을 보완하기 위해서 어떤 기업들은 자소서와 코딩 테스트를 하나의 프로세스로 묶어 동시에 검증하기도 한다.)


 코딩 테스트는 가늘고 얇게 꾸준히 준비할 것 같습니다. 준비하는 방법들은 제가 했던 방법들과 크게 다를 것 같지 않습니다. 다만 알고리즘을 좀 더 깊게 공부하고 시간에 맞춰 푸는 훈련들을 반복하면 좋겠습니다. 개인적으로 저는 혼자 준비하는 것보다 코딩 테스트 스터디를 했던 것이 좋았습니다. 제 풀이를 설명하는 훈련도 되고 무엇보다 다른 사람들의 더 좋은 풀이를 발견할 수 있다는 점이 좋았습니다.


2. CS는 깊게

 CS 공부는 지름길이 없다고 생각합니다. 기본서가 되는 책을 사서 여러 차례 정독하고 계속 꼬리를 물어가는 질문들을 반복하면서 학습할 것 같습니다. 비전공자이기 때문에 CS를 자발적으로 더 많이 신경 써야 합니다. 단단한 CS 지식은 많은 면접들의 기본이 될 뿐만 아니라 빠르게 변화하는 IT 산업 흐름 속에서 흔들리지 않도록 하는 기둥 역할을 합니다.


3.다양한 사람들과 더 많은 프로젝트를

 '다양한 사람들'과 '더 많은 프로젝트'를 경험하겠습니다. 유의해야 할 점은 단순히 프로젝트 양으로 승부를 보겠다는 이야기가 아닙니다. '다양한 사람들'을 경험하는 것은 소프트 스킬 역량을 향상 시켜줄 것입니다. 여러 이해관계가 얽힌 사람들과 많은 갈등을 겪어보고 이를 슬기롭게 해결할 수 있는 지혜가 필요합니다. 이러한 지혜는 절대 지어낼 수 없으며 글을 읽는다고 체득할 수도 없습니다. 직접 경험하고 부딪혀야 합니다.


 그리고 '더 많은 프로젝트'를 경험하며 문제 해결 및 의사 결정 능력을 향상시키는 것에 초점을 맞춰야 합니다. 우리가 마주치는 기술적 어려움에는 절대적인 솔루션이 존재하지 않습니다. 여러 대안들을 조사하고 비교하며 현 프로젝트에 가장 적합한 방안을 선택해야 합니다. 작은 범위에서 네이밍 규칙, 추상화, 라이브러리 선택부터 큰 범위의 아키텍처까지 모든 것이 고민 사항입니다. 선택할 수 있는 모든 부분을 고민하는 습관을 만들고 팀원들과 합리적인 의사 결정을 도출하는 능력을 갖춘다면 누구에게나 매력적인 지원자로 보이지 않을까요?

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari