인턴십 완료 후 이어진 히어로 생활 ⓒ Delivery Hero Korea
놀기만 했던 대학교 1학년을 제외하면 이번 인턴십 4개월의 기간은 “내 20대 인생 중 가장 편하게 지냈던 4개월”이라는 생각이 든다..
인턴십 전에는 포트폴리오 만들고 진행하는 공모전 탈주 닌자들 잡으러 다니던 중이어서 스트레스를 많이 받았는데 인턴십에서는 그냥 마음 편하게 공부하고 코딩만 하면 되는 기간이어서 편하고 좋았다. 신입 개발자 채용이 이전에 없었다는 점, 이번이 처음 있는 신입 채용을 전제로 한 1기 인턴십이라는 것도 회사에 들어오고 나서 알았다.
인턴십 참여 전
인턴십을 시작하기 전에 이것저것 걱정을 많이 했다. 비록 신입이지만 내 나름대로 기술 스택은 Java로 쌓고 있었고 CS 관련 기술서를 볼 때도 의도적으로 Java로 기술된 책들을 선택했다. (엔터프라이즈 애플리케이션 아키텍처 패턴, 자바ORM표준 JPA프로그래밍, 스프링5 MSA etc… )
언어와 CS 지식은 별개의 내용인 것을 귀에 못이 박히게 들었고 그 두 가지를 같이 보지 않으려고 항상 노력했지만, 그 두 개를 분리해서 볼 기회가 없었기에 지금까지 쌓은 지식의 상당 부분이 버려지는 것 아니냐는 막연한 걱정을 안고 있었다. (인턴십을 통해서 언어와 CS 지식을 이제 완전히 분리된 개념으로 볼 수 있게 됐다.)
그리고 아직 학교에 재학 중이었기 때문에 학기 중 취업계를 신청해야 했고, 이렇게 되면 최저 학점을 받기 때문에 최종 졸업 학점에 타격을 맞을 수 밖에 없었다.
그런데도 인턴십을 하게 된 이유는 면접에서 너무 좋은 인상을 받았기 때문이다. 기술면접에서 개인 GitHub 계정에 올라온 내용을 보시고 그것들에 대해 질문을 던져주셨다.
“Mybatis랑 Hibernate 둘 다 써보셨네요? SqlMapper와 ORM의 차이가 무엇인가요?” 라던지
“정렬된 배열 탐색과 정렬되지 않은 배열에서 탐색하는 방법에는 무엇이 있을까요?” 같은 질문들을 받았는데 재미있었다.
스트레스 없이 한 시간 동안 재미있게 떠들고 나왔는데 그때 경험이 참 좋았다.
인성 면접 때도 비슷했다. 이때는 면접자인 나보다 면접관 분이 더 말씀을 많이 하셨다. 내가 질문한 내용에 대해 답변해주시는 시간이 더 많았다.
“연봉이 어느 정도인가요?”,
“왜 신입 채용에 알고리즘 테스트 과정이 없는 건가요?”(진짜 궁금해서)
“도서 구입비의 사용 범위는 어디까지인가요?” (회사에 필요한 기술서만? 내가 공부하고 싶은 기술서도? 인문학까지도 가능?)
어찌 보면 민감하고 다소 무례한 질문들일 수도 있었다. 그러나 이런 질문들에 대해서 다 상세하게 답변해주셨고 서로 이것저것 그냥 일상 이야기도 하면서 편하게 1시간 정도 대화를 나눴는데, 면접 다 보고 나오면서 떨어지면 정말 아쉽겠다는 생각이 많이 들 만큼 면접 경험이 즐거웠다.
그리고 인턴십을 포기하면 학과 내에서 수업이 지루하기로 유명한 교수님(별명: 컴공 푸린)의 수업을 수강해야만 했다. 살려줘
인턴십 참여 후
1. CS 지식과 언어숙련도의 분리
같이 두 달 동안 프로젝트 진행하면서 배운 것이 참 많았다. (초반 2개월은 교육 기간)
“CS와 프로그래밍 언어는 서로가 개별적인 내용이다.”를 인지하는 것이 신입에게는 매우 어려운 일이다. 대체로 처음 배운 언어를 기반으로 CS 지식을 쌓기 때문에 머릿 속에서 그 두 가지는 같은 선상에 놓인다.
책에 “언어는 도구일 뿐이다.“라고 쓰여 있어서 그런가 보다 하면서 넘어갔지 그걸 몸으로 체감할 수 있는 기회가 없었다. 인턴십에서 배우고 프로젝트를 진행하면서 이제 완전히 분리할 수 있게 되었다.
JPA를 배우면서 사용했던 ORM 지식이 Django ORM에서도 그 원리는 같다는 것을 보았고, Spring Security에서 사용했던 AOP, 데코레이터 패턴과 같은 개념들이 Django 에서도 Security 로직의 재사용을 위해 비슷한 방법으로 사용되고 있었다.
처음에는 자바로 쌓은 지식이 파이썬으로 넘어오면서 버려지는 지식이 될까봐 많이 걱정했다. 실제로는 전혀 그렇지 않았고 언어에 대한 두려움이 많이 줄어들었다.
2. 협업 도구 숙련
아마 대부분의 신입사원들이 그러겠지만 협업다운 협업을 못 해봤을 것이다.
조별과제란 4명이 할 일을 1명이 몰아서 하는 프로젝트를 의미하며 공모전이란 탈주 닌자 들과 함께 떠나는 열차 여행이고 졸업작품(캡스톤)이란 교수님의 요구를 충족시키는 PT&기술영업과 학과직원들과 함께하는 영겁의 서류작업일 뿐이다.
Git을 사용했다고 하지만 사실 Google Cloud로도 충분히 소스코드 형상 관리가 될만큼 브랜치 분리도 없고 Git의 여러 기능에 대한 경험이 적을 것이다.
두 달간의 프로젝트를 통해 서로 머지하면서 충돌도 나는 경험도 겪고, 서로 브랜치를 나눠서 일을 분배하며 협업했던 일은 학교에서 배울 수 없는 큰 경험들이었다.
3. 좋은 문화의 유지
소프트웨어 고전서 (피플웨어, 실용주의 프로그래머 Clean Code) 같은 책들을 보면 페어 프로그래밍, 소스코드리뷰, 테스트코드 관리와 같은 내용이 나온다.
그러나 인터넷에서 본 실제 현업의 상황은 전혀 그렇지 않았다. 한국 SI 업계에서는 테스트 코드를 짜면 미친 사람 취급한다는 소리도 있고, 페어 프로그래밍은 혼자 할 일을 둘이서 하는 이상한 행동이라는 인식 등등 책에서 읽은 소프트웨어 문화와 현실은 많이 다르다고 생각하고 있었다. 그런데 회사에서는 실제로 이러한 문화들이 현장에서 이루어지고 있었다.
페어 프로그래밍을 해보는 것도 좋은 경험이었다. 바둑 장기를 둘 때 옆에서 보는 사람이 더 많은 것을 보고 훈수를 두는 것처럼 프로그래밍도 옆에서 볼 때 안 보이는 것들이 보인다.
그리고 질문에 대한 답변들도 항상 좋은 감정을 많이 받았는데
항상 무언가를 질문 할 때 멘토님은 “왜 이렇게 했어요?” 라고 물어보셨다.
보통 이런 반문은 “너가 잘못했네! 이렇게 하는 거 아니야”라는 잘못을 꾸중하는 의도로 많이 들어왔다.
그래서 처음에는 그런 질문 들을 때 마다 매우 민망했는데 나중에 알고 보니 정말로 왜 이렇게 작업했는지 의도를 물어보신 거였다. (의중이 반반이였다고 한다 굳이 이렇게 짠다고? + 왜 그렇게 짰는지에 대한 의도를 명확하게 설명할 수 있으면 OK 이런느낌?)
항상 내 의도를 물어봐 주시고 생각하게 만드는 방식의 피드백이 주어졌는데 이 또한 매우 신선했던 경험이었다. 그리고 계속해서 좋은 문화를 개선, 발전을 위한 팀 자체가 따로 만들어져 있었다는 것도 나한테는 정말 신선했다.
Final Comment
4개월 간의 인턴십을 경험하면서 여유 있는 삶, 워라벨이 왜 사람한테 중요한지 알게 됐다.
이전에는 회사 자체를 고를 때 더 경쟁적이고 좀 치열한 직장을 많이 원하고 있었다. (그만큼 보상이 더 크니까) 어찌 보면 그런 마인드는 직장과 나를 동일시하는 마인드인데, 내 생각과 다르게 인턴십을 진행하는 중에 멘토님들은 일과 일상을 분리하는 것을 매우 강조하셨다. (근데 정작 자신은 퇴근을 안 하시는 멘토님 한 분…)
같이 밥을 먹고 커피 마시면서 정시퇴근의 중요성, 번아웃의 위험에 대한 조언도 해주셨고, 예전에 번아웃을 한번 경험해보았기에 정말 큰일이 아니면 조언과 경험에 따라 정시퇴근을 하려고 노력했다. (큰일: 퇴근 직전 테스트코드가 pass 안 함. 이것만 하고 가야지~ or 내일이 프로젝트 중간발표 etc….)
그렇게 생활하니까 삶의 질이 매우 높아졌다. 집에서 누워서 자기 전에 책을 보는 것과 회사에서 밤늦게 남아서 책을 보는 것은 다르다.
학교 다니면서 공모전이나 포트폴리오 만들면서 내가 했던 생활 방식들이 내 수명 깎아 먹으면서 하는 행동들인 것을 느꼈다. 정시퇴근하고 집에 가서 Angular도 공부하고 게임도 한판 하고 잠자고 주말에 여유롭게 뒹굴뒹굴하다가 카페 가서 책보면서 네 달을 보냈다. (여유의 선순환을 경험한 것은 정말 귀한 것 아닌가!)
일로서의 개발과 취미로서의 개발을 분리할 수 있게 된 것이 어찌 보면 처음 해보는 이번 직장생활(인턴십)에서 얻어가는 가장 값진 경험이 아닌가 싶다.
김성렬, Tech 인턴십 1기 @Delivery Hero Korea
→ Rookie Hero: Tech Internship 2기 지원 바로가기