티스토리 뷰


출처 : DBguide

다음으로 살펴볼 안드레즈 타일러(Andres Taylor)의 목록은 오바산조의 목록과 달리 프로젝트가 아니라 개발자에게 초점을 맞추고 있다. ‘전문적 소프트웨어 개발자로서 보낸 10년이 나에게 가르쳐준 10개의 사실(Top 10 Things Then Years of Professional Software Development Has Taught Me)’이라는 흥미로운 제목을 달고 있는 그의 목록은 다음과 같다.

1. 객체지향은 당신이 생각하는 것보다 더 어렵다
2. 소프트웨어 개발에서 어려운 부분은 바로 의사소통이다
3. ‘아니’라고 말하는 것을 배워라
4. 모든 것이 동일하게 중요하다면, 아무 것도 중요하지 않은 것이다
5. 어떤 문제를 지나치게 생각하지 말라
6. 어떤 것에 정말로 깊이 뛰어들어라. 하지만 그것에 사로잡히지 말라
7. 소프트웨어 개발 과정의 다른 면들에 대해서 배워라
8. 당신의 동료가 당신에게 최고의 선생이다
9. 결국 중요한 것은 제대로 작동하는 소프트웨어다
10. 어떤 사람은 멍청이다

여기에도 귀에 익은 말들이 여럿 포함되어 있다. 예컨대 1번 항목인 “객체지향은 당신이 생각하는 것보다 더 어렵다”는 수없이 반복된 경구에 해당한다. 그렇지만 여전히 너무나 많은 프로그래머가 자신이 객체지향을 아주 잘 알고 있으며 그것을 적재적소에 잘 적용하고 있다고 착각한다.

3번 항목에서 말하는 ‘아니’라고 말하는 법을 배우라는 내용은, 앞에 나온 오바산조의 목록에서 6번 항목에 해당하는 ‘스케줄 겁쟁이’와 밀접하게 맞물리는 내용이다. 피터 클락과 오바산조에 의하면 모든 프로그래머에게는 자신의 일정이 늦어지고 있다는 사실을 감추고 싶어 하는 겁쟁이 기질이 숨어 있다.

그와 비슷한 맥락에서 모든 프로그래머에게는 자신에게 “할 수 있는가?”라고 묻는 사람에게 선뜻 ‘아니’라고 말하지 못하는 심리가 존재한다. 아니라고 말하는 것이 왠지 자존심 상하는 것처럼 느껴지기도 하고, ‘예’라고 말함으로써 자신의 능력을 뽐내고 싶기도 하고, 자기는 아니라고 대답했는데 다른 사람이 일을 해결할까봐 두려워하기도 하는 등 프로그래머의 심리는 그런 질문 앞에서 복잡하게 반응하기 때문이다.

이렇게 ‘아니’라고 말하지 못하는 심리는 경험이 부족한 초보일수록, 혹은 자기 실력에 대한 확신이 부족한 사람일수록 더욱 강하다. 자신의 실력을 객관적으로 인식하는 능력이 떨어지기 때문이다.

프로젝트 관리자나 PM이 개발자에게 “할 수 있는가?”라고 물을 때에는 무조건적인 긍정을 원하는 것이 아니다. 그들이 원하는 것은 납득이 가능한 근거와 이유를 동반한 대답이다. 비즈니스의 현장에서는 근거 없는 긍정이 근거 없는 부정보다 더 나쁘다. 책임감이 있는 프로그래머란 이러한 즉자적인 심리적 반응과 싸워서 이길 줄 아는 사람이다. 신중하게 ‘아니’라고 말할 줄 아는 사람이 장기적으로는 주변의 신뢰를 쌓는 사람임을 아는 것이다.

주관적인 자존심, 경쟁심, 두려움과 같은 심리적인 요소 때문에 객관적인 판단을 내리지 못하는 프로그래머는 사실 생각보다 많다. 부실한 설계, 유닛테스트의 부재, 끊이지 않는 버그의 존재는 어떻게 보면 이러한 심리적 기제가 작동한 결과인 경우가 대부분이다.

