개발자 되기, 컴공이 아니어도 괜찮아!

개발자 되기, 컴공이 아니어도 괜찮아!

일자

상시
유형
아티클
태그
이 아티클은 <비전공자가 개발자로 일하는 방법> 시리즈의 2화입니다. 


어떻게 하면 개발자가 될 수 있을까? 새로운 도전을 시작할 때 가장 어려운 점은, 어떻게 시작해야 하는 지 감이 잡히지 않는다는 점이다. 나 역시 개발 공부를 처음 하면서 막막함을 느꼈고, 주위에 관련 일을 하는 사람에게 조언을 구했다. 당시에는 지금처럼 개발자가 인기 있지 않았기 때문에, 도움을 구할 개발자가 거의 없었다. 물론 비개발자가 주변에서 개발자를 찾기란 지금도 쉬운 일은 아니다. 심지어 당시 구했던 조언들은 잘못된 정보인 경우도 상당수였다.

공부에 왕도란 없다지만, 굳이 잘못된 길로 멀리 돌아서 갈 필요는 없다고 믿는다. 1장에서는 왜 개발자가 되고 싶은지, 직업으로서 개발자를 선택했을 때 만나게 될 장점과 단점에 대해 이야기를 나눠보았다. 그렇다면 이번 글에서는 최대한 시행착오를 줄일 수 있도록, 어떤 과정과 준비를 통해 개발자가 될 수 있는지 이야기하고자 한다. 참고로 이 글에서 언급하는 정보들은 실제로 필자가 직접 경험하거나 지인을 통해 간접적으로 경험한 방법이고, 이 외에도 다양한 방법이 있다. 다만 최대한 특수한 케이스를 배제하고 많은 사람이 스스로 적용할 수 있는 방법을 추렸다는 점을 미리 밝힌다.

예를 들어, 싱가폴에서 개발자로 일하며, 싱가폴에서 알게 된 지인 몇 분과 개발 스터디를 몇 달간 진행했었다. 그 중 한 분이 개발자로 경력 전환을 강력히 희망해 매주 2시간씩 공부와 포트폴리오를 검토해줬다. 그는 공부를 시작하고 6개월만에 클라우드 엔지니어로 경력을 전환하는 데 성공했다. 그런데 일반인 주위에 이런 기회를 찾는 것은 어렵기 때문에 아래 글에서는 좀 더 일반적인 내용을 다뤘다.


부담 없는 첫 걸음 : 국비지원 교육


개발자가 되기 위해 가장 부담 없이 도전해볼 수 있는 방법은 국비지원 교육이다. 한국 정부는 취업 준비생과 구직자를 위해 다양한 프로그램을 운영하는데 그 중 하나가 바로 국비지원 교육 사업이다. 국비지원 사업에도 여러 세부 카테고리가 있다. 그 중 ‘국민내일배움카드’가 대중적으로 많이 알려진 프로그램이고, 그 외에도 취업성공패키지, 청년취업아카데미 등의 프로그램이 있다. 자세한 프로그램 정보가 필요하다면 직업훈련포털를 통해 어떤 지원 프로그램이 있는지 확인할 수 있다.

ⓒ 셔터스톡


필자는 지원사업 중 ‘국가기간/전략산업직종 훈련’ 과정을 신청했다. 이 프로그램이 특히 좋았던 이유는 수강료, 교재비 등 모든 비용을 정부에서 지원해주고, 심지어 한 달에 30만원 정도의 지원비(현재는 40만원 상당)도 별도로 받을 수 있다는 점이다. 국가기간/전략산업직종 훈련에 속하는 개발 과정은 대체로 짧게는 3개월, 길게는 6개월 정도 진행한다. 필자는 6개월 과정인 ‘빅데이터/머신러닝’을 선택했었는데, 실제 수업은 ‘자바(JAVA)’라는 프로그래밍 언어를 통한 웹 개발 과정이었다. 과정을 신청하기 전 상담을 통해 정확히 어떤 내용의 교육이 이뤄지는지 확인하는 것이 중요하다.

수업은 여러 권의 책을 순서대로 정리하는 형태로 진행된다. 종일반은 오전과 오후로 나눠 오전에 수업을,  오후에 실습을 하는 형태다. 커리큘럼 구성은 점차적으로 완성된 웹 서비스를 만들 수 있도록 되어 있다. 예를 들어, 자바 과정이라면 자바 프로그래밍 언어를 먼저 배우고, 그 이후 자바를 통해 웹 개발하는 ‘웹 프레임워크’ 툴을 배운다. 그리고 웹 개발에 필수적인 데이터베이스를 조작하기 위한 언어 SQL을 공부한다.

