곰개발자
247
2019-05-26 11:11:38 작성 2019-05-27 20:22:26 수정됨
10
4253

문화가 좋은 회사를 고르는 법


제가 경력을 쌓으면서 개발자가 일 하기 좋은 문화를 가진 회사의 조건이 무엇 인가에 대해 정리해 보았습니다.

물론 면접을 볼 기회가 생긴다면 본인의 실력을 보여줘야 하는 것도 중요하지만, 회사가 어떤지 살펴보는 것도 중요합니다. 면접이 끝날때 쯤 5분이나 10분 정도의 질문 시간이 주어 진다면 기회를 활용하는 것이 좋아 보입니다. 아래의 질문들에 모두 다 할 수 있는 회사는 국내에서 찾기가 힘이 들지도 모르겠으나, 적어도 질문의 의도를 파악하고 인지한 뒤에 개선의 노력을 보여주는 회사일 경우 괜찮은 회사라는 것일 확률이 높습니다.

사실 개발자에게 좋은 회사란 평생 회사이기 보다는 본인의 성장에 어떤 발판이 되는 것일 겁니다. 그래서 돈은 가장 중요한 요소이지만, 그 이야기는 이 질문에서 제외하였습니다. 

회사의 아이템, 매출, 본인의 실력과 연봉의 상관관계는 이 주제보다 더 복잡한 내용이기 때문입니다.


1. 어떤 소스 컨트롤을 사용하고, 어떻게 활용하고 있습니까?

가장 기본이 되는 첫 질문입니다. 회사 면접관에게 이 질문을 했을 때 우리는 소스 컨트롤을 사용하지 않는다고 하면 그 회사는 가지 않는 것을 추천합니다. 문화적으로 봤을 때 개선의 여지가 너무 많거나 체계가 없을 가능성이 매우 높습니다.

소스 컨트롤을 사용한다고 하면 일단 적신호는 벗어나게 됩니다. 어떤 소스 컨트롤을 사용하는지는 별로 중요하지 않습니다. 하지만 한 회사에서 여러 종류를 사용하는 경우는 다시 적신호로 돌아가게 됩니다. 예를 들어 A 팀에서는 SVN을 사용하고, B팀에서는 github를 사용하면 적어도 회사의 커뮤니케이션에 문제가 있거나, 그걸 하나로 통합하는 것이 얼마나 중요한 일인지를 잘 느끼지 못하는 문제입니다.

적어도 괜찮은 회사일 경우는 최소 다음과 같은 답변을 하면 좋습니다. 이슈 트래킹을 통해 브랜치를 만들다는 답변 정도만 나와도 첫번째 단계에서는 합격점이 될 수 있습니다.


2. 코드 리뷰는 어떻게 합니까?

사실 제대로 된 코드 리뷰를 하는 회사는 많지 않습니다. 코드 리뷰를 한다라는 답변을 한다고 할지라도 그것이 어떻게 진행되고 있는지가 더 중요합니다. 일단 체크리스트를 통한 가이드라인을 잘 만들어 놓았는지, 정적 분석 툴과 코딩 스타일 체킹을 자동화 시켜서 진짜 코드 리뷰에 집중할 수 있게 해 놓았다면 훌륭한 편입니다. 그러나 무엇보다 중요한 것은 코드 리뷰는 master로 merge되기 위한 필수 조건이 되어야 한다는 것입니다. 

그래서 코드 리뷰를 정확하게 모든 사람이 따르는 경우, 그 회사는 매우 좋은 문화를 가졌다고 확신하는 편입니다. 


3. 유닛 테스트 Code coverage가 얼마나 되는 지요?

많은 사람들이 유닛테스트를 TDD로 오해하는 경우가 많습니다. TDD는 테스트 코드를 먼저 작성하는 방법론일 뿐 필수는 아닙니다. 그러나 감히 이야기 한다면, 유닛 테스트는 프로그램의 질을 결정하는데 있어서 매우 중요한 지표가 됩니다. 여기서 Code coverage에 관한 것이 품질과 어떻게 직접적으로 연관되어 있는지에 대한 주제는 논쟁이 될 수 있긴 하겠지만, 면접관이 Statement, Decision, Condition에 대한 설명과 모든 개발자가 유닛 테스트를 하고 있다면 그 회사는 매우 좋은 문화를 가졌다고 볼 수 있습니다. 이 질문은 2번 질문에서 좋은 답변이 나오면 3번은 당연히 따라오기 마련인데, 가이드라인을 잘 가지고 있다면 유닛 테스트가 코드 리뷰에서 걸러졌을 것이기 때문입니다.


4. CI/CD를 어떻게 하고 있습니까?

기본적인 목적은 개발자가 코드를 만드는데 온전히 집중할 수 있고, 불필요한 시간 낭비를 줄여주는 것입니다. 각 Branch별로 테스트를 독립적으로 할 수 있는가. Regression tests는 얼마나 많은 요구사항을 커버하는가. 메뉴얼 테스트가 Production에 배포 될 때까지 얼마나 필요한가. 

이 질문은 사실 회사에서 반복되는 작업의 자동화를 위해 조직이 얼마나 노력을 기울이고 있느냐 입니다. 이 자동화로 인해서 개발자에게 시간을 벌어주는 역할들을 하게 되는데, 이건 개발부터 배포까지 전체 컨테이너 벨트를 어떤 관점으로 보고 있느냐 입니다. 이런 꾸준한 노력을 하고 있는 회사의 경우, 가는 것을 추천드립니다.


