2013.04.08

회사가 개발자를 고문하는 16가지 방법

Andrew C. Oliver | InfoWorld

 
훌륭한 개발자들을 확보하려면 그만큼 훌륭한 환경을 제공해야 한다. 점점 더 구인경쟁이 치열해지는 가운데 식사를 무료로 제공하거나 노동시간의 일부를 자유롭게 활용할 수 있도록 '유급' 여유 시간을 주는 기업이 나타나는 것도 이 때문이다. 그러나 모든 기업이 개발자의 중요성을 인식하고 있는 것은 아니다. 몇몇 기업들은 여전히 개발자를 혹사시킨다. 여기 개발자를 힘들게하는 다양한 유형을 소개한다. 이 가운데 한 두 가지 이상을 하고 있다면 그 기업은 최고의 개발자들을 다시는 채용하지 못하게 될 것이다.
 
1. 지옥 같은 보안
필자는 맥아피(McAfee) 프록시가 헬로월드자바(HelloWrold.java)에 집(Zip) 파일을 금지해 놓은 곳에서 일했었다. 이는 빌드 툴 다운로드에서 예시까지 모든 것들이 금지됨을 뜻한다. 또 다른 회사에서는 맥아피 데스크톱 시큐리티(McAfee desktop security)가 프로세서가 건드리는 모든 파일마다 악성 코드 여부를 확인했다.

심지어 지난번 체크한 이후로 변화되지 않은 파일들까지 모두 단일 스레드 방식으로 검사했는데 그 때문에 모든 작업마다 CPU 코어 하나로 수천 개의 파일 컨텐츠를 확인하는 과정을 거쳐야 했다. IDE 시작하는데 30분이 소요됐고 빌드를 시작하는데 또다시 10분이 추가적으로 소요됐다. 심지어 그 빌드가 단 세개의 소스 파일만 건드리고 몇 초 가량만 실행되었음에도 말이다.
 
2. 고문 툴
솔직히 말해 서브버전(Subversion)과 깃(Git) 이외의 모든 버전/구성 관리 툴들은 너무 느리거나 사용하기 고통스럽다. 특히 클리어케이스(ClearCase)는 모든 개발자들을 고문하는 대표적인 툴이다.
 
3. 유지보수팀
몇몇 회사들은 여전히 모든 귀찮은 일을 처리하는 별도의 팀을 운영한다. 그러나 진지하게 말해 누구도 만약 더 좋은 직장이 있다면 절대 '유지보수팀'에서 일하고 싶어하지 않는다. 그리고 더 좋은 직장을 잡을 기회는 자주 생기는 편이다.
 
4. 강제된 윈도우
닷넷(.Net)을 사용하지 않는 개발자에게 윈도우를 개발 환경으로 사용하도록 강요하는 것은 꽤나 가학적인 조치다. 강제된 윈도우는 개발자들에게 아마추어 개발자나 쓰는 쓰레기를 동일하게 사용하며 그들과 같은 한계에 갇히라는 의미다. (필자의 팀원들 중 몇 명은 필자가 그들에게 리눅스를 강요했다고 이야기할 것이다. 그러나 이건 윈도우 강제보다는 훨씬 낫다)
 
5. 모든 라이브러리 잠그기
과거에 필자가 IBM에서 일하던 시기에, 오픈소스건 아니건 개발 시간을 두 달 이상 줄여주지 않는다면 서드파티 라이브러리를 절대 사용하지 말라는 지침을 받았다. 변호사에게 서드파티 라이브러리 사용에 필요한 법적 심사를 의뢰하는 비용이 필자의 두 달치 월급 이상이었기 때문이다. 그 후 곧바로 필자는 시급을 올렸다. 물론 공식적인 심사 과정을 거치지 않고 라이브러리를 어디서 어떻게 써야 하는지를 상세히 검토하는 정책이 필요한 거지만 그랬다 하더라도 '낙천적 잠금'은 보통 문제가 없다. 그렇지 않으면 모든 개발자들에게 바퀴부터 다시 발명하라고 강요하는 악랄한 행위를 저지르는 것일테니까.
 
6. 웹스피어
보라, IBM이 마침내 READ_COMMITTED를 추가한 지금, 필자는 DB2을 쓸 수 있게 되었다. 그러나 웹스피어(WebSphere)는 너무나도 고통스럽다. 제발 웹스피어를 부팅하거나 WAR 파일을 배치하는데 필수적인 50 GUI 화면을 거치지 않았으면 좋겠다. 웹스피어는 한마디로 개발자 학대 그 자체다. 정말 최악인데 지금까지 항상 그래왔다. 만약 여기서 다른 어느 것도 얻어낼 수 없다면 웹스피어를 과감하게 삭제하라. 그렇지 않으면 개발자들이 뒤에서 당신을 욕할 것이다. 만약 개발자들이 욕을 하지 않는다면 더 실력있는 개발자로 교체하는 편이 낫다.
 
