지난 이틀 간은 정말 오랜 만에 똥줄 타는 경험을 했습니다.
이번 주 내로 고객(휴대폰 개발을 하고 있으니 통신 사업자입니다)에게 전달 해 줄 버전을 릴리즈 하기로 되어 있었습니다.
그저께 빌드를 했는데 컴파일러가 에러 메세지를 뱉어내며 빌드를 멈추었습니다.
보통 에러 메세지가 나오면 그 위에 어느 파일에서 에러가 났는 지 알 수 있는데, 이 번 놈은 아주 악질이었습니다.
뭔가 알 수 있는 정보가 있어야죠.

결국 이틀 간 삽질하고 어제 밤을 꼴딱 새고서야 원인을 드디어 찾아냈습니다.
디폴트로 들어가는 APK(안드로이드 어플) 파일명에 있는 &(Ampersand)문자가 문제였습니다.
make에 쓰고 있던 명령어에 맞지 않는 문법이 들어온거지요.

순간 얼굴이 화끈거리더군요.
저 파일을 베이스 소스에 머지한 사람이 바로 저였거든요.. ㅠㅠ

왜 저 빌어먹을 사업자가 전달해 준 괴상한 파일의 이름을 꼼꼼하게 읽어보지 않았을까요.(사실 다른 APK에는 확장자 앞에 공백이 들어간 파일도 있었습니다)

사실 제가 머지한 부분이 문제가 되리라고는 꿈에도 생각하지 못했습니다.
아주 당연히 파일을 복사하기만 된다고 생각하고 verify(자기가 넣은 머지코드에 에러가 없는지 빌드해서 확인하는 것)과정을 생략했습니다. 
옆에 있던 동료가 make 파일에 echo로 로그를 마구 박아가며 디버깅해서 찾아줬지요.
동주 선임 땡큐. 역시 공인 아키텍트입니다. ^^

오늘 하고자 하는 이야기는 이 디버깅 과정에서 겪은 어려움을 토로하고 앞으로 조심하자는 게 아니라 문제를 찾는 과정에서 겪은 느낌을 적어보려고 합니다.

문제를 만들었을 때와 같은 사고방식으로는 그 문제를 해결할 수 없다. - 아이슈타인 -


내공이 낮은 저같은 사람들은 일반적으로 큰 문제가 생기면 아드레날린이 치솟아 오르면서 누가 에러를 저질렀는지 부터 찾으려고 합니다. 시간이 촉박할 경우에는 더하죠. 머리가 멍해지면서 사고가 경직되어 갑니다.
그리고 껀수라도 하나 발견하면 담당자를 찾아 마구 쪼아대죠. 이건 어떻게 보면 시간을 아끼기 위한 당연한 조치이긴 하지만요. 저도 먼저 에러 로그만 보고 빌드 에러가 났던 모듈 담당에게 확인해 달라고 요청부터 했으니까요.

내공이 깊은 고수들은 다릅니다.
증상만 보고 원인을 추측하지 않습니다. 하나 하나 다시 뒤집어 가며 살펴 보지요.
그리고 "직관"적으로 문제의 원인을 빠르게 짚어냅니다. 하수가 사용하는 직관(단순 현상만 보는)과는 그 질이 달라 보입니다.

요즘에 앤디 헌트가 쓴 책 "실용주의 사고와 학습(Pragmatic Thinking & Learning - Refactor Your Wetware)"을 읽고 있는데 바로 '2장 초보자에서 전문가에 이르는 여정'에 이러한 내용이 실려 있습니다.

다음 드라이퍼스 모델의 다섯 단계에서 숙련자라고 생각하고 있던 제 자신이 부끄러워 집니다.

단계1: 초보자
단계2: 고급 입문자
단계3: 중급자
단계4: 숙력자
단계5: 전문가

나무를 보지 말고 숲을 봐야겠습니다.


저작자 표시 비영리 변경 금지
신고

실용주의 프로그래머
Clean Code
More Joel on Software - 조엘 스폴스키 저, 지앤선
Hard Code(나잘난 박사의 IT 정글 서바이벌 가이드) - 에릭 브레히너 저, 마이크로소프트 프레스

실용주의 사고와 학습- 앤디헌트 / 박영록 번역 / 김창준 감수, 위키북스
김창준씨의 관련 블로그 http://agile.egloos.com/4663721 

"실용주의 사고와 학습(Pragmatic Thinking & Learning - Refactor Your Wetware)" - 앤디헌트 / 박영록 번역 / 김창준 감수, 위키북스

애자일 코치 추천 도서 목록 2차 http://agile.egloos.com/5181803 
저작자 표시 비영리 변경 금지
신고