다만 수강생이 직접 부담하는 부분이 없다보니, 크게 학습 의지가 없고 학교에서 등 떠밀려서 오는 경우도 있다. 전반적으로 크게 기운 넘치는 환경은 아닐 가능성이 크다. 또한 주어진 시간에 끝내야 하는 진도가 많아 강사에 따라 강의실에서 책만 읽다 나가는 경우도 빈번하다. 사전에 강사에 대한 정보와 평판을 확인하고 수업을 신청하는 것이 실패를 줄이는 길이다.


확실하게 개발자로 전향하고 싶다면 : 부트캠프


다음 선택지로 부트캠프를 들 수 있다. 부트캠프는 일반적으로 사설 기관에서 운영하는 종일반 형태의 단기간 개발 학습 과정을 의미한다. 국비지원 교육과 마찬가지로 짧게는 4개월, 길게는 6개월 동안 진행한다. 우선 국비지원과 가장 큰 차이는 금액이다. 인지도에 따라 수백만 원에서 수천만 원까지 이르는 부트캠프가 있다. 물론 이 금액 차이에서 오는 압박감이 만만찮아 수강생이 좀 더 수업에 집중하고 결과물을 만드는 데 집중하는 편이다.

또한 가격이 비싼 만큼 현업에서 일을 하고 있는 개발자가 직접 가르치거나, 비교적 최근까지 업계에서 경력을 쌓던 사람이 오는 경우가 대다수고, 커리큘럼도 국비지원 사업에 비해 실제로 직무에 활용하는 데 적합한 내용이 많다. 부트캠프 업체와 프로그램에 따라 채용 연계 과정을 운영하는 곳도 있다. 더불어, 제휴를 통해 수강생이 원하는 업체에 좀 더 좋은 연봉을 받으며 취업할 수 있도록 돕는다. 이 과정에서 포트폴리오나 면접 준비를 봐주기도 한다. 지원 가능한 회사 목록을 공유하고 개개인의 역량에 취업을 맡기는 국비지원 사업과의 차이다. 그리고 대부분의 기관에서 수료자 커뮤니티를 운영하기 때문에, 선후배 교류를 빌어 장기적인 이직 기회를 노릴 수 있다.


다양한 선택지를 원한다면 : 온라인 강의


만약 온라인 강의를 듣는 것이 익숙하고, 혼자 계획을 세우고 공부를 할 수 있을 정도로 자기 관리에 능하다면 온라인 강의를 들어보는 것도 나쁘지 않다. 물론 대부분의 사람에게 첫 개발 공부로 온라인 강의를 추천하지 않는다. 처음 개발 공부는 생각보다 지루하고 결과물이 손에 잘 잡히지 않기 때문에 중간에 포기하기 쉽기 때문이다. 또한 국비지원 사업이나 부트캠프는 결국 어려운 시간을 함께 하는 동기도 생기고, 수료 날짜가 존재하기 때문에  자연스럽게 진도를 따라가게 되지만, 온라인 강의는 회사나 학교를 다닌다면 주의가 산만해지기 쉽다. 다만 회사를 다니면서 개발이 적성에 맞는지 여부를 확인하기 위한 용도라면 온라인 교육이 적합할 수 있다.

ⓒ 셔터스톡


영어가 편하거나, 영어 강의를 듣는데 큰 거부감이 없다면 Udemy라는 강의 사이트(링크)에서 강의를 검색해서 들으면 좋고, 만약 한국어 강의를 찾고 싶다면 Inflearn이라는 사이트(링크)를 활용해보는 것도 좋다. 앞의 두 강의 사이트는 굉장히 실용적인 내용을 다루는데, 안 좋게 말하면 이론을 건너뛰고 단순히 어떻게 하면 되는지 따라치기만 하는 일이 생기기도 한다. 만약 이론 중심의, 조금 더 대학교 강의 스타일의 강의를 찾고 싶다면 Coursera(링크)에서 세계 각지의 대학교 수업을 들어보는 것도 방법이다. 필자는 취업 준비할 때보다 취업한 뒤, 다양한 기술을 배우기 위해 온라인 강의를 활용했다. 주로 출퇴근 시간과 새벽 시간을 활용해 새로운 기술을 공부하고 회사 업무에 적용하는 방식으로 일했다.


