CMI - 첫 개발 면접과 후기

Hyuno Choi·2021년 8월 17일
1

CMI 팀 활동

목록 보기
1/1
post-thumbnail

2021년 8월 17일

우연한 계기

2주 전, 아무 생각없이 제가 다니고 있는 학교인 충북대학교의 공지 어플에 들어가 새로운 공지사항을 확인하던 중에 우연히 CMI 팀원 모집 공고를 보게 되었습니다. 충북대학교의 공지 어플은 학교 공식 어플이 아니라 동아리에서 만든 어플입니다. 지금은 학생들 사이에서 거의 필수로 쓰이는 어플입니다. 그런 서비스를 재학생이 만들었다는 사실이 예전부터 신기했습니다.

충북대학교의 공지 어플 "충림이"는 이렇게 생겼습니다.

지금까지 제가 혼자서 진행한 프로젝트는 여럿 있지만 실제 사용자가 있는 서비스를 개발하고 유지보수한 경험은 없습니다. 협업과 코드 리뷰 경험이 개발자로 성장하는 데 반드시 필요하다는 것은 알고 있지만, 그런 기회를 찾을 용기와 실행력이 부족했습니다. 그러던 와중에 모집 공고가 저의 눈에 들어온 것입니다.

"충림이"는 이미 전교생에 가까운 사용자를 보유하고 있는 서비스입니다. 현재 운영진도 모두 현업 개발자라고 합니다. 아직 제가 도전할 수준이 아닌 것 같아 운영팀에 지원하는 것에 몹시 주저했습니다. 그래도 친절한 모집 설명과 별도의 스터디 기간을 가진다는 말에 용기를 내서 지원했습니다.

지원서부터 면접까지

지원서에서 요구하는 양식은 무척 짧았습니다. 많은 내용을 담을 수 없었기에 지금까지 진행한 프로젝트 중 가장 애정을 가졌던 트위터 클론 코딩 경험을 적었습니다. CMI 팀에서 백엔드에 Node.js와 Express 프레임워크를 사용하고 있다는 설명을 보고 마침 같은 스택을 활용해 진행중이었던 유튜브 클론 코딩 프로젝트 경험도 짤막하게 적었습니다. 끝으로 자유 양식에 지금까지 꾸며왔던 깃허브와 블로그 주소를 적어 제출했습니다.📮

1차 합격 소식 이후 2차 면접에 대비해 저 나름의 예상 질문을 만들었습니다. 아직은 클론 코딩으로 프론트엔드 개발의 감을 잡고 있는 터라 깊이있는 기술 면접에는 자신이 없었습니다. 그래도 지금까지 웹 프로그래밍을 공부하면서 느꼈던 점들을 최대한 가감없이 담으려고 노력했습니다. 아래는 제가 준비했던 예상 면접 질문입니다.

CMI 면접 예상 질문

공통질문

1. 간단한 자기소개 부탁해요.

안녕하세요, 저는 충북대학교에서 심리학과 뇌-인지공학을 전공하고 있는 최현오입니다. 파이썬으로 프로그래밍을 처음 배우고 프로그래밍의 매력을 느껴 지금은 프론트엔드 개발자를 목표로 지금 할 수 있는 것들을 하나씩 해나가고 있습니다. 현재는 친한 친구와 함께 유튜브 클론코딩을 목표로 Node.js 서버를 구축하는 방법을 열심히 공부하고 있습니다.

2. 프론트엔드에서 관심이 있는 스택이 있나요?

저는 리액트를 사용해 사용자와의 소통이 많은 웹 페이지를 제작하는 데에 관심이 많습니다. 실제로 리액트를 사용하여 트위터 클론 코딩 프로젝트를 진행할 때 HTML과 자바스크립트 파일을 따로 만들지 않고 화면 상의 요소들을 컴포넌트로 관리한다는 점이 인터렉티브한 페이지를 만드는 데 굉장히 유리하다고 느꼈고, 실시간으로 변하는 페이지 안의 데이터들을 리액트 후크를 사용해 편리하게 다뤘던 경험이 있습니다.

3. CMI 지원 동기가 궁금해요.

