본문 바로가기
회고

웹 서버 개발자가 된 30대 비전공자의 면접 회고 및 앞으로의 계획

by 딱구킴 2023. 2. 18.

아직 아무런 커리어도 없는, 심지어 비전공자인, 가진건 열정뿐인(?) 제게, 감사하게도 잡 오퍼가 들어왔습니다. 

 

드디어 10개월의 노력이 결실을 맺었네요. 너무 감동적인 순간이었습니다.

 

최종 합격과 동시에 여태 공부하느라 저를 갈아넣은 탓인지, 아니면 긴장을 너무 했던 탓인지, 편도염이 쎄게 와서 이 참에 일주일 간 푹 쉬어버렸습니다. 3월 6일부터 출근하기로 하였는데, 기대감 반 걱정 반입니다. 앞으로 어떻게 하면 개인적으로 잘 성장 해나갈 수 있을지, 또한 나를 믿고 오퍼를 준 회사에 어떠한 기여를 할 수 있게 될지, 앞으로의 계획과 목표를 정리 해보고자 합니다. 


면접 회고

로켓 펀치 - 15건 지원, 전부 탈락 

저는 스타트업에 가서 함께 성장하는 것이 목표였기 때문에, 초반에는 로켓펀치를 중심으로 많은 지원을 했었습니다. 하지만 슬프게도, 15건을 지원했지만 전부 연락을 받을 수 없었습니다.

 

전부 탈락을 하게 되면서, 자존감이 많이 낮아졌던 것은 사실입니다. 하지만, 자존감이 낮아진 채로 멈춰있을 수는 없었기에, 탈락된 이유를 객관적으로 판단 해보려고 노력했습니다.

 

가장 큰 이유는 스타트업은 "바로 일을 시작할 수 있는 인재"가 필요했을 것이기 때문이었을 것이라고 생각합니다. 해당 기준에 제가 부합하지 못했던 것 같아요. 저는 기껏해야 CRUD나 짤 수 있을 뿐이고, 서비스를 해본 것도 아니며, 실무적인 부분이라고는 1도 모르는(현재도 모름) 그런 사람이었기 때문이죠. 하지만, 저는 그저 열정과 꾸준함, 공부를 열심히함(?)만 내세워 놨습니다. 하지만, 스타트업에서 필요한 역량은 이게 아니었던 것이죠.


원티드 -  74건 지원, 4건의 면접 및 3건의 최종 합격

로켓펀치는 전부 탈락의 고배를 마셨으나, 원티드에서는 감사하게도 4건의 면접을 경험할 수 있었습니다. 각 회사를 A, B, C, D로 표현하여 내용을 작성 해보겠습니다. 제 주관적인 생각이 들어가기 때문에 회사의 정확한 이름을 언급하지 못하는 점, 양해 부탁드립니다.

 

A 기업

해당 회사는 제가 비전공자인 것을 감안하여 질문을 해주신 것 같았습니다. 객체 지향이 무엇인지 아는지, 제가 수행했던 프로젝트에 대한 내용들을 주로 물어보셨습니다. 총 30분정도 수행했었고, 모두 친절하셨기에 면접 경험 자체는 좋았습니다. 합격 연락은 좀 늦게 주셨는데, 저는 그 때 당시 우테코 프리코스를 수행하고 있었기에 거절의 말씀을 드렸습니다. 또한, 면접 경험이 매우 좋았던 기억이 있어 취준하시는 지인분께 회사를 추천드렸고, 그 분께서 합격하셔서 다니게 되셨습니다 :)

 

B 기업

아주 면접 경험이 좋지 않았던 회사입니다. 부정적인 말이란 말은 다 들었던 것 같습니다. 허허.. 나이, 비전공 등 모든 방면에서 공격을 받았지만, 다년간 즐겼던 롤(League Of Legend)이라는 게임과 대학원 재학 경험 덕분에 큰 상처는 받지 않았던 것 같습니다. 한귀로 듣고 한귀로 흘렸어요.

 