이런 사람들은 새로 나온 언어의 API를 살펴보거나 유행을 타는 개발도구를 다운로드 받으려고 서두르기 전에, 자신이 할 수 있는 일과 할 수 없는 일을 정확하게 분별하는 능력과, ‘예’와 ‘아니’를 자신 있게 말하는 능력을 갖추는 것이 프로그래머로서의 ‘실력’을 한 눈금 올리는 길임을 기억할 필요가 있다.

 

일의 우선순위와 개발환경 파악해야
4번 항목은 일의 우선순위를 매길 줄 아는 능력에 대한 이야기다. 요구사항을 작성하는 진영에서는 언제나 모든 일이 다 중요하게 여겨지는 법이다. 그들로 하여금 지금, 당장, 여기서, 내가 해야 할 일을 선택하도록 하는 책임은 프로그래머 자신에게 있다. 초보 프로그래머는 우선순위를 정하는 책임이 전적으로 요구사항을 작성하는 사람에게 있다고 믿고, 경험이 많은 프로그래머는 그러한 책임이 자기 자신에게 있음을 안다.

그것은 큰 차이다. 그 다음에 있는 5번과 6번 항목은 비슷하다. 수능과 같은 큰 시험이 다가오면 선생님들이 거듭해서 강조하는 말이 있다. 모르는 문제를 붙잡고 시간을 허비하지 말라는 말이다. 이러한 요령은 프로그래머에게도 그대로 적용된다. 프로젝트를 진행하다보면 참으로 단순한 버그를 붙들고 씨름을 하느라 중요한 기능을 구현할 시간을 허비하는 사람을 볼 때가 있다.

이러한 태도는 시간을 비효율적으로 사용한다는 점에 있어서도 문제지만, 풀리지 않는 문제를 붙들고 씨름을 하다보면 생각이 굳기 때문에 문제를 해결할 가능성이 낮아진다는 단점을 내포하기도 한다. 문제가 해결되지 않으면 다른 곳으로 경쾌하게 이동하는 것이 현명한 태도다. 이것은 문제를 포기하는 것과 다르다. 시간이 지난 다음에 맑아진 정신으로 문제를 다시 보면 해결의 실마리가 보이는 경우가 많기 때문이다.

7번 항목은 개발자가 자신의 개발환경만 들여다보는 것이 아니라, 프로젝트의 환경 전체를 알아야 한다는 사실을 말하고 있다. IDE와 구글 검색창만 들여다 볼 것이 아니라 QA, 네트워크, 데이터베이스, PM, 고객, 비즈니스 분석가를 아우르는 모든 사람들의 일상과 고민을 알수록 더욱 실력 있는 프로그래머가 될 가능성이 높다고 주장하는 것이다.

필자는 타일러의 의견에 기본적으로 동의하지만 필자가 볼 때 주변 환경에 관심을 갖는 것은 ‘필수’가 아니라 ‘선택’이다. 프로그래머에 따라서 주변 환경에는 전적으로 무관심하지만 품질이 뛰어난 코드를 만들어내는 사람이 얼마든지 존재하기 때문이다. 그것이 자신의 스타일이라면 굳이 주변 환경의 일에 관심을 기울이지 않아도 상관이 없다.

8번 항목의 의미에 대해서는 필자의 설명보다 타일러 자신의 말을 들어보는 것이 훨씬 나을 것 같다. 다음은 타일러의 블로그에서 직접 인용한 내용이다. 그의 고백은 내가 3년 전에 루슨트테크놀로지에서 월스트리트로 직장을 옮기면서 느꼈던 심정과 너무 비슷하다. 그런 면에서 타일러의 이야기는 곧, 필자의 이야기이기도 하다.