모집 공고를 보고 CMI에 들어감으로써 제가 얻을 수 있는 이점이 명확하다고 생각했습니다.

  1. 첫째는 협업 경험입니다. 지금까지 누군가와 함께 프로젝트를 진행한 경험이 없기 때문에 팀원들과 같이 프로젝트를 진행하는 과정에서 많은 시행착오를 겪으면서 협업에 필요한 태도와 기술을 얻고 싶습니다.

  2. 두 번째는 코드 리뷰 기회입니다. 협업 경험이 없었던 만큼 제가 짠 코드를 다른 사람에게 평가 받아 본 경험도 없습니다. CMI 활동을 통해 제 코드를 많이 지적받아서 더 효율적이고 유지보수가 원활한 설계를 할 수 있는 능력을 기르고 싶습니다.

  3. 마지막으로 실사용자가 있는 서비스를 운영할 수 있다는 것입니다. 지금까지 제가 진행한 프로젝트는 제가 가지고 있는 기기나 친구들의 기기 같은 한정된 환경 안에서 작동할 수밖에 없었습니다. CMI 활동을 통해 충림이 같이 사용자 수가 많은 서비스 운영을 경험하면서 다양한 실행 환경에서 발생하는 이슈와 버그들을 해결하는 역량을 기르고 싶습니다.

4. '충림이' 앱을 사용하면서 개선하고 싶었던 점이 있었나요?

  1. ios 환경에서 '원문 보기'나 '링크'를 눌렀을 때 뒤로 돌아갈 수 있는 방법이 없다는 것이 가장 불편했습니다. 원문 보기 페이지에 뒤로 가기 버튼이 있으면 좋겠습니다.
  2. 심리학과 홈페이지 주소가 바뀌어서 그런지 심리학과 공지사항이 업데이트 되고 있지 않습니다.

5. 평소에 충북대 재학생들을 위해 만들고 싶었던 서비스가 있었나요?

충북대 내에서 실험 참가자와 실험자를 연결해줄 수 있는 서비스를 개발하고 싶습니다. 저희 학과의 경우 졸업을 위해 졸업논문을 써야 하는데 논문을 써야 하는 선배들이나 실험 실습이 있는 과목을 수강하는 동기들을 보면 항상 실험 참가자를 구하지 못해 애를 먹습니다. 편의상 '에브리타임'에 모집 공고를 올리는 경우도 있는데, 실시간으로 글이 변하는 에타의 특성상 실험 참가 공지가 주목을 받지 못합니다. 부동산 앱처럼 참가자를 모집하고 싶은 사람이 실험 내용, 참가 보상 등의 정보를 아이템처럼 올리면 충북대 학생들이 참가하고 싶은 실험을 선택할 수 있는 앱을 구상한 적이 있습니다.

6. 팀 활동 경험이나 팀 내의 갈등을 적극적으로 해결해본 경험이 있나요?

1년 반 동안 충북대학교 오케스트라 동아리에서 피아노 연주자로 활동했습니다. 동아리에 처음 들어갔을 때는 지휘를 보며 박자를 맞추는 것이 익숙하지 않아서 그날 연습 전체를 망쳐버렸던 기억이 납니다. 그 이후로 오케스트라 연습에 나가는 것이 굉장히 두려웠습니다. 그런 상황에서 저는 악보 상에서 어떻게 연주해야 할 지 몰라 혼날 것 같은 부분은 아무리 사소한 것이라도 반드시 지휘자와 다른 단원분들께 질문했습니다. 질문이 오가는 과정에서 오케스트라 내의 다른 연주자분들과도 친해지게 되었고, 연주 실력도 탄탄하게 되어 학기말 공연을 잘 마칠 수 있었습니다.

7. 앞으로의 프로그래밍 공부 계획을 말해주세요.

올해까지는 현재 수강하고 있는 강의와 토이 프로젝트를 계속 진행하면서 프론트엔드 스택들이 어떤 방식으로 사용되고 어떤 흐름으로 웹 개발이 진행되는지에 대한 감을 잡을 예정입니다. 그리고 프로젝트 경험이 어느 정도 쌓이면 우선 자바스크립트를 시작으로 내부 작동 원리에 대해 공부하며 지식의 깊이를 쌓고 싶습니다. 또한 프론트엔드 기술 공부를 계속 하면서 리눅스 시스템이나 쉘 사용법과 같은 CS 분야 기초에 대해서도 틈틈히 공부할 계획입니다.

8. CMI 팀 활동을 하는 데 있어 장점이 될 만한 요소를 가지고 있나요?