이 글을 읽으시는 모든 분들도, 무례한 면접에 대해 멘탈적인 타격이 없으셨으면 좋겠습니다. 무례한건 상대방이지, 저희가 잘못한건 없습니다. 그저 해당 직군이 좋아서 도전을 할 뿐인걸요! 저는 저의 도전을, 그리고 다른 분들의 도전을 응원합니다. :)

 

아무튼, 웃기게도, 해당 회사에 최종 합격을 했습니다.(?) 솔직히 기술적인 부분에 대한 질문들이 거의 오고가지 않았고, 그저 저만 공격당했던 그런 면접이었는데 말이죠. 하지만, 아무리 급하다 하더라도 저런 회사는 가고싶지 않았습니다. 가면 어떤 취급을 받을지 눈에 훤했기에 거절하였습니다.

 

C 기업

해당 기업은 사실 지원 할 때까지만 해도 서류 합격을 하게될 줄 몰랐던 곳이었습니다. 시리즈 B 투자를 받기도 했고, 로켓펀치에서 모든 스타트업에서 떨어졌던 기억이 있기 때문에, 별 기대를 하지 않았었죠. 하지만 감사하게도 서류를 합격했고, 처음으로 과제테스트를 수행해볼 수 있었습니다. 

 

5일의 기간을 주셨는데, 그 기간동안 거기에만 몰두해서 수행할 만큼 간절했던 기억이 있습니다. 과제 테스트도 운좋게 통과한 뒤 면접까지 볼 수 있었는데요. 결과적으로 탈락했습니다. 이유는 제가 많이 부족했던 탓이었던 것 같아요.

 

그 때를 잠시 회고해보자면,

  • 테스트를 수행했던 과제에 대해, 면접을 보기위해 준비했던 내용들과 면접 때 질문을 받았던 내용들이 달랐습니다.
    • 솔직히 이는 다른 말로 화제전환을 해서, 제가 주로 했던 고민들에 대한 내용을 들려줄 수 있었을 것 같습니다. 이 부분이 매우 아쉬웠기 때문에, 다음 면접때는 어떻게 말을 해야 내가 유리한 쪽으로 화제를 전환할 수 있을까? 를 고민하게 되었습니다. 
  • 생각보다 제 노션을 너무 관심있고 깊게 봐주셔서, 제가 그에 대한 대답을 제대로 하지 못했습니다.
    • 노션에 대한 질문을 받았던 적이 없었던 저는, 깊게 보셨을거란 생각을 전혀 하지 못했고, 대답을 제대로 하지 못했습니다. 반면, 얻을 수 있던 내용도 있었는데, "제가 문제해결 내용들을 정리는 해놨지만, 그에 대해 깊게 파고들지 않았었다"는 반성 포인트(?)를 얻을 수 있었습니다.
    • 이에 대해, 문제를 해결할 때 조금 더 원리적으로 깊게 알아보시는게 좋을 것 같다는 피드백을 받았습니다. 해결도 중요하지만, 왜 발생했고, 이렇게 하면 왜 해결되는지 등을 더 자세히 파악해야 할 것 같습니다. 
  • 전체적으로 말 자체를 잘 하지 못했다.
    • 면접 자체를 너무 많이 긴장하고 봤던 것 같습니다. 그래서 했던 말을 또하기도 하고, 설명을 너무 장황하게 했던 것 같아요. 긴장을 하지 않는 것이 중요한데, 그게 참 어려운 것 같습니다. 해결 방법은, 그저 면접을 많이 보는 수밖에 없는 것 같습니다. 

면접관님들 께서는 제 긴장을 풀어주시려고 가벼운 농담도 던지시고, 더 편안히 해주시려고 노력하셨던 것 같아요. 면접 경험은 매우 좋았고, 채용 프로세스 또한 정말 잘 구성되어 있었습니다. 전체적으로 그저 제가 잘 보지 못한 면접이었습니다. 해당 기업은 당연하게도 탈락하게 되었습니다. 

 

D 기업 