위의 내용들은 제 개인적인 경험에 의한 것이긴 하나 그래도 좋은 문화를 가지는 회사를 선택함에 있어 도움이 될거라 생각합니다. 




16
15
  • 댓글 10

  • Heo Jun
    91
    2019-05-27 09:18:22

    좋은 글 감사합니다. 

    제가 다니는 회사는 위 내용들을 막 시작한 단계정도네요...

    0
  • 노올자
    489
    2019-05-28 09:42:17

    4가지 항목을 모두 하는 회사에 다니고 있는데... 

    문화가 좋다고는 말하기 어렵습니다. 

    회사의 규정이기에 형식적으로만 지키는 사람도 많고... 

    이런 저런 이유로... 부서장 묵인하에 안하는 사람도 많고...

    저런 형식마저 없는 회사 보다는 좋지만... 형식은 형식인가 봅니다. 


    3
  • 곰개발자
    247
    2019-05-28 10:51:29

    @노올자

    일리가 있는 말씀이긴 합니다. 전 그래도 제대로 모두에게 지켜지는 회사라면 문화가 좋다고 생각하는데, 작년에 Github에서 온 분의 강연을 들을 기회가 있었는데 개발자 한분이 코드 리뷰를 하기 위해 어떻게 사람들에게 지키게 해야 ( enforce ) 하는지 질문을 했는데, 강연자 분의 답변이 인상 적이었습니다. 

    지키게 하거나 강요를 하는 것은 단기적으로는 효과가 있을지 모르나 자발적인 모든 참여가 오는 지속성을 절대 이기지 못한다고요. 자발적 참여가 시간이 걸리더라도 제품의 퀄리티 측면으로도 많은 순기능을 한다는 것이죠. 

    특히나 한국 회사의 경우는 나이나 직책에 따른 수직 관계가 강한 편이기 때문에, 나보다 아래인 사람이 높은 사람을 지적 하는 것에 잘 못견디는 편이긴 합니다. 그리고 일정을 이유로 예외를 만들어 내고 기술적 빚을 생산해 내죠. 

    그래서 순수하게 자발적으로 저 4가지를 다 지키는 회사는 소수라는 것이 제 의견입니다. 

    1
  • 밀수나라
    413
    2019-05-28 12:03:25

    1번....sourcesafe 라면....? ㅋㅋㅋㅋ

    1
  • 노올자
    489
    2019-05-28 15:50:45

    @곰개발자

    맞습니다. 없는것 보다는 있는게 좋죠. 

    그러나, 말씀하신대로, 윗사람이 시켜서 혹은 회사의 규정이라서 그냥 형식적으로 하는것이 문제 입니다. 

    자발적으로 하시는 분들도 있지만, 대부분의 분위기는 "제 왜저래?" 입니다.

    자발적으로 귀찮은(?) 뭔가를 하게 하는건 매우 어려운것 같습니다. 


    0
  • kim
    322
    2019-05-30 02:39:36

    또 하나.. lint ..

    울회사 py 코드 푸시할라믄 flake8, pylint 두개 다 통과해야 하고

    유닛테스트 코드커버리지 80% 넘겨야 하는데 조낸 빡셈.

    해당 작업은 젠킨스에서 돌고 그거 통과하면 게릿 +1 되어서 비로소 Ready For Review 를 걸 수 있다..

    사람에게 갈굼당하는게 아니라 시스템에 갈굼당하니 불평도 못함..

    0
  • exexexe
    126
    2019-05-31 09:52:32

    저런 문화를 가지는 회사가 몇이나 될까...

    있다고 한들 내가 들어갈 수 있을까....

    대부분 허접한 영세한 회사에서 주먹구구식으로 일하고 있을텐데...

    허접한 회사라도 내가 극복해 내는 수밖에...

    2
  • 소마구나
    50
    2019-06-01 11:45:52

    저런거 제안하고 도입해보려고 나름 노력해보았는데, 안되서 포기하게 되고, 이런식으로 가다간 나쁜 습관만 몸에 배게 되더라구요. 

    0
  • tikili
    14
    2019-06-02 01:31:39

    좋은 주제와 좋은 글 감사합니다. 
    공감하는 부분도 있고 아직 경험이 없어 내용자체를 잘 모르는 부분도 있네요
    역해석하여 회사에 도입될수 있도록해야겠네요.

    0
  • sorrymommy
    42
    2019-06-28 20:59:51

    매우 공감가는 내용입니다.

    하지만 댓글이 달린 형식적으로 한다도 매우 공감이 되네요.

    그래도 저런 일련의 SoC(저는 소프트웨어개발 SoC라고 자주 부르는데)가 있다는 이야기는 일단 아무것도 없는 것 보다 개선을 하고자 했거나 혹은 걍 억지로 하다가 한번 크게 당해서 필요성을 느꼈을 가능성이 높기 때문에 아무것도 하지 않는 곳 보다 말이 통할 확률이 높을 가능성이 높다고 생각되네요.

    최소한 소스컨트롤관련 툴을 쓰지 않는다면 38계줄행랑이 답이라고 생각되네요.


    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.