진로 탐색 인터뷰
한 고등학교의 1학년 학생 몇 분이 ‘진로 탐색 인터뷰 프로젝트’의 일환으로 제게 인터뷰를 요청해 왔습니다. 그래서 개발자를 목표로 하는 고등학생 분들을 대상으로 제가 해드리고 싶은 이야기를 정리했습니다. 대학교 새내기 분들도 참고하셔도 좋을 거 같네요.
(지금은 초안 상태입니다. 피드백을 받아 조금 더 다듬은 후 학생들께 제공하겠습니다.)
(이야기가 어수선해지지 않도록 창업 쪽은 배제했습니다.)
제가 예전에 만든 ‘책으로 안내하는 개발자 로드맵’에서는 전문 분야를 다음처럼 6가지로 나눴습니다.
인공지능/데이터과학
게임
모바일(안드로이드/iOS)
웹(프런트엔드)
백엔드
운영 및 데브옵스
물론 이 외에도 품질보증, 보안, 프롬프트 등 많은 분야가 있고, 깊게 들어가면 각각이 또 수많은 세부 영역으로 나뉩니다. 영역별로는 주로 사용하는 언어, 프레임워크, 배포 방식, 활용하는 데이터와 인프라 등이 크게 다를 뿐 아니라 업무 환경이나 평균적인 연봉 등에도 차이가 납니다.
그래서 자신은 어떤 분야를 선택하는 게 유리하고, 그 길로 남보다 앞서 가려면 어떻게 준비해야 하는지가 궁금할 수 있습니다. 하지만 고등학생이라면 아직 이런 고민을 할 단계는 아니라고 생각합니다. 구체적인 분야는 한참 후에 고민해도 늦지 않습니다.
그렇다고 “뭘 벌써부터 고민이냐?”라는 말로 끝낸다면 학생 입장에서는 오히려 더 불안해지겠지요. 그래서 ‘선택은 언제 하면 되는지’와 ‘선택의 순간이 오기까지 어떻게 준비하면 좋을지’를 제 나름의 관점에서 정리했습니다. 참고하여 자신에 맞게 응용한다면 보다 체계적으로 미래를 준비하는 데 보탬이 될 겁니다.
다음은 개발자들이 전문 분야를 선택하게 되는 시기를 단순화한 그림입니다. 실제로는 수많은 다른 길이 있고 한 번 선택한 후에도 바꿀 수 있지만, 처음 갈리는 시기는 주로 취업과 함께입니다.
보다시피 대학에 입학하고도 4~10년 정도가 더 지나야 전문 분야가 나뉘기 시작합니다. 고등학생이라면 아직 시간이 많다는 이야기입니다.
더구나 IT 시장은 빠르게 변합니다. 예를 들어 15년 전에는 안드로이드/iOS 개발자는 존재하지 않았고, 인공지능/데이터과학이 급부상한 건 7년쯤 전부터이고, 프롬프트 엔지니어링이란 말은 2021년에 와서야 만들어졌습니다.
그래서 현 고등학생이 취업을 고민할 5~10년 후 세상은 그 누구도 예측하기 어렵습니다. 상상의 나래를 펼쳐보는 일은 재미는 있겠으나, 이에 근거하여 벌써부터 진로를 한정하는 건 위험한 도박입니다. 지금은 이것저것 배우고 경험하면서 기초를 닦고 유연성을 기르는 게 훨씬 유리할 것입니다.
사회 시스템을 수동적으로 따른다면 개발 지식과 경험 습득 시점은 대체로 다음 그림과 같습니다. ‘지식’은 주로 대학 전공 과정에서, ‘경험’은 현업에 들어가야 본격적으로 얻게 되는 구조죠.
2000년대 초반까지는 대학을 졸업하면 현업에 투입되기에 부족함이 거의 없었습니다. 하지만 소프트웨어 개발 생태계가 빠르게 변하면서 둘 사이의 격차가 크게 벌어졌고, 간극을 매우기 위해 ‘회사 프로젝트 튜토리얼’ 격인 부트캠프 훈련 프로그램이 활성화되고 있습니다(자세한 이야기는 ‘어서 와! 회사는 처음이지?’ 참고).
그렇다고 대학의 교육 방향이 시대 흐름을 쫓아가지 못한다고 보기도 어렵습니다. 개발자로 오래 살아남으려면 대학에서 배우는 여러 전공 지식들이 필요합니다. 그래서 여전히 대학은 취업을 위해 가장 애용되는 관문이며, 회사에서도 전공자들을 압도적으로 선호합니다.
경험 쌓기를 꼭 취업 시점까지 미룰 이유는 없습니다. 대학 수업에서 얻기 어려운 경험의 핵심은 바로 ‘시간’과 ‘사람’입니다. 수년에 걸쳐 업데이트를 제공하고 유지보수하는 경험이나 다양한 사람이 모여 제대로 협업해 보는 경험은 한 학기짜리 수업에서는 제공하기 어렵습니다.
이중 ‘사람’과 관련한 경험을 쌓기는 상대적으로 어렵지만, ‘시간'과 관련한 경험은 아이디어와 의지만 있다면 언제든 가능합니다. 학교 수업과 별도로, 나에게 필요한 앱이나 사람들이 이용할 만한 간단한 서비스를 구현해 꾸준히 가꿔보세요.
좋은 예로 코로나 시국에는 실시간 정보를 제공하던 수많은 서비스가 있었습니다. 참고로 저는 대학생 때 한동안 제 홈페이지를 직접 구현하여 운영했고, 나만의 클래스 라이브러리를 가꾸며 프로젝트 때마다 활용하는 식으로 이런 경험을 쌓았습니다.
이렇게 만들어놓은 앱이나 서비스는 여러분의 포트폴리오에 후광을 비춰줍니다. 학점도 무시할 순 없지만, 취업 시장에서는 매력적인 작품 한두 개가 훨씬 신뢰를 주는 강력한 무기가 되어줄 겁니다.
그럼 경험 쌓기는 빠를수록 좋을까요? 꼭 그렇지만은 않다고 생각합니다.
언제 무엇을 시작하고, 어디에 집중해야 할까요? 제가 권장하는 단계별 전략은 특별한 건 없습니다. 다음 그림처럼 단계를 고등학교, 대학 1~2학년, 3~4학년으로 나눴고, 각 단계에서 챙겼으면 하는 핵심을 3가지씩 추렸습니다.
각각을 조금 자세히 풀어보겠습니다.
1. 입시 준비
취직은 먼 미래이기 때문에 조급해할 필요가 전혀 없습니다. 중장기 프로젝트라면 남들보다 조금 일찍 시작하는 것보다 제대로 하는 편이 유리합니다. 그러니 우선 내가 선택할 수 있는 대학의 수를 늘리는 데 더 집중하세요. 앞서 이야기했듯이 회사는 컴퓨터 관련 전공자를 월등히 선호합니다.
또한 ‘수학’과 ‘영어’는 개발자에게 꼭 필요한 역량이니 잘해두면 무조건 이득입니다.
2. 적성 확인
또 하나 빼먹으면 안 될 것이 개발이 내 적성에 맞는지 확인하는 일이겠죠? 당연하지만 게임을 좋아하는 것과 게임을 만드는 일은 전혀 다릅니다. ❶ 파이썬 같은 쉬운 프로그래밍 언어를 하나 골라 익혀보세요. ❷ 간단한 예제 프로그램을 작성하는 데 크게 막힘이 없는지 확인하세요. ❸ 조금 도전적인 앱을 구상하여 직접 구현할 수 있는지 시도해 보세요. ❹ 완성 후 희열과 성취감이 느껴진다면 첫 관문은 통과입니다.
3. 선행 학습
여력이 된다면, 혹은 프로그래밍이 너무 재미있어 참지 못하겠다면? 하셔야죠. 무엇부터 배워야 할지는 만들고 싶은 게 무엇이냐에 따라 크게 달라집니다. 프로그래밍 언어부터가 다르죠. 인공지능은 파이썬, 스마트폰 앱은 스위프트나 코틀린 혹은 다트, 웹은 HTML/CSS/자바스크립트부터 시작해야 합니다. 해당 분야의 좋은 입문서나 강좌에서 잘 안내해 줄 겁니다. 만들어보는 게 목적이므로 이론에 진심인 책보다는 ‘실습과 프로젝트’ 위주의 입문서나 강좌를 추천합니다.
혹 이론적인 게 재미있고 기초부터 탄탄하게 쌓고 싶은 분께는 다음 정도의 주제를 추천합니다.
자료구조와 알고리즘: 프로그램을 구성하는 기초 단위인 ‘데이터’와 ‘논리’를 효율적으로 다루고 구성하는 방법을 다각도에서 고민하게 해 줍니다.
객체지향: 프로그램을 모듈 단위로 나눠 구현하는 가장 대표적인 프로그래밍 기법입니다. 마치 레고 블록을 조립하듯, 더 큰 프로그램을 설계하고 구현하는 데 유리합니다.
운영체제: 0과 1밖에 모르는 컴퓨터가 애플리케이션들을 구동하고 운영할 수 있는 비밀들을 익힙니다. 운영체제 자체가 각종 개념과 기법이 응축된 거대한 소프트웨어이기 때문에, 앞으로 자신만의 애플리케이션을 구상하고 구현하는 데도 좋은 레퍼런스가 되어줍니다.
리눅스: ‘운영체제’의 실용 버전이라고 보면 되겠습니다. 윈도우를 제외하면, 우리가 접하는 운영체제는 다 리눅스 혹은 리눅스의 친적이라고 봐도 무방합니다. 개발자를 꿈꾼다면 미리 친해지길 추천합니다.
대학에 오더라도 진로를 바로 정할 필요는 없습니다. 개발은 분야가 다양하고 아직 배울 게 많습니다. 또 유행이 빠르게 변하고 신기술이 쉼 없이 쏟아지죠. 그러니 깊게 보다는 넓게 접해보는 걸 추천합니다.
1. 수업은 착실하게
대체로 2학년까지 배우는 전공 수업들은 앞으로 어떤 진로를 택하든 관계없이 꼭 필요합니다.
2. 개인 프로젝트로 완성품 제작
수업과 별개로 흥미 있는 주제를 찾아서 완성된 앱이나 서비스를 만들어보는 경험을 지금부터 쌓아보길 추천합니다.
완성품을 만들려면 수업 때 배우지 않은 다양한 지식과 기술이 추가로 필요할 것입니다. 또한 완성도를 높이는 과정에서 디버그, 테스트, 설계 능력도 덩달아 높아집니다. 개념 검증이나 동작 확인 수준에서 끝나는 과제만으로는 채우지 못하는 지식, 경험, 역량을 키울 수 있습니다.
이 과정에서 더 재미있는, 더 자신 있는, 더 깊게 파보고 싶은 분야들이 조금씩 생겨날 겁니다.
3. 깃허브 사용
수업 과제든 개인 프로젝트든, 코드는 무조건 저장소에서 관리하는 습관을 들이세요. 코드 저장소(버전 관리 시스템)는 실무에서 반드시 사용하는 도구입니다. 깃허브는 무료이며 사용법도 간단합니다. 무엇보다 개발자로서의 내 이력이 차곡차곡 쌓여갑니다.
저 때는 깃허브 같은 호스팅 서비스가 없어서 개인 홈페이지에 정리해 뒀습니다.
1. 진로 고민 시작
이제 슬슬 진로를 고민할 시기입니다. 전공과목의 수도 많이 늘어서 무엇을 들을지 선택해야 합니다. 1~2학년 때 경험을 ‘넓게’ 해보았다면 어느 정도 기준이 되어줄 것입니다. ‘트렌드’를 살피고 여러 ‘커뮤니티’에 들어가 현업 개발자들께 조언을 구하세요. 학교에서는 관련 수업을 들어보며 내 길이 맞는지 확인해 보세요.
2. 포트폴리오 준비
1~2학년 때의 개인 프로젝트는 ‘다양한 경험’에 초점을 맞췄습니다. 그에 비해 3~4학년 때의 개인 프로젝트는 ‘취업용 포트폴리오’라는 더 명확한 방향성을 가지고 주제를 선정하세요. 마찬가지로 관련 커뮤니티에 조언을 구하고, 어느 정도 완성되면 피드백도 받아보세요.
3. 정적 분석 도구 사용
3~4학년쯤 되었다면 프로그래밍에는 제법 익숙해졌겠죠? 그렇다면 IDE에 정적 분석 도구 플러그인을 설치하여 활용해 보세요. 정적 분석 도구는 ‘코드 리뷰어’라고 이해하면 좋습니다. 내 코드의 어디에 어떤 문제가 있고, 어떻게 개선해야 하는지를 친절하게 알려줍니다.
혼자 작은 프로그램을 개발할 때는 동작하게만 짜도 충분할 수 있습니다. 하지만 회사에서의 ‘실전 소프트웨어 개발’은 수십 명이 수년 동안 개발하는 게 보통입니다. 그래서 서로서로 코드를 리뷰하여 이해하기 쉽고 완성도 높은 코드만을 저장소에 취합합니다. 정적 분석 도구로 단련하여 미리미리 코딩 능력을 키워둔다면 '엄청난 신입이 들어왔다'며 놀라워할 겁니다.
구글에서 “best free static analysis tools”를 검색해 보세요.
정리하면 간단합니다.
아직은 구체적인 진로를 고민하기에는 너무 이릅니다.
개발자를 꿈꾼다면 대학교는 적극 권장합니다.
아직 시간이 많으니, 서두르기보다는 제대로 가는 편이 훨씬 유리합니다.
본문의 로드맵에는 가장 일반적인 상황을 가정하여 가장 중요하다고 생각하는 핵심을 담았습니다.
IT는 빠르게 변하니, 주기적으로 업계 선배들에게 조언을 구해 로드맵을 갱신하세요.
부디 이 글이 학생 여러분의 고민을 덜어주고 방향을 정하는 데 미약하나마 도움이 되길 바랍니다.