원티드에서 경험했던 마지막 면접입니다. 해당 기업도 채용 프로세스가 매우 좋았습니다. 기술 면접 + 컬쳐핏 면접을 하루에 전부 수행하는 원데이 면접을 수행했습니다.

 

기술 면접에서, 기술적인 질문이 오고갈 때 면접관 분들께서 정말 편하게 해주셔서 대답을 잘 할수 있었습니다. 기술적인 질문은 신입급에게 하는 쉬운 질문들이 오고갔던 것 같습니다. 

 

질문들을 대략 정리 해보자면,

  • 자바의 자료구조들의 차이점 (List, Set, Map) -> Big O에 대해 주로 질문하셨습니다.
  • PriorityQueue의 특징과 Big O
  • 특정 환경에서(기억이 안납니다..하하) LinkedList의 Big O
  • 프로세스와 스레드의 차이 
  • 자바는 멀티 프로세스인가 멀티 스레딩인가 
  • JPA의 N+1 문제는 왜 발생하는가 
  • 이펙티브 자바를 읽었을 때, 가장 기억에 남는 챕터 -> 동시성 챕터를 말씀드렸습니다.
  • 스터디원들, 혹은 프로젝트 팀원들과 문제가 생겼을 때 어떻게 해결하였는가 
  • 업무를 수행하는 중, 추가적인 업무가 들어오면 어떻게 처리하는가 
  • 회사가 사용하던 방법과, 변경 시 좀 더 효율적인 비교적 최신의 방법이 있다. 하지만, 상사는 이러한 이유로 회사가 사용하는 방법을 사용하길 바란다. 이런 경우에는 어떻게 할 것인가 
    • 이 부분은 제가 전 직장(원래 전공)에서 새로운 기술을 도입했던 경험에 대한 꼬리 질문이었습니다. 

등의 질문을 받았습니다. 

 

다음으로 피플팀의 책임자분과 1:1로 컬쳐핏 면접을 보았는데, 너무 좋은 경험을 할 수 있었습니다. 특히, 피플팀에서 "주니어들의 성장"에 많은 관심을 갖고 있다는 말을 듣고 감동 받았습니다. 그리고, 회사에 대한 자세한 내용들을 들을 수 있어서 좋았습니다.

 

해당 기업도 운좋게 합격을 할 수 있었습니다. 다만, 제가 경험하고 싶은 직무가 다음에 작성할, 최종적으로 가기로 결정한 기업에 더 가까웠기 때문에 거절의 말씀을 드렸습니다. 혹시나 지인 분들이 해당 기업에 대한 평을 묻는다면, 면접 경험은 매우 좋으니 면접은 보셨으면 좋겠다라고 말씀드리고 싶습니다.

 

그 외에도..

그 외에도 라이브 코딩을 경험 해보았었고(아무것도 못해서 광탈), 아무것도 대답하지 못한 면접도 있었습니다(알고리즘에 대한 지식이 전무할 때, 알고리즘을 중점적으로 물어보시는 면접을 봤음). 이를 기점으로 "기본기에 대한 학습"이 중요함을 절실히 느꼈고, 많은 스터디를 통해 기본기를 갈고 닦는 데 많은 시간을 보내게 되었습니다.

 


점핏 - 23건 지원, 2건의 면접 및 1건의 최종 합격 

점핏에서는 제가 일을 관둔지 1개월 만에 면접 경험을 하게 해주었던 A 기업과, 현재(23년 02월 기준) 면접을 보고 최종 합격을 해서 최종적으로 입사를 결정한 B 기업, 총 2건의 면접을 볼 수 있었습니다. 

 

A 기업 

해당 기업은 제가 지금보다 더 준비된 것이 없었음에도 불구하고 면접 경험을 하게 해주셨던 너무 감사한 회사입니다. 지금은 스터디라도 많이 수행해서 기초를 조금이나마 다져놓기라도 했지, 그 때 당시에는 정말 아무것도 없었거든요. 민망하게도, CRUD나 해둔 게시판이 전부였습니다.

 

