들어가며

안녕하세요. 저는 개발2팀 빌링파트에서 일하고있는 사람인 IT 공채 1기 최재우입니다. 작년 7월 인턴을 시작으로 어느덧 사람인에 입사해 개발한 지 9개월을 넘기고 있습니다. 😀

취업 준비로 힘들어하던 게 바로 엊그제 같은데 저희 IT 연구소 소장님이 좀 있으면 사람인 개발자 공채2기를 모집한다는 말씀을 해주셨습니다. 그래서 사람인에이치알에 관심이 있으신 신입 개발자분들에게 조금이나마 도움이 되고자 이 글을 쓰게 됐습니다.


3개월 인턴 생활

먼저 간단히 인턴 생활이 어땠는지 설명드리겠습니다.

인턴 시작 첫날 떨리는 마음으로 회사로 출근했습니다(첫날부터 교통 체증을 예측하지 못해 10분 지각했답니다…)

인턴의 시작은 사원증을 받고 사람인 인턴 과정에 관해 설명을 듣는 것부터 시작합니다. 이후 IT연구소로 이동하여 멘토님과 같이 회사 생활에 필요한 기본적인 PC 설정을 진행하고, 앞으로의 전반적인 인턴 생활, 카페 이용 등 얘기를 하며 하루가 정신없이 가게 됩니다.

인턴 과정의 계획된 일정에 따라 사람인의 각 개발 리더들의 강의를 듣게 됩니다. 그리고 대망의 1차 과제를 선정하게 됩니다.

1차 과제

1차 과제는 개발 리더들이 정해준 여러 개의 개발 주제 중 하나를 선택해 구현하는 방식으로 진행됩니다. 저는 Shortening URL(단축 URL) 과제를 선택했고, 이 과제를 통해 PHP와 Laravel이라는 프레임워크를 처음 사용해보았습니다.

Shortening URL은 간단히 설명해서 사이즈가 큰 URL을 짧은 URL로 바꿔주는 서비스를 의미합니다. 기존에 나와 있는 대표적인 서비스는 Bitly라는 서비스였습니다. 서비스를 살펴보던 중 Shortening URL 서비스뿐 아니라 회원용 대시보드도 제공하고 있어 저는 Bitly를 벤치마킹하는 방향으로 프로젝트를 진행했습니다.

  • Bitly 대시보드

cjaewoo_bitly.png

기존에는 Java를 많이 사용했었지만 이번 1차 과제를 해보면서 하나의 언어를 잘 알고 있으면 다른 언어를 배우는 데는 많은 시간이 들지 않는다는 것을 배웠고, 각 언어마다 장단점이 분명히 있고 이것을 알고 적절한 언어를 선택하는 것도 개발자로서 중요하다는 것을 알았습니다.

그렇게 1차 과제를 진행하면서 멘토님과 같이 코드리뷰를 진행하며 제가 부족했던 점이 무엇인지 또 어떻게 하면 더 간단하게 코드를 짤 수 있는지에 관해 얘기해보며 짧은 기간 동안 성장할 수 있던 기회였습니다.

  • 비로그인 메인 화면

cjaewoo_first1.png

  • 유저 대시보드

cjaewoo_first2.png

  • 관리자대시보드

cjaewoo_first3.png

2차 과제

1차 과제가 마무리가 된 후 인턴들은 각 개발팀에 배치되고, 각 팀에서 주어지는 업무를 수행합니다. 저는 개발2팀에 배치되었고, 사람인에서 서비스중 기존 인적성 검사 관리 시스템 리팩토링하는 업무를 팀원분들과 같이 진행하게 되었습니다.

업무를 수행하면서 다음과 같은 경험을 해보았습니다.

1. 기본적으로 개발에 들어가기전에 개발 일정(WBS) 작성

개발에 들어가기전 내가 개발할 부분에 대해 일정을 산출합니다. 이 과정을 처음으로 해보면서 내가 이 기능을 만드는데 얼마나 걸릴지를 예측해야하는 어려움이 있었지만, 업무를 진행해보면서 어떤 작업은 좀 더 빨리 끝낼 수 있구나, 어떤 작업은 생각보다 더 걸리는구나등 업무 일정의 감을 기를 수 있었습니다.

2. JIRA를 통한 프로젝트를 관리

cjaewoo_jira.png

처음 인턴을 시작했을 때 JIRA가 무엇인지도 몰랐습니다. 😂 프로젝트 관리 소프트웨어라는 것을 알고 나서도 이걸 어떻게 사용하는거지 라는 물음이 한동안 존재했었습니다.

