[소프트웨어 장인] 4장 소프트웨어 장인의 태도
오래 전에 작성했던 코드를 지금에 와서도 고칠 부분이 없어 보인다면, 그것은 그동안 배운 것이 없다는 뜻이다.
소프트웨어 장인이라면 계속해서 더 나은 프로페셔널이 되기 위해 일평생 정진해야 한다.
“네 커리어와 프로페셔널로서의 미래는 누구의 책임인가?”
이 장에서는 나의 커리어를 주도적으로 이끄는 방법과 어떻게 해야 시대의 흐름에 뒤떨어지지 않는지를 알아본다. 모르는 것을 발견하는 방법과 그 시간을 어떻게 만들어 낼 수 있을지도 살펴본다.
내 커리어의 주인은 누구인가?
고객을 만족시키기 위한 투자는 스스로 해야한다. 고객은 프로페셔널의 교육이 아닌, 그의 지식과 기술에 대한 돈을 지불하는 것이다.
소프트웨어 프로페셔널로 대우받기를 원한다면 프로처럼 행동해야 한다. 이는 스스로 발전시키는 데 자신의 돈과 시간을 들여야 한다는 것이다.
자신의 커리어의 주체로서 언제, 무엇을 배울지를 스스로 결정해야 한다.
기업이 직원에게 투자하는 일은 바람직하지만 프로라면 그것이 고용주의 책임이나 의무라고 생각해서는 안 된다.
변화에 적응하고 계속해서 역량을 증진시키는 것은 소프트웨어 장인으로서 성공적인 커리어를 갖기 위한 열쇠다.
고용자 피고용자 관계
고용자 피고용자 관계는 창조적인 업무에서 잘못된 모델이다. 산업혁명기에 대다수 노동자가 사전에 정해진 고정된 형태의 반복 업무일 때 장점이 있다. 하지만 창조적인 노동 형태에서는 잘 동작하지 않는다.
상병하복 관리 방법의 형태를 아직도 유지하고 있는 기업은 재능있는 소프트웨어 프로페셔널을 고용하는데 어려움을 겪을 테고 이미 보유한 인재들마저 점점 잃어버릴 가능성이 크다.
서프트웨어 장인과 고객의 관계는 그 계약 형태가 어떻든 생산적인 동반자 관계로 보아야 한다.
끊임없는 자기개발
독서, 많은 독서
- 특정 기술에 대한 서적
- ex) Hibernates, Nodejs, Clojure
- 특정 개념에 대한 서적
- ex) TDD, 도메인 기반 개발, 객체 지향 설게, 함수평 프로그래밍
- 행동양식에 대한 서적
- ex) 애자일 방법론, 소프트웨어 장인정신, 린 소프르퉤어 개발
- 형명적 서적
- ex) 실용주의 프로그래머
블로그
사전에 충분한 지식이 없는 사람에게는 블로그가 독이 될 수도 있다. 많은 연구 없이 깊이가 없는 글이 올라오는 블로그도 꽤 많기 때문이다.
나 자신을 위한 기록 용으로 블로그 글을 작성하는 것도 좋다.
기술 웹사이트
기술 관련 웹사이트들도 시장의 최신 동향을 알아보기에 좋은 수단이다.
팔로우할 리더 찾기
특정 기술 분야 리더들이 누구인지 알면 유익한 인터넷 정보나 관련 서적을 찾기가 쉬워 효과적이다. 예를 들어 해당 기술에 대한 가장 좋은 자료들을 누가 만들어 내고 있는지 알아야한다. 그 기술을 진보시키고 더 나은 사용 방법들을 개발하고 있는지, 관련 업계를 어떤 사람이 움직이고 있는지 알아 두는것이 좋다.
소셜미디어
트위터는 정보를 모으는 데 유용하다.
끊임없는 훈련
훈련을 할 때는 문제의 해결 자체가 아니라 해결에 사용한 테크닉에 집중해야 한다.
급엽를 받는 이유는 문제 해결에 사용한 테크닉이 아니라 문제 해결 자체에 대한 대가이지만, 훈련을 할 때는
그 문제를 ‘어떻게’ 해결하는지가 중요하다.
훈련할 때는 작성 가능한 최선의 코드를 만드는 데 집중해야 한다. 테스트 하나를 만드는 데 몇 분이 걸리든 몇 시간이 걸리든 관계 없다. 시간은 걱정하지말고 변수, 메서드, 클래스들의 이름이 가장 이해하기 쉽고 의미를 포괄할 수 있도록 최선을 다해 네이밍한다.
카타
카타는 ‘품세’라는 뜻으로 일본 무예 훈련에서 나온 용어다. 소프트웨어 카타는 작은 훈련용 코딩들을 의미한다.
어원 자체가 육체적인 반복 활동을 하는 무예 훈련에서 왔다는 배경에 단순한 작업을 반복하는 바보같은 일이라는 비판적인 시각도 있지만,
이러한 훈련을 여러 번하면 실제 현장에서 훨씬 더 편안하고, 준비가 충분히 되었다는 느낌이 든다.
코딩카타 관련 웹사이트
- codingkata.org
- codekata.pragprog.com
- kate.softwarecratsmanship.org
펫 프로젝트
펫 프로젝트는 취미생활과도 같은 나만의 프로젝트다. 무엇보다 재미있어야 한다.
오픈 소스
펫 프로젝트와는 성격이 많이 다르낟. 거의 대부분 특정 목적에만 집중하여 범위가 제한적이다. 좋은 점은, 훌륭한 개발자들이 어떻게 일하는지 체험할 수 있다는 것이다. 그들이 어떻게 코드를 작성하고 문제를 해결하는지 살펴보는 것은 코드를 잘 만들기 위한 좋은 기회가 된다. 또한 공개적으로 자신의 활동을 알릴 수 있는 기회이기도 하다.
페어 프로그래밍
페어(Pair) 프로그래밍은 기술적인 실행 관례라기보다는 사회적 활동에 더 가깝다.
페어 프로그래밍을 이용하면 새로운 내용을 빨리 배울 수 있다.
페어 프로그래밍을 하면 우리가 작성한 코드와 아이디어에 대해 즉각적인 피드백을 받는다. 키보드로 타이핑을 하는 즉시 옆에서 지켜보는 페어 개발자의 검증을 받는다.
페어 개발자는 내가 무엇을 하는건지 이해하지 못할 수도 있고 변수 네이밍이나 API 사용방식이나 설계에 동의하지 않을 수도 있다.
그럴 때마다 한발 물러서서 내가 내린 결정에 관해 다시한번 생각할 틈이 생긴다. 다른 사람을 어리석다고 단정짓기 전에, 나 자신이 그렇게 훌륭하지 않을 수도 있음을
받아 들여야 한다.
페어 개발자가 나의 작업 내용에 동의하지 않거나 무엇을 하는 건지 이해하지 못하고 있다면 좋은 토론 기회로 삼아야 한다. 페어 프로그래밍을 할 때는 다른 사람의 생각에 마음을 여는것이 중요하다. 어떤 때는 배우고, 어떤 때는 가르치고, 어떤 때는 두가지 모두 하기도 한다.
사회활동: 다른 개발자들과 어울리기
소프트웨어 개발자들이 내향적인 모범생이어도 괜찮다는 것은 이제 옛날 이야기다. 아이디어를 주고 받고, 페어 프로그래밍을 하고, 사회적 교류할 수 있는 인적 네트워크를 형성하는 것은 성공적인 커리어를 위해 상당히 중요하다. 커뮤니티에 참여하면 커리어에 도움이 된다는 장점 외에도 혼자가 아니라는 정서적 만족감도 얻을 수 있다.
의도한 발견
소프트웨어 프로페셔널이 할 수 있는 최대의 실수는 자신이 모르는 것을 모른다고 받아들이지 않는 것이다. 아직 배울 내용이 많음을 인정하는 것은 성숙하다는 증거이고 마스터가 되기 위한 첫걸음이다.
모르는 것을 배우는 기회를 만들기 위해 항상 노력해야 한다. “내가 무엇을 모르는지 알지 못하는데 어떻게 그걸 배울 기회를 만들 수 있나?”라고 반문할 수도 있다.
‘무지’라는 장애 요소를 제거하는 것은 우선순위에서 높이 두어야 한다. 프로젝트를 더 효율적으로 수행하기 위해 꼭 필요한 일이다.
일과 삶의 균형
일과 개인 생활에 균형을 잡는 것은 매우 어렵다. 업무 외 개인 시간을 내어 커리어에 대한 투자해야 한다고 하면 항상 “그럴 시간이 없다.”라는 대답이 돌아 온다. 진실은, 항상 시간이 있다는 것이다. 최적화를 하지 못할 뿐.
사간 만들기
시간이 부족하다는 점을 게으름에 대한 변명으로 이용할 때를 꽤 자주 본다. 생산성 없는 활동을 전혀 하지말라는 말은 아니다. 좀 더 절제하라는 의미다. 이러한 활동들이 긴장을 풀고 휴식을 취하는 좋은 방법이기는 하지만 매일 저녁 밤을 새우면서까지 할 이유는 없다.
한 주에 하루 정도는 출근 전에 카페에서 한 두 시간 동안 자기계발을 해보자.
침대에 평소보다 30분 정도 일찍 들어서 잠들기 전에 독서를 하거나, 블로그를 보거나, 기술 관련 스크린 캐스트들을 보자.
집중: 뽀모도로 기법
업무 외 시간을 잘 활용하려면 그 시간에 제대로 집중하는 것이 핵심이다. 시간을 쓰기 전에 그 시간을 어디에 쓸지 미리 정해두는 것이 좋다.
뽀모도로 기법 다섯 단계
- 어떤 일을 할지 정한다.
- 뽀모도로(타이머)를 25분에 맞춘다.
- 타이머가 끝날 때까지 그 일을 한다.
- 짧게 쉰다(보통 5분)
- 매 4회의 ‘뽀모도로’마다 길게 쉰다(15~30분).
균형
무엇을 하든지 페이스를 유지하는 것이 중요하다. 일과 삶의 균형을 건강하게 유지하기가 어렵기는 하지만 가능하다.
프로페셔널로서의 삶이 건강해야 가족의 삶도 건강해진다. 프로페셔널로서의 삶이 건강하지 못하면, 낮은 소득에 대해서 걱정하고, 업무에 대해서 걱정하고,
직장에서 해고되지는 않을지, 해고되면 다른 좋은 직장을 찾을 수 있을지 걱정 속에 살아야 한다. 이렇게 되면 개인 영역의 삶까지 심각하게
나쁜 영향이 간다.
경쟁력있는 프로페셔널로서 좋은 인적 네트워크를 가지고 시장이 요구하는 기술을 습득하고 있다면 삶에 대해서 크게 걱정하지 않아도 된다. 그러면 우리의 가족과 친구들에게 더 많은 관심을 기울일 수 있다.
요약
커리어의 주인이 되기는 어려운 일이다. “나는 언제든 괜찮은 급여의 좋은 일자리를 찾을 수 있다.”라고 자신있게 말할 수 있으려면 상당한 노력을 기울여야 한다.
우리는 모두 정확히 같은 만큼의 시간이 주어진다. 차이점은 그 시간을 어떻게 쓰느냐일 뿐이다.
댓글남기기