제가 그 때 까지만 해도, 개발자라면 "새로운 기술 습득해서 써보는게 최고지"라는 바보같은 생각을 하고 있을 때였는데요. 해당 기업의 면접을 기점으로 아예 방향을 틀어서 학습하게 되었습니다. 정말 여러모로 감사한 기업이었네요. 

 

그 때 받았던 질문들은 다음과 같습니다. 

  • 멱등성이 장애 처리에 있어서 왜 중요한가 
  • @Transactional은 누가 실행시켜주는지 아는가
  • 함수형 프로그래밍을 알고있는가 
  • 랜덤 String 토큰과 JWT 토큰의 차이점은 무엇인가 
    • (차이점 설명 후) 그렇다면, 둘은 별 차이가 없을 것 같은데 왜 JWT를 사용하는가 -> 해당 내용은 전혀 대답하지 못했고, 아직도 간간히 생각 중입니다. 정확한 이유를 아직은 찾지 못했네요. 
  • 세션과 JWT의 차이 
  • REST API가 뭔데 그걸 경험한 사람을 찾는 것인가 

등등.. 아주 기초적인 내용들도 많이 여쭤보셨었는데, 이 때 제가 "기초 내용에 대한 지식이 아주 많이 부족하구나"를 느꼈습니다. 당연하게도 탈락했지만, 학습의 방향성을 재 조정하는 계기가 되어, 결국 웹 서버 개발자로의 커리어 시작을 할 수 있게 되지 않았나 생각합니다. 언제 한번, 면접을 봐주셨던 분들을 만나뵐 수 있게 된다면, 진심으로 감사의 말씀을 드리고 싶습니다. 해당 기업의 면접 기회조차 주어지지 않았다면, 저는 저에 대한 객관화를 하지 못했을 것 같습니다. :)

 

B 기업 

해당 기업이 제가 입사하기로 결정한 기업입니다. 저는 기업을 선택할 때 저만의 기준을 정한 상황이었고, 조건이 충족되다 못해 넘쳐 흘러(?) 주저 없이 입사를 결정하였습니다. 

 

제가 기업을 볼 때 주로 체크했던 조건들은 다음과 같습니다.

  • 팀장님, 혹은 팀원 분들이 스터디에 대한 열정이 있으신지 
  • 기업의 "학습"에 대한 지원은 어느정도로 해주시는지 
  • 면접 경험이 좋은지, 면접관님과 티키타카가 잘 되는지 
  • 코드 리뷰가 이뤄지는지 

등등, "개인의 성장 환경" 뿐만 아니라, "기업이 성장 환경"이 마련되어 있는지를 중점적으로 확인했습니다. 아주 좋았던 면접 경험에 더해 저를 위해 신입 TO를 마련 해주실 만큼, "저를 좋게 봐주셨다" 라는 느낌을 강하게 받아 주저 없이 입사를 결정했습니다. 

 