자격증, 따야할까요?


개발을 준비하는 사람도 자격증을 따면 취업에 도움이 될까 궁금해 한다. 나 역시 국비지원 교육을 받던 중 추천을 받아 ‘정보처리기사’ 자격증을 취득했다. 하지만, 지금껏 단 한 번도 정보처리기사가 개발자로 일하는 데 도움이 된 적은 없다. 물론 이 자격증 학습이 비전공자가 놓치기 쉬운 기본적인 컴퓨터 공학 지식을 다루기 때문에, 기본을 다진다는 측면에서는 나쁘지는 않다. 다만 개발자로 경력을 전환하는 것을 목표로, 짧은 시간을 최대한 효율적으로 써야하는 사람이라면 그다지 추천을 하고 싶지 않다.

개발자로 일하다 보면 개발자가 자격증을 따는 데 큰 관심이 없는 이유를 알 수 있다. 개발자 업무는 본인이 제대로 이해하지 못하면 처리할 수 없는 경우가 허다하다. 그러므로 면접 지원자에게 질문 몇 가지를 해보고, 코딩 테스트를 통해 실제로 얼마나 효과적으로 코드를 짜는지 직접 확인해보면 된다. 굳이 외부 자격증에 의존하지 않고도 충분히 채용할 수 있다.


면접 준비하기


우선 먼저 언급하고 넘어가고 싶은 부분은 회사마다 다양한 면접 방식이 존재한다는 점이다. 가장 기본이 되는 면접 준비 방식은 자료구조/알고리즘 코딩 테스트를 준비하고, 지원 분야에 자주 나오는 질문을 정리하고, 마지막으로 포트폴리오를 만드는 것이다. 채용 프로세스가 잘 갖춰진 대기업이나 어느 정도 개발팀 규모가 있는 스타트업과 면접을 진행한다면 위와 같은 면접 프로세스를 경험하게 될 가능성이 높다. 그런데 만약 규모가 크지 않은 개발팀 면접을 본다면, 굉장히 간소한 면접을 보거나 지엽적인 부분의 질문을 받게 될 수도 있다. 처음 개발자 면접을 보러 다닐 때 어떤 회사에서는 코딩 테스트를 본다고 진땀을 뺀 반면, 어떤 회사에서는 이렇게 사람을 뽑아도 되나 싶은 곳도 있었다.

그러니 가장 중요한 점은 만약에 꼭 가고 싶은 회사가 있다면 어떤 인터뷰 과정을 통해 채용이 이뤄지는지 확인하고 거기에 맞게 준비하는 것이 필요하다. 내부에 개발자로 일하는 사람을 건너서라도 알 수 있다면 금상첨화다. 이런 준비가 없다면, 면접까지 들어가 좋은 기회를 놓치게 될 수 있다. 물론 기본 실력이 어느 정도는 받쳐줘야하지만, 필자는 개인적으로 면접도 별도의 스킬이라고 생각한다. 미리 면접의 형태를 파악하고 알맞은 준비를 해야만 만족스런 결과를 얻을 수 있다. 추가적으로, 필자는 꼭 가고 싶은 회사의 면접은 조금 뒤로 미뤄 두고 다른 면접을 통해 충분한 경험치를 쌓은 후 지원하라고 추천하는 편이다.


자료구조/알고리즘 공부하기


사실 자료구조와 알고리즘은 컴퓨터 공학을 전공한다면 어느 정도 기본적으로 다룰 수 있다. 수업에서 과제나 시험으로 자료구조나 알고리즘을 실제로 구현하는 것을 다루기 때문이다. 그러나 비전공자에게는 그런 기회가 흔치 않다. 이 두 가지는 커리큘럼에서 중요한 부분이므로 반드시 개별적으로 준비해야 한다.

코딩 테스트를 준비하기 위해 다양한 자료와 사이트가 있는데, 만약 단 하나의 사이트만 골라야 한다면  리트코드(링크)를 제안한다. 그 외에도 해커랭크(링크), 한국어 사이트로는 백준(링크)이 유명하다. 첫 개발자로 취업을 준비하는 경우라면, 개인적으로 리트코드 기준으로 Easy 문제를 최소한 50개 정도는 풀 것을 추천하고 있다.