하지만 업무를 진행하면서 내가 처리해야할 일을 부여받고, 이것을 언제까지 마무리 할 것인지, 내가 지금 하고 있는일이 무엇인지 관리됨으로써 팀 작업을 명확하게 파악할 수 있다는 것을 깨달았고 이것이 협업 과정에서 매우 중요하다는 것을 알게됐습니다.

3. Git을 사용하여 팀원분들과 협업 및 배포

기존에 학교에서 프로젝트를 할 때는 주로 혼자 작업을 하니 Git에 혼자 Commit하고 혼자 Push하다보니 Git으로 협업하는 경험이 다소 부족하였는데, 이번 업무를 통해 각자의 작업 Branch를 만들고 각자의 작업을 병합하는 과정을 해보면서 브랜치 작업, Conflict 처리, Git 브랜치 전략등을 익히면서 Git에 좀 더 익숙해질 수 있는 계기가 됐습니다.

4. 코드 리뷰

이 과정에서 특히 좋았던 것은 코드 리뷰였습니다. 팀원분들과 코드 리뷰를 진행하면서 기본적인 CRUD를 작업해도 코드를 좀 더 간결하고 효율성있게 짜는 방법이 있다는 것을 깨달을 수 있었고, 서로의 코드를 보며 더 효율적인 코드를 공유함으로써 제 스스로도 성장할 수 있는 느낌을 받았습니다.

수료 및 정규직 전환!

인턴 과정이 모두 마무리되고 마지막에 최종 면접을 거치고 인턴 과정이 모두 끝이 났습니다. 그리고 얼마 뒤 최종합격 연락을 받고 저는 개발2팀 빌링파트에 배치되어 일을 하게되었습니다. 😀

cjaewoo_pass_mail.png


입사후 6개월

인턴이 끝나고 팀에 배치되어 업무를 한지 6개월이 됐습니다. 시간이 정말 말도 안되게 빨리 간것 같습니다.

여기서는 제가 속한 개발2팀 빌링파트 소개사람인 개발자로서 좋은점에 대해 써보려합니다.

빌링 파트

cjaewoo_product_page.png

여러분들이 매일 보는 회사 채용 공고 또는 인적성검사는 기업에서 위 사진과 같은 사람인의 상품을 구매함으로써 여러분들에게 노출되거나 시험이 응시된다는 것을 알고계신가요?

저희 개발2팀 빌링파트는 사람인에서 구매할 수 있는 상품 페이지, 결제 페이지등 상품, 결제 관련된 페이지 전반을 개발하고, MSA로 나눠진 여러개의 결제 API서버를 개발하고 있습니다.

어떤 기술을 사용하나

사람인 IT연구소 개발자는 기본적으로 풀 스택(Full Stack)으로 개발을 진행합니다.

cjaewoo_tech.png

저희 파트가 담당하는 부분에서 프론트는 PHP + Vue로 이루어져있고, 백엔드 API서버는 모두 Spring Boot로 이루어져 MSA로 분리되어있습니다. 그래서 저희 파트는 PHP + Vue + Spring Boot 세가지를 모두 사용하며 작업하고 있습니다. (처음 팀에 배정받고 환경 설정을 하는 과정에서 Clone받을 프로젝트가 너무 많아서 당황했던 기억이….) 그리고 Mysql, Redis, Kafka등 다양한 기술들을 사용하여 사람인 데이터를 관리하고 있습니다. 마지막으로 프로젝트 배포는 GitLab CI/CD를 통해 배포가 이루어지고 있습니다.

개발 환경은 어떠한가

cjaewoo_jetbrain.png

저희 사람인 IT연구소의 작업 환경은 노트북과 모니터2대로 작업을 하게됩니다. IDE를 어떤 것을 사용할지 궁금하실텐데 IDE는 회사에서 Jetbrain All Products Pack 라이센스를 구매해주기 때문에 모든 Jetbrain IDE를 사용이 가능하답니다. 저 같은 경우는 PHPStorm, IntelliJ, DataGrip을 주로 사용합니다.

사람인 개발자는 어떻게 일하나

사람인은 위에서 말했듯 JIRA를 사용하여 프로젝트가 관리되고 해야할 작업이 배정됩니다. 하나의 작업은 기획, 디자인등 다양한 분들과 협업을 통해 이루어집니다.

  • JIRA 칸반에 할당된 업무

cjaewoo_canban.png

일반적으로 기획자분이 작업을 추진하고 기획서를 작성하고 개발자 분들과 디자이너 분들은 기획을 이해하여 개발 일정을 수립하고일정에 맞게 개발과 디자인을 진행하게됩니다. 이러한 과정속에서 수많은 의견을 주고받으며 커뮤니케이션을 하게됩니다.

  • WBS 예시