면접 때 받았던 질문들은 주로 제 이력서를 기반으로 물어보셨습니다. 주로 기억나는 질문들은 다음과 같습니다.

  • 이력서에 "연구원의 길을 걸었기 때문에 트러블 슈팅에 익숙하다"라고 적혀있는데, 이 부분이 개발에서의 트러블 슈팅과 어떠한 비슷한 부분이 있는가 
  • 동시성과 병렬성의 차이 
  • 이펙티브 자바 스터디에 대한 질문 
    • 제네릭스 - T 혹은 E 라고 적힌 제네릭 타입이 사실은 어떤 타입으로 취급되는지(Object), 런타임에 제네릭 타입은 어떻게 되는지(소거)
    • 동시성 - ReEntrantLock을 아는가 
    • 스터디 수행 시 스터디원들과 문제는 없었는지, 있었다면 어떻게 해결하였는지
  • 다양한 경험들에 대한 질문
    • 귀한 경험을 해보셨다고 말씀을 해주시면서, 좋게 봐주셨던 것 같습니다. 회고를 해보니, 이러한 팀장님의 말씀 한마디 한마디가, 저를 더 이 회사에 오고싶게 만드셨던 것 같네요. :)
  • 일을 대하는 태도에 대한 질문 
    • 업무가 바쁜데, 추가적인 업무가 들어오면 스케줄링을 어떻게 할 것인지 -> 저는 빠르게 끝나는 일의 경우에는 빠르게 처리해서 끝낼 것 같다 하였고, 이외의 경우 중요도를 판단할 것 같다고 했습니다. 물론 경우마다 다르겠지만, 둘 다 중요할 경우에는 태스크를 최대한 쪼개서 스케줄링을 해보려고 시도할 것 같다고 대답하였습니다.
  • 제출한 코드에 대한 리뷰
    • 아래의 코드에 대해 질문을 하셨던 점이 가장 기억에 남습니다. member.isAuthorOf(post)를 왜 Post가 아닌 Member를 기준으로 설계를 하셨는지 여쭤보셨는데, 제가 제 의도가 기억이 안나서 답변을 제대로 못 드렸습니다. 다시 자세히 살펴보니, Post : Member 가 다대일 양방향 관계였기 때문에, Member의 contains 메서드를 사용하기 위함이었던 것 같습니다. 하지만, Post 기준으로 설계를 하는 것이 좀 더 합리적인 선택이 되었을 것 같습니다.
      • Post에서 확인하면 Member를 equals로만 비교하면 끝이지만, Member에서 확인할 경우 contains를 이용해서 List에서 탐색해야 하기 때문입니다.
private void validateAuthor(final Post post, final Authentication authentication) {
        Member member = findMemberBy(authentication);
        if (!member.isAuthorOf(post)) {
            throw new IsNotAuthorException();
        }
    }

앞으로의 계획 

이제는 어엿한(?) 웹 서버 개발자가 되었으므로, 앞으로 해당 기업에 어떤 기여를 할 수 있을지를 잘 생각해야 할 것 같습니다. 물론, 출근을 해봐야 어떤 방식으로 업무가 진행되는지를 알 수 있겠지만, 개인적인 학습 방법에 대해서라도 미리 계획을 해보려고 합니다.

 

회사 업무

회사 업무 파악에 있어서 아래의 내용들이 가장 중요하다고 합니다(by 갓영한).

  • DB 테이블과 비즈니스 프로세스를 파악하기
  • 주어진 일만 하지 않기 
  • 단계별로 올라가기 
  • 공부 시스템 만들기 

 

그리고 인상 깊은 주니어는 다음과 같다고 합니다.

  • 도전을 두려워하지 않는 개발자
  • 변경이 될 때 적극적으로 임하는 개발자 (장애가 나는게 두렵더라도 도전하자)

 

저는 그래서, 입사하게 되면 가장 먼저 DB 테이블과 비즈니스 로직의 흐름을 파악하는 데 만전을 기할 것 같습니다. 그리고 나서 UML 등을 그려, 시각화를 해서 자료를 정리 해두려고 합니다.

  • 먼저 큰 아키텍처와 흐름을 파악하고, 세부적인 내용들을 파악하면 좋을 것 같습니다.
  • 흐름 파악 시, 이해가 가지 않는 부분들은 적극적으로 질문하되, 잘 정리된 질문을 하려고 노력할 것입니다. 즉, 좋은 질문을 해서 사수분(혹은 팀원분)께서 대답하시기 수월하도록 해야 할 것입니다.

 