안녕하세요. 처음뵙겠습니다. 덱스또라고 합니다.
원래는 다음에서 블로그를 쓰고 있다가 티스토리로 자리를 옮겼습니다.
먼저 쉽게 가입하지 못하는 티스토리에 제 글을 남길 수 있게 도와주신 miN`s 님께 감사드립니다.

블로그를 개설하고 올리는 첫 글이 그다지 유쾌하지는 않을 것 같네요.

사실 저는 다음 블로그에서 활동을 하고 있었습니다. 
그다지 활발한 활동은 아니고 직업이 컴퓨터로 먹고사는 S/W 개발자이다 보니 자꾸 까먹게 되는 개발 환경 설정이나 정보들을 정리하고 있었죠.
원래는 이런 글들을 많이 남기려고 했는데 먹고 사는 게 바쁘다는 핑계로 자꾸 미루게 되더군요.

어쨌든 어느 날 갑자기 회사에서 제 블로그에 접속이 되질 않았습니다.
다른 다음 블로그 사이트에 접속을 시도해 봐도 마찬가지였지요.
다음 서버에 문제가 있나 보다 생각하고 집에 가서 해 봤더니 잘 되더군요.

그 때 바로 알아차렸지요..  회사에서 다음 블로그를 차단시켰다는 걸..

우리 회사 화장실에는 표어가 많이 걸려 있습니다. 그 중 하나가 다음과 같은 게 있습니다.
(다음에 기회가 되면 회사에서 사원들의 사기를 진작시키는 일들에 대해 이야기 해 보도록 하겠습니다.)

" 자율과 창의성을 존중하는 문화 "

자율과 창의성이라..

최근 Facebook의 성공에 힘입어 마크 주커버그의 이야기를 다룬 영화 '소셜 네트워크'가 개봉하기도 했고, 그 회사 개발자의 생활과 문화가 매스컴에 많이 소개되었습니다.

일반 회사와는 정말 많이 달랐지요.
사무실이 칸막이 없이 탁 트인 공간에서 서로 토론을 하기도 하고, 자리를 이동할 때 스케이트 보드를 타고 다니기도 하더군요. 심지어는 노래를 들으며 드럼을 치는 사람도 있었습니다. 전자드럼인지 주위사람이 듣기에 시끄러운 진짜 드럼 세트인지 정확히 기억은 안나지만 그 뉴스를 보고 정말 충격을 받았습니다.

사실 페이스북이 우리에게는 그다지 놀라울 만큼 재미있고 신선한 사이트는 아니지요. 우리는 이미 싸이월드에서 많이 놀았거든요.

그 뉴스에서 페이스북이 싸이월드보다 성공한 이유는 다음과 같다고 했습니다.
"개발자에게 창의성을 발휘할 수 있는 환경을 제공하고, 누구나 아이디어를 제안해 페이스북 개발에 반영될 수 있도록 한다."

100% 동감하지는 않지만 깊이 생각해 볼 가치는 있습니다.

S/W 개발자라면 누구나 공감할 겁니다. 재미없는 일이 얼마나 하기 싫은지.
그리고 흥미로운 일이 생기면 밤새는 것도 마다않고 합니다.

사실 저는 탁트인 사무공간을 별로 좋아하지 않습니다.
Peopleware라는 책의 저자 톰디마르코는 개발자에게 개인방을 제공하라고 했습니다.
너무 극단적으로 표현한 것 같아 이것도 100% 동의하진 않습니다.

같이 모여 함께 문제를 고민하고, 토론하고 함께 코딩하고 디버깅할 때 효율이 좋다는 것을 경험해 본 사람은 알고 있습니다.
하지만 이건 팀단위로 이루어져야 합니다.
같은 과제를 수행하고 있을 때 이야기입니다.

하지만 개발자에게는 자기만의 공간이 필요합니다.
뭔가 눈치 안 보고 맘대로 이것 저것 해 볼 환경이 필요합니다.
창의성은 엉뚱한 상상에서 나옵니다.
소비자가 생각하지 못하는 가치를 책상에 앉아 하루 죙일 머리만 쥐어 뜯어봐야 아이폰 같은 뛰어난 제품은 만들지 못합니다.

우리 회사의 어느 높으신 분이 아마도 저와 같은 뉴스를 보셨나 봅니다.
단언컨데 SW개발은 한 번도 해 보신 적이 없으실 겁니다.
얼마나 높은 집중력을 요하는 작업인지를 느끼시질 못하셨을 겁니다.

요즘 우리 회사 사무실에는 칸막이를 없애고 주위 사람과 커뮤니케이션을 많이 하라고 장려하고 있습니다.

정말 넓은 사무실에 칸막이를 없애 버려 옆자리에서 하는 (사실 싸우고 있는 ㅡㅡ) 회의 소리가 다 들립니다.
어떤 사원은 이어폰을 끼고 귀를 막아버립니다.
아니 놀랍다구요? 뭐 우리회사도 이정도는 합니다. ㅎㅎ
청바지도 자유롭게 입고 업무시간이 아니면 게임하는 것도 어느 정도 가능합니다.
여튼 마주 앉은 사람과 마주보는 것이 무안한지 손수건으로 다시 벽을 만든 자리도 보입니다.

자율을 너무 강조하면 방만이 될까요? 아니 개판이 될까요? 
아닙니다. 사람들은 누구나 지켜야 할 선은 지키고 삽니다.
그 정도의 교육은 받고 자랍니다.

제발 창의성을 저해할 환경만 안 꾸며 줬으면 합니다.

그리고 블로드도 맘대로 좀 썼으면 합니다.
내가 실컷 정리해 놓은 자료를 찾아 볼 수가 없다니!!
삽질한 느낌도 들고, 실망감이 밀려옵니다.
블로그에 회사 기밀을 올릴 만한 배짱을 가진 사람은 아무도 없습니다.

아참. 페이스북은 요즘 개발에 필요해서 그런지 안 막아놨네요 ㅎㅎ 


저작자 표시 비영리 변경 금지
신고