7. 죽음의 행진
개발자들에게 지속적인 죽음의 행진을 강요한다면 그들을 소진시키는 일이 된다. 또한 개발자 스스로도 임시방편으로 일을 처리했다고 느끼게 된다. 어느 누구도 큰 골치거리를 몇 주간이나 계속해서 청소하고 싶어하지 않는다. 따라서 단기간의 유지보수는 해답이 될 수 없다. 그 대신 개발자들에게 그들이 원하는 시간보다 약간 적은 시간을 부여하라. 초과하면 경비 초과를 유발하고 부족하면 개발자 학대다.
 
8. 아, 2010년은 좋은 시절이었지
놀라운 것은 3~4년된, 더구나 한번도 테스트하지 않은 (아마도 윈도우용) IDE를  표준 개발환경으로 쓰라고 하는 기업이 있다는 것이다. 그러나 개발자들이여, 우리가 분명히 알아야 하는 것은 지금과 같은 경쟁적인 노동 시장에서는 더 좋은 복지 혜택과 새 버전을 사용할 기회를 제공할 다른 기업이 분명히 있다는 점이다.
 
9. 미안하지만, 우리는 지겨운 일만 한다
필자도 힙스터해커(HipsterHacker) 아키텍쳐를 싫어한다. “오, 좋아 보이니 저것도 또 다운로드 해줄게”하는 식으로 개발된 시스템이기 때문이다. 그렇다고 개발자들에게 새로울 것 하나 없는 똑같은 세트로 코드를 개발하라고 하면 개발자들은 자신들의 경력을 심사숙고 하게 될 것이다. 따라서 둘을 적절하게 포용해야 한다. 개발자들이 새로운 것들도 접할 수 있게 하면서 안정적인 아키텍쳐로 위험을 최소화시키도록 해야 한다.
 
10. 무한 모래시계의 VM
기업 IT 인프라를 완전히 가상화한 기업들이 있다. 심지어 개발 환경까지 가상화됐다. 그렇다면 "와, 끝내주네!"가 결론일까? 하지만 안타깝게도 하드웨어에 자금을 덜 지원했거나 이를 제대로 최적화하지 않아 모든 게 느려졌고 이는 엄청난 고문이 되기도 한다. 몇몇 사람들은 명상에 심취해서 두 시간이 넘는 빌드 프로세스를 개의치 않을 수도 있다. 그러나 필자는 그런 종류의 사람이 절대 아니다.
 


2013.04.08

회사가 개발자를 고문하는 16가지 방법

Andrew C. Oliver | InfoWorld

 
훌륭한 개발자들을 확보하려면 그만큼 훌륭한 환경을 제공해야 한다. 점점 더 구인경쟁이 치열해지는 가운데 식사를 무료로 제공하거나 노동시간의 일부를 자유롭게 활용할 수 있도록 '유급' 여유 시간을 주는 기업이 나타나는 것도 이 때문이다. 그러나 모든 기업이 개발자의 중요성을 인식하고 있는 것은 아니다. 몇몇 기업들은 여전히 개발자를 혹사시킨다. 여기 개발자를 힘들게하는 다양한 유형을 소개한다. 이 가운데 한 두 가지 이상을 하고 있다면 그 기업은 최고의 개발자들을 다시는 채용하지 못하게 될 것이다.
 
1. 지옥 같은 보안
필자는 맥아피(McAfee) 프록시가 헬로월드자바(HelloWrold.java)에 집(Zip) 파일을 금지해 놓은 곳에서 일했었다. 이는 빌드 툴 다운로드에서 예시까지 모든 것들이 금지됨을 뜻한다. 또 다른 회사에서는 맥아피 데스크톱 시큐리티(McAfee desktop security)가 프로세서가 건드리는 모든 파일마다 악성 코드 여부를 확인했다.

심지어 지난번 체크한 이후로 변화되지 않은 파일들까지 모두 단일 스레드 방식으로 검사했는데 그 때문에 모든 작업마다 CPU 코어 하나로 수천 개의 파일 컨텐츠를 확인하는 과정을 거쳐야 했다. IDE 시작하는데 30분이 소요됐고 빌드를 시작하는데 또다시 10분이 추가적으로 소요됐다. 심지어 그 빌드가 단 세개의 소스 파일만 건드리고 몇 초 가량만 실행되었음에도 말이다.
 
2. 고문 툴
솔직히 말해 서브버전(Subversion)과 깃(Git) 이외의 모든 버전/구성 관리 툴들은 너무 느리거나 사용하기 고통스럽다. 특히 클리어케이스(ClearCase)는 모든 개발자들을 고문하는 대표적인 툴이다.
 
3. 유지보수팀
몇몇 회사들은 여전히 모든 귀찮은 일을 처리하는 별도의 팀을 운영한다. 그러나 진지하게 말해 누구도 만약 더 좋은 직장이 있다면 절대 '유지보수팀'에서 일하고 싶어하지 않는다. 그리고 더 좋은 직장을 잡을 기회는 자주 생기는 편이다.
 
