본문 바로가기
[ Developer ]/Tips

이런 IT 회사에서 일하지 말자

by 김현섭. 2016. 10. 11.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

늘 그렇듯이, 난 한국 사정 잘 모르니까 이건 어디까지나 외국 회사에 해당된다는 것을 전제로 한다.


초보에게는 첫 3-5년이 정말 중요하다고 본다. 본인도 아주 열심히 일할 준비가 되어 있고 정말 많이 배울 수 있는 기회인데 직장 잘못 들어가면 이직이 힘든 것은 물론이고, 힘들게 배운다고 투자한 시간 역시 시간낭비일 가능성이 높기 때문이다. 그러므로 월급이 짜더라도, 그 외의 조건이 안 좋더라도, 다음의 조건에 해당되지 않는 회사를 찾는 쪽이 낫다고 본다.



1. 버전 콘트롤 시스템이 없다

CVS, SVN, Perforce, 요즘 뜨는 github 등등, 뭘 쓰든지 별 상관없다. 하지만 버전 콘트롤 시스템을 안 쓰는 회사라면 진짜 정말 개발의 기본이 안 되어 있는 회사다. 그거 자체가 흠은 아닌데, 이런 회사에서 일하다보면 경험을 쌓는 귀중한 시간이 버전 컨트롤로 간단히 해결 될 수 있는 문제를 해결하는데에 허비하게 된다 (업계 용어로 '개삽질').


2. Automated deploy system, build system 이 없다

위의 이유와 같다. 여러가지 environment 에 자동으로 디플로이 되는 빌드 시스템이 없으면 일 하면서 최소한 30% 는 멍멍이 삽질에 시간을 버린다는데에 돈 걸 수 있다.


그러면 빌드 시스템 쓴다고 개삽질 안 하느냐 하면 그건 아니죠. 하지만 시스템이 있는 회사와 없는 회사의 차이는, 있는 회사에서의 개삽질은 돈 되는 개삽질이라는 차이. 업계에서 곧잘 쓰이는 빌드 시스템 두세개 정도로 개고생 몇 년 했으면 나중에 devops 로 취업이 쉬워진다. 단순한 시스템 애드민보다 전문적인 devops 는 훨씬 전망이 좋다.


3. 모니터링 시스템이 없다

전체 시스템 상태를 모니터하고 혹시라도 문제가 있으면 alert 가 날아가는 솔루션이 설치되어 있지 않다면 시스템 관리가 그리 중요하지 않다는 말이다. 그리고 프로가 아닌 이들을 들들 볶는다는 말도 된다. 코딩이면 코딩, 시스템 애드민이면 시스템 애드민 뭐 이렇게 특화가 필요한데 사이트 다운 될 때마다 불려가면 이것도 저것도 안 된다.


4. 테스터가 없거나, 테스팅 environment, staging environment 가 없다

이것 역시 '특화문제'에 해당된다. 코딩하는 사람이 테스트 하면 안 된다는 말은 당연히 아니다. 유닛 테스트 쓰는 건 기본이어야 하고 버그도 고쳐야 하지만, 테스터가 없고 테스팅 환경이 없다면 이건 절차 자체를 모른다는 말이다. 그러므로 문제 해결하며 코딩할 시간에 유저 문제를 디버깅 한다거나, 그 외 상관 없는 문제 해결하느라 시간낭비할 가능성이 높다. (유닛 테스트 엄청 잘 되어 있고 Continuous Integration 잘 되어 있으며 디플로이 시스템 잘 셋업 되어 있는 회사 중에서는 따로 테스터들이 없는 케이스가 있긴 하다.)


5. 유닛 테스트를 안 쓰고, 코드 리뷰가 없다

난 실용주의자고 도덕적/종교적인 부분은 거의 없다고 자부한다. 유닛 테스트를 꼭 해야 된다 아니다를 떠나서, 유닛 테스트를 쓰는 곳에 처음 일해야 하는 이유는, 요즘은 유닛 테스트가 완전 기본이기 때문이다. TDD 까지 하는 마당에 유닛 테스트를 안 썼다고 하면, 자동 빌드도 없었다는 말이고, 그렇다면 정말 후진 곳에서 일했다고 깔봄 당하는 것은 물론이요, 이직 힘들어진다. 면접 볼 때 유닛 테스트 안 쓰고 코드 리뷰 안했다 말하면 (==> 자동 빌드 없었고 모니터링 없었고 테스트 자체가 없었다는 말) 자동적으로 개발 경험 자체를 다운그레이드 해버린다.

코드 리뷰 참 중요하다. 특히 코드 잘 하는 사람과 코드 리뷰를 정기적으로 하면 정말 많이 배운다.


6. 버그 트랙킹 시스템이 없다

버그 트랙킹 시스템 혹은 티켓 시스템이 없다면, 문제가 생길 때마다 아무나 불러서 고치라고 시킨다는 것이고, 그렇다면 시스템 릴리즈 스케줄 이런 것도 없고, 버그 고쳤는지 안 고쳤는지 체크하는 방법은 '물어보는 것'이며, 제일 기본적인 문서화도 안 되어 있다는 말이다. 여기에서 열심히 일 하는 거는... 위에서도 말했지만 멍멍이 삽질이다.


7. 개발자에게 웹 디자인을 시킨다던지, 하드웨어 서포트를 요구한다

이것 역시 '특화'문제에 해당한다. 그 자체로는 별 문제가 없다. 나도 포토샵 조금 쓸 줄 알고 웹 개발하니까 기본적인 CSS 랑 디자인 한다. 그리고 새로 시작한 동료라면 이런 저런 서포트 해주는 것도 당연하다. 하지만, 그걸 정상으로 생각하고 업무의 연장으로 본다면, 당신의 상관은 IT 개발에 대한 기본적인 개념이 없고, 당신은 시간낭비만 징하게 한다.


웹 디자인이나 하드웨어 서포트가 안 좋다는 말이 아니다. 여러가지를 한꺼번에 할 거면 시너지가 나는 것을 해야 하는데 (예를 들어 한식 전문이지만 중식이랑 양식도 한다거나) 별 연관이 없는 거 하면 커리어에 도움은 덜 된다 (다림질이랑 군고구마 굽기라던가...).