이제 막 자료구조/알고리즘 공부를 시작한 사람, 심지어 현재 개발자로 일하며 이직을 준비 중인 실무자도 이 공부에 대해 의문을 가지곤 한다. 물론 소프트웨어 개발을 위한 도구들이 계속 발전하면서 내가 짠 코드가 컴퓨터에서 어떤 과정을 통해서 실행되는지 알지 못해도 훌륭한 결과물을 만들 수 있다. 다만 개발자 경력이 쌓일수록 중요한 것은 남들이 풀지 못하는 문제를 해결해나가는 것인데, 컴퓨터 작동 원리나 근간이 되는 프로그래밍 원리를 이해하지 못하면 시니어로서 일을 하기 어려워진다. 개발자로 커리어를 길게 본다면 틈틈히 실력을 쌓아두자.


자주 나오는 질문 준비하기


개발에도 분야가 다양하다. 그렇기 때문에 취업 준비를 본격적으로 시작하는 과정에서 뚜렷한 방향을 잡고 면접을 준비하는 것이 중요하다. 아마도 첫 개발자 취업이라면 백엔드, 프론트엔드, 모바일 개발자 정도가 가장 일반적인 코스일 것이다. 세 가지 분야에 대한 상세한 내용은 다음 장을 참고하면 된다.

예를 들어, 프론트엔드 개발자 취업을 준비 중이라면, 구글에 ‘frontend interview questions’라고 검색해보자. 자주 나오는 인터뷰 질문이 뜰 것이다. 그 중 가장 신뢰할 수 있는 사이트 몇 곳을 선택해 몰랐던 내용을 공부해가며 인터뷰를 준비하는 과정이 필요하다.

알고리즘과 자료구조가 컴퓨터 작동 원리와 관련이 깊다면, 사용하는 기술과 연관된 다양한 깊이의 질문이 나오는 경우가 많다. 아무리 코딩 테스트를 잘 풀더라도 이런 분야별 질문에 잘 대답하지 못한다면, 충분히 코딩을 해보지 않았거나 짜는 코드를 이해하지 않고 대충 복사-붙여넣기를 했다고 평가 받기 쉽다.


포트폴리오 만들기


마지막으로 중요한 것은 포트폴리오다. 중요하게 알아야 할 점은 면접관은 당신의 포트폴리오가 완벽할 것이라고 기대하지 않는다는 점이다. 포트폴리오를 만들기 위해 기획과 개발에 엄청난 시간을 쏟는 사례가 많은데, 사실 경력직 이직의 경우 포트폴리오를 요구하는 경우가 거의 없다. 따라서 포트폴리오를 만드는 데 긴 시간을 들이지 않도록 주의하자.

ⓒ 셔터스톡


특히 개발을 갓 시작한 사람이라면, 포트폴리오용 프로젝트를 시작할 때 시간이 얼마나 소요될지 정확하게 판단하는 일이 쉽지 않다. 내가 추천하는 방식은 프로젝트를 할 때는 최대한 짧게 마감 기한을 설정하고, 다음 프로젝트를 진행하면서 점차 긴 호흡의 프로젝트를 해보는 것이다. 그리고 포트폴리오를 제출할 때는 그 중 결과가 좋은 것 몇 가지를 간추리면 된다.

그리고 포트폴리오를 정성스레 만들어 제출하더라도, 면접관이 모두 면밀하게 검토할 확률은 낮다. 따라서 포트폴리오 제출 시 링크 혹은 코드만 전달하는 것이 아니라, 주요 스크린샷과 기능, 그리고 해당 기능을 구현하기 위해 사용한 기술을 간략히 정리해 제출하는 것이 면접관이 시간을 아낄 수 있도록 도와주고, 눈을 사로잡는 지름길이다.



▶ <비전공자가 개발자로 일하는 방법> 시리즈 보러 가기



글ㅣ마르코
필자는 역사학도 출신 개발자로 대학 졸업 후 무역상사에 입사했으나 직장 상사들처럼 살고 싶지 않아서 퇴사 후 개발을 공부했다. 한국에서  개발자로 3개의 스타트업을 다녔고, 이후 프리랜싱, 개인 사업 등 다양한 일을 하다가 상해를 거쳐 싱가폴에서 개발자로 일했다.  현재는 IT영업 업무를 하면서 관련 글을 쓰고 있다. (https://brunch.co.kr/@imagineer)