4. 강제된 윈도우
닷넷(.Net)을 사용하지 않는 개발자에게 윈도우를 개발 환경으로 사용하도록 강요하는 것은 꽤나 가학적인 조치다. 강제된 윈도우는 개발자들에게 아마추어 개발자나 쓰는 쓰레기를 동일하게 사용하며 그들과 같은 한계에 갇히라는 의미다. (필자의 팀원들 중 몇 명은 필자가 그들에게 리눅스를 강요했다고 이야기할 것이다. 그러나 이건 윈도우 강제보다는 훨씬 낫다)
 
5. 모든 라이브러리 잠그기
과거에 필자가 IBM에서 일하던 시기에, 오픈소스건 아니건 개발 시간을 두 달 이상 줄여주지 않는다면 서드파티 라이브러리를 절대 사용하지 말라는 지침을 받았다. 변호사에게 서드파티 라이브러리 사용에 필요한 법적 심사를 의뢰하는 비용이 필자의 두 달치 월급 이상이었기 때문이다. 그 후 곧바로 필자는 시급을 올렸다. 물론 공식적인 심사 과정을 거치지 않고 라이브러리를 어디서 어떻게 써야 하는지를 상세히 검토하는 정책이 필요한 거지만 그랬다 하더라도 '낙천적 잠금'은 보통 문제가 없다. 그렇지 않으면 모든 개발자들에게 바퀴부터 다시 발명하라고 강요하는 악랄한 행위를 저지르는 것일테니까.
 
6. 웹스피어
보라, IBM이 마침내 READ_COMMITTED를 추가한 지금, 필자는 DB2을 쓸 수 있게 되었다. 그러나 웹스피어(WebSphere)는 너무나도 고통스럽다. 제발 웹스피어를 부팅하거나 WAR 파일을 배치하는데 필수적인 50 GUI 화면을 거치지 않았으면 좋겠다. 웹스피어는 한마디로 개발자 학대 그 자체다. 정말 최악인데 지금까지 항상 그래왔다. 만약 여기서 다른 어느 것도 얻어낼 수 없다면 웹스피어를 과감하게 삭제하라. 그렇지 않으면 개발자들이 뒤에서 당신을 욕할 것이다. 만약 개발자들이 욕을 하지 않는다면 더 실력있는 개발자로 교체하는 편이 낫다.
 
7. 죽음의 행진
개발자들에게 지속적인 죽음의 행진을 강요한다면 그들을 소진시키는 일이 된다. 또한 개발자 스스로도 임시방편으로 일을 처리했다고 느끼게 된다. 어느 누구도 큰 골치거리를 몇 주간이나 계속해서 청소하고 싶어하지 않는다. 따라서 단기간의 유지보수는 해답이 될 수 없다. 그 대신 개발자들에게 그들이 원하는 시간보다 약간 적은 시간을 부여하라. 초과하면 경비 초과를 유발하고 부족하면 개발자 학대다.
 
8. 아, 2010년은 좋은 시절이었지
놀라운 것은 3~4년된, 더구나 한번도 테스트하지 않은 (아마도 윈도우용) IDE를  표준 개발환경으로 쓰라고 하는 기업이 있다는 것이다. 그러나 개발자들이여, 우리가 분명히 알아야 하는 것은 지금과 같은 경쟁적인 노동 시장에서는 더 좋은 복지 혜택과 새 버전을 사용할 기회를 제공할 다른 기업이 분명히 있다는 점이다.
 
9. 미안하지만, 우리는 지겨운 일만 한다
필자도 힙스터해커(HipsterHacker) 아키텍쳐를 싫어한다. “오, 좋아 보이니 저것도 또 다운로드 해줄게”하는 식으로 개발된 시스템이기 때문이다. 그렇다고 개발자들에게 새로울 것 하나 없는 똑같은 세트로 코드를 개발하라고 하면 개발자들은 자신들의 경력을 심사숙고 하게 될 것이다. 따라서 둘을 적절하게 포용해야 한다. 개발자들이 새로운 것들도 접할 수 있게 하면서 안정적인 아키텍쳐로 위험을 최소화시키도록 해야 한다.
 
10. 무한 모래시계의 VM
기업 IT 인프라를 완전히 가상화한 기업들이 있다. 심지어 개발 환경까지 가상화됐다. 그렇다면 "와, 끝내주네!"가 결론일까? 하지만 안타깝게도 하드웨어에 자금을 덜 지원했거나 이를 제대로 최적화하지 않아 모든 게 느려졌고 이는 엄청난 고문이 되기도 한다. 몇몇 사람들은 명상에 심취해서 두 시간이 넘는 빌드 프로세스를 개의치 않을 수도 있다. 그러나 필자는 그런 종류의 사람이 절대 아니다.
 


X