“내가 첫 직장에서 일을 시작한 1년 뒤에, 우리 회사는 다른 회사와 합병되었다. 나는 갑자기 나보다 훨씬 재능이 많고 경험도 풍부한 사람들에 의해서 둘러싸이게 되었다. 그 상황이 나를 얼마나 큰 열등감과 바보 같은 심정에 휩싸이게 만들었는지 지금도 생생하게 기억한다. 나는 열심히 공부했고, 많은 책들을 읽었지만 그들을 따라잡을 수 없었다. 그들은 나에 비해서 많은 장점을 가지고 있었다. 그렇지만 이제는 뛰어난 사람들과 함께 일하는 것이 나를 슬프게 하지 않는다. 나는 다만 그들로부터 배울 수 있는 기회를 얻었다고 느낄 뿐이다. 나는 동료에게 질문을 던지고 그들이 왜 그러한 결론에 이르렀는지를 이해하기 위해서 머리를 싸매고 고민한다. (중략) 당신의 동료를 경쟁자가 아니라 당신의 재산이라고 여길 필요가 있다.”

그 다음에 있는 9번 항목은 마치 1992년 미국의 대통령선거에서 회자된 “바보야 문제는 경제야”라는 문구를 떠오르게 한다. 우리식으로 말하자면 “바보야 문제는 소프트웨어야”가 되는 셈이다. 요즘 세상에서 모든 것이 결국 ‘돈’으로 통하는 것처럼, 소프트웨어 개발 환경에서 모든 것은 결국 ‘소프트웨어’로 귀착된다. 그것도 그냥 소프트웨어가 아니라 제대로 작동하는 소프트웨어다.

프로그래밍의 세계에서 작동한다(working)는 말은 버그 없이, 최적의 성능으로, 사용자가 원하는 기능을 제공한다는 의미를 함축한다. 스트라이커에게 있어서 결국 중요한 것이 ‘골(goal)’인 것처럼, 프로그래머에게 있어서 결국 중요한 것은 제대로 작동하는 소프트웨어다. 이것은 너무나 당연한 상식이라서 더 이상 부연할 것도 없다.

마지막 10번 항목은 매체의 품위를 고려해서 매우 부드럽게 의역을 해놓았는데, 타일러가 영문에서 사용한 단어의 뉘앙스는 ‘멍청이’에 비해서 10배는 강한 표현이다. 소프트웨어 개발 경험이 있는 사람이라면 따로 설명하지 않아도 그 의미를 잘 알 것이다. 도무지 상식이 통하지 않는 사람 때문에 “뚜껑이 열리는” 경험을 해보지 않는 사람은 없다.

타일러에 의하면 그러한 경험이 불가피한 이유는 간단하다. 우리의 주변에 있는 사람들 중에서 몇몇은 정말이지 ‘멍청이’이기 때문이다. 이러한 선언은 누굴 인격적으로 모독하거나 비방하자는 의미가 아니다. 이러한 인식을 통해서 불필요한 감정과 에너지의 소모를 피하자는 것이 목적이다. 그런데 여기엔 주의할 점이 있다.

 

자신의 주변에 있는 사람 중에서 누가 ‘멍청이’인지 생각해보기 전에, 혹시 내가 다른 사람에게 ‘멍청이’로 인식되고 있지는 않은지 생각할 필요가 있는 것이다. 내가 ‘멍청이’로 여기는 사람이 있다면, 나를 ‘멍청이’로 여기는 사람도 존재한다고 생각하는 것이, 아마 현명할 태도일 것이다. 뒤집어 말하면, 세상에 멍청이는 없다. 멍청이란 존재는 본질적으로 상대적인 관계 속에서 규정되는 개념이기 때문이다.

 

이상으로 우리는 오바산조와 타일러라는 두 프로그래머의 경험에서 우러난 경구를 고찰해보았다. 대부분 상식적인 수준의 이야기이지만, 상식적이기 때문에 우리가 종종 의식하지 못하고 지나가는 소중한 내용이 담겨있기도 했다. 그들이 들려준 스무 개의 경구중에서 하나라도 새겨들을 만한 것이 있었다면 다행이겠다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함