충림이 서비스 제작에 사용된 기술 스택인 리액트와 Node.js 및 Express 프레임워크을 사용해 토이 프로젝트를 제작한 경험이 있습니다. 이 경험을 바탕으로 CMI 팀에서 사용하는 기술 스택을 익숙하게 배우고 다룰 수 있다고 생각합니다. 그리고 아직은 부족하지만 충북대학교에서 Git 및 GitHub 특강을 들으며 버전관리 방법을 익혔고 현재 토이 프로젝트를 진행할 때도 저만의 커밋 규칙을 만들어 최대한 그 규칙을 따르려고 노력하고 있습니다. 이러한 경험이 CMI 팀 내에서 협업을 진행할 때 도움이 될 것이라고 생각합니다.

지원서 기반 질문

프로젝트 진행 과정에서 겪은 어려움은 무엇인가요?

트위터 클론코딩 프로젝트의 경우 데이터베이스로 google의 Firebase를 사용하기 때문에 데이터 처리에 필요한 미들웨어나 데이터 구조를 직접 설계하지 못하고 항상 공식 문서에서 비슷한 기능을 찾아야 하는 어려움이 있었습니다.

그리고 최근에 트위터 클론 코딩 프로젝트에 '좋아요' 기능을 추가하면서 느꼈는데, 어떤 기능을 추가하기 위해 데이터 구조를 바꾸고 함수를 구현할 때 제가 구현하는 방식이 얼마나 효율적이고 깨끗하고 유지보수에 적절한지 평가받을 수 없다는 점이 어려움으로 느껴졌습니다.

위의 어려움을 해결하고자 노력한 과정은?

(트위터 클론 코딩 프로젝트에서 겪은 어려움에 대하여) 결국 Firebase에서 제공하는 최대한 비슷한 메서드와 API를 찾아서 구현하고 싶은 바를 만들었습니다. 앞으로 직접 백엔드를 설계하기 위해 현재 진행 중인 유튜브 클론코딩 프로젝트에서는 Node.js 기반 서버 제작을 공부중입니다.

(코드 리뷰 기회가 없는 것에 대하여) 우선 코드 리뷰 기회를 위해 충북대학교에서 진행하는 소프트웨어 비교과 프로그램에 최대한 참가하고자 합니다. 또한 교육 목적을 갖고 있는 오픈소스 프로젝트에 참여하여 PR을 통해 저의 코드를 리뷰 받으려고 합니다.

면접이 끝나고

지금 보면 어딘가 어설픈 답변들입니다🙃 실제 면접은 제가 준비한 질문보다 일반적인 질문을 하셨고(예: "개발자가 갖춰야 한다고 생각하는 역량은?") 대체로 편안한 분위기에서 진행되었습니다. 특히 트위터 클론 코딩 프로젝트에 대해 이야기할 때 실시간 대화 시스템을 구현한 방법과, React Hook 시리즈를 NPM에 배포한 것에 대해 많은 관심을 가지셨던 것 같습니다.

합격자는 저를 포함해 총 3명이었습니다. 충림이 운영진을 새로 선발한 이유는 운영진을 맡았던 분들이 직장을 다니게 되면서 충림이 서비스를 관리하기 어려워졌기 때문이라고 합니다. 이제부터 진행되는 스터디 기간 동안 타입 스크립트를 비롯해 CMI 팀 내에서 사용하는 기술 스택을 익히기 위해 매일을 보내야겠습니다.

사족

길고 긴 캠퍼스의 여름 방학도 슬슬 끝나가고 있습니다. 이제 이 학교에 들어온 지 3년 반이 되어갑니다. 파이썬으로 가위바위보 게임을 만들던 심리학과 학부생이 웹 프로그래머가 되겠다고 결심한지도 반 년이 조금 넘어갑니다. 돌이켜보면 촉박하게 살아온 것도, 여유롭게 살아온 것도 아닌 애매한 긴장감과 여유 속에서 살아온 것 같습니다.

이번 학기에는 CMI 팀 활동 외에도 학교에서 개설된 Java 기초 프로그래밍 강의를 수강할 예정입니다. 2021년 후반기도 완벽보다는 한다는 것 자체를 목표로 삼으며 살아가고 싶습니다.

profile
프론트엔드 웹 개발자를 목표로 하고 있습니다.

0개의 댓글