DB 테이블과 비즈니스 로직의 흐름을 모두 파악했다는 가정 하에, 내가 어떠한 일들을 추가적으로 할 수 있을지를 생각할 것입니다. 즉, 저는 능동적인 개발자가 되기 위한 노력을 하려고 합니다. 제 수준에서, 추가적으로 할 수 있는 일들이 무엇이 있을지를 생각해야 할 것 같네요.

  • 성능 측정 도구를 이용하여, 성능을 측정하고 개선하는 방법을 고안 
    • nGrinder를 이용한 TPS 측정 (nGrinder와 TPS에 대한 이해 및 학습 필요)
    • APM tool을 이용한 애플리케이션 성능 모니터링 (scouter, pinpoint ... 등 성능 측정 도구에 대한 이해 및 학습 필요)
  • 테스트 자동화가 아직 되어있지 않다고 했는데, 이를 효율적으로 도입할 수 있는 방법을 고안 (너무 큰 일이 될 수도 있기에, 건의 시 주의해야 함. 해야 할 이유가 확실하다고 생각이 들 때 건의를 하는 게 좋을 것 같다.)
  • 개인적으로 스터디를 하거나 프로젝트를 할 때 아직 고려 해보지 못했던 "동시성"에 대한 고려를 해보기 
    • 좋아요 기능을 구현해보는 연습을 하면서, 동시성에 대한 고려를 처음 해봤으나(스터디원 분의 의견으로... 내 스스로는 생각치도 못했다.) 도입을 어떻게 할지는 선택하지 못했고, 도입 조차 해볼 생각을 하지 못했다. 
    • 낙관적 락, 비관적 락 등을 이용해서, 애플리케이션 단에서의 동시성 처리와 DB 단에서의 동시성 처리가 어떻게 수행되어야 하는지 등을 공부해야 할 필요가 있을 것 같다. (JPA 환경)
    • Real MySQL, 자바 병렬 프로그래밍, 자바 최적화 등의 도서를 통한 학습이 필요할 것 같다. 동시성은 항상 흥미로운 주제다! 

 

그 외 단계별로 올라가기와 공부 시스템 만들기는 차차 생각해봐야 할 것 같습니다. 저도 실무가 처음인지라, 공부 방향성을 어떻게 잡아야 할지는 아직 잘 와닿지 않네요. 


개인적인 학습 

가능하다면 1일 1릿코드를 수행하고 싶습니다. 알고리즘에 대한 학습을 꾸준히 해보고 싶어요. 알고리즘 자체에 대한 공부는 다른 공부들에 비해 늦게 시작해서 아직 많이 부족하기 때문입니다. 

 

또한, 여러 도서들을 읽고 싶습니다. 일단은 새로 스터디를 수행하기로 예정된 책은 "HTTP 완벽가이드"입니다. 다음으로는 대규모 서비스 관련 도서들이나 UnitTest에 관한 도서를 스터디 주제로 삼고 싶습니다. (개인적으로 읽거나)

 

비전공자인 만큼 CS, OS와 네트워크 등 기본 베이스가 되는 지식은 다음의 책/강의들을 이용하여 꾸준히 학습하고자 합니다. 

  • 혼자 공부하는 컴퓨터 구조, 운영 체제
  • kocw 반효경 교수님 강의 
  • HTTP 완벽가이드 스터디 

 

그리고 주말을 이용하여 인프런에 사둔 토비님의 스프링부트, 백기선님의 디자인 패턴, 백기선님의 리팩토링 강의들을 꾸준히 챙겨보고자 합니다. 

 

물론, 이 모든건 건강을 해치지 않는 수준, 그리고 회사 업무에 방해가 되지 않는 수준으로 적절히 조정하여 수행 할 예정입니다. 회사에 입사하는 순간부터는 회사 업무가 주가 되어야 한다고 생각하기 때문입니다. :) 


운동을 통한 건강 챙기기 

취준생 시절에는 운동할 시간조차 아까워 운동을 하지 못했습니다. 덕분에 면역력이 많이 약해졌는데요... 결론적으로는 살짝 후회가 됩니다. 한시간이라도 운동할 시간에 배분할걸 하는 후회가..

 

자취방 근처에 공원이 있어, 매일 오전에 일찍 일어나서 줄넘기라도 가볍게 뛸까 생각 중입니다. 주 2회정도는 고강도 운동을 하고요.사실, 무엇보다도 운동을 가장 먼저 실천해야 할 것 같습니다. 항상 명심해야 합니다. 건강이 우선! 

 


저의 회고는 여기까지 입니다. 저의 경험 공유가 잘 되었을지 모르겠네요. :)

 

긴 글 읽어주셔서 감사합니다.

'회고' 카테고리의 다른 글

웹 서버 개발자에 도전하는 비전공자의 2022년 회고  (2) 2022.12.31

댓글