cjaewoo_wbs.png

이제 개발이 모두 완료되었다면 바로 배포…가 아닌 QA를 진행해야합니다. QA를 진행하면서 개발하면서 누락된 작업, 에러등을 하나하나 찾아내서 해결하게됩니다.

QA까지 모두 완료되고 개발이 완벽하게 끝났을 때 이제 사람인 서비스에 배포를 하게 됩니다.

6개월동안 일을 하며 느낀점

정규직이 된후 팀에 배치받고 제가 처음으로 한일은 사람인 기존 시스템을 이해하는 것이었습니다.

결제 시스템인 만큼 이해해야되는 범주가 많이 거대했습니다. 여기에 위에서 말한 MSA로 이루어진 많은 API서버와의 통신등 해석해야할 것이 너무 방대했습니다.(한달은 간단한 업무를 진행하며 사람인 시스템을 이해하는데 시간이 다갔답니다…)

이때 큰 도움이 되었던것이 사내 Confluence WIKI였습니다. 기존 코드를 작성한 개발자분들이 정리해놓은 글을 보며 하나하나 천천히 시스템을 이해하고 코드를 해석하여 업무에 투입될 준비를 하였습니다.

이러한 과정을 겪으면서 코드 분석 능력이 중요하다는 것을 느꼈고, 또한 앞으로 내가 상세한 주석과 WIKI 문서작성 습관을 키우는 것이 저의 동료 개발자분들에게 큰 도움이 될 수 있다는 것을 깨달았습니다.

cjaewoo_confluence.png

이렇게 6개월 일해오면서 저는 제 자신이 개발자로서 성장하는걸 느끼며 회사에 만족하며 다니고 있습니다.

사람인은 현재도 소수 정예 길드를 통해 유저에게 더 나은 서비스를 제공하기 위해 노력한다는 것과 새로운 서비스를 꾸준히 개발하는걸 보며 계속해서 IT기업으로서 성장하려 노력하는 회사라는 것을 느끼고 있습니다,(최근에는 JumpIt이라는 개발자 채용 모바일 어플을 런칭했답니다. 😀) 이로 인해 사람인이라는 회사가 제 자신도 같이 성장시켜줄 수 있는 회사라는 믿음이 생겼답니다.

자기 개발

IT연구소는 자기 개발을 위한 학습에 대해 아낌없이 지원한다는 것을느꼈습니다. 많은 IT 강의 플랫폼의 수강료를 지원하고 또한 업무 시간에 다양한 IT개발 컨퍼런스에 참여할 수 있습니다. 최근에는 인프런 비즈니스에 가입되어 무제한으로 원하는 강의를 들을 수 있게 되었습니다. 저도 퇴근하고 틈틈이 강의를 들으면서 회사 업무에 필요한 기술들을 공부하며 자기 계발을 하고 있답니다.

cjaewoo_lecture.png


마치며

지금까지 저의 인턴 생활과 사람인 개발 조직이 어떻게 일해오는지에 대해 보면서 사람인에 대해 궁금하신게 해소되셨으면 좋겠습니다.

끝으로 사람인 채용을 준비할 때 채용담당자 분들에게 잘보일 수 있는 자그마한 팁을 드리고자합니다.

블로그 및 Github 정리

먼저 여러분들이 학부 또는 개인적으로 진행했던 프로젝트를 Github, 개인 블로그에 잘 정리하셨으면 좋겠습니다. 채용 결정권자들은 여러분들의 Github, 개인 블로그를 보면서 그 지원자가 개발에 관심이 있는 사람인지 많이 보신다고합니다.

탄탄한 기본기

저희 팀은 폴리글랏(polyglot) 프로그래밍을 지향하고 있습니다. 폴리글랏은 다양한 프로그래밍 언어를 사용하는 것을 의미합니다.

어떤 개발 언어를 사용하더라도 자료구조, 알고리즘, 디자인 패턴, 클린코드와 같은 기본기가 좋다면 기술환경이나 개발 언어가 바뀌더라도 빠르게 적응 할수 있다고 합니다. 하나의 언어에 얽메이지 않고 기본기를 갈고 닦는것이 중요하기에 여러분들이 사용하는 주력 언어를 통해 프로그래밍 기본기에 대한 이해도를 잘 어필하는 것이 중요하다 생각합니다

긴글 읽어주셔서 감사합니다. 😄 이 글을 통해 사람인에 대해 궁금하신점이 조금이나마 해소되셨길 바랍니다.