오래 전에 작성했던 코드를 지금에 와서도 고칠 부분이 없어 보인다면, 그것은 그동안 배운 것이 없다는 뜻이다.
소프트웨어 장인이라면 스스로가 만든 것에 애정과 자부심을 가져야 함은 기본이다. 계속해서 더 나은 프로페셔널이 되기 위해 일평생 정진해야 한다
챕터 처음에 나오는 문구다. 누구라도 공감이 될거다.
동료와 같은 시기에 같은 직위로 입사해 1년 정도 같이 일했다...
동료에게 요즘 일하는 것이 어떤지 물었더니 "나는 정말 이 회사가 싫다. 진절머리 나는 회사다."라는 대답에 적잖이 놀랐다.
나는 당시 ,정말 즐겁게 일하고 있었기 때문이다...
커리어의 주인이 누구라고 생각하느냐고 물었다.
동료는 내 질문을 잘 이해하지 못한 듯 했고...
같은 회사, 같은 프로젝트에서 누구는 즐겁게 일하고 배우고, 누구는 불만불평만 하고 배운게 없다고 시간낭비라 취급한다.
저자가 말하는 커리어의 주인은 누구이며? 무슨 차이가 있을까?
내 커리어의 주인은 누구인가
회사에서 책을 사주지 않거나, 교육 프로그램이나 컨퍼런스에 보내주지 않는다면...
그 회사가 나쁜 회사가 되는 것일까?
회사가 개발자 역량에 투자를 하지 않는다면 어떨까? 흔히 말하는 개발자가 성장하기 힘든 회사다.
주변의 개발자들은 성장할 수 있는 회사로 이직하라고 말을 많이 한다.
집에 물이 새서 배관공을 불러야 한다고 생각해보자.
프로페셔널들을 찾아갈 때는 어떤 문제를 해결하기 위해서다.
그런데 그 프로페셔널이 당신에게 "최신 기술 서적을 사주세요. 교육 프로그램에 보내주세요." 요구한다면...
고용주(회사, 고객)의 관점에서 이야기한다.
돈을 주고 문제 해결을 원하는데 배관공이 수리하기 위해서 책이나 교육을 요구하고 비용도 청구하면?
고용주는 배관공이 프로페셔널하다고 생각할까?
고객을 만족시키기 위한 투자는 스스로 해야 한다...
고객은 프로에게 좋은 서비스 및 최선의 방법으로 문제가 해결되기를 기대하며 대가를 지불한다.
고객은 프로페셔널의 교육이 아닌, 그의 지식과 기술에 대한 돈을 지불하는 것이다...
이는 스스로를 발전시키는 데 자신의 돈과 시간을 들여야 한다는 것이다...
회사가 새 지식을 가르쳐 주길 기대한다면...
개발자로 가장한 공장 노동자일 뿐이다.
커리어의 주인은 누구인가? 회사? 아니다 개발자 본인이다.
또한 저자는 회사가 직원에게 투자하는게 고용주의 책임, 의무라 생각하지말고 그런 기회가 있다면 배려로 받아들이자고 말해준다.
끊임없는 자기계발
다양한 학습방법이 존재하고 각자 선호하는 방식이 있어서, 몇 가지만 언급한다.
1. 독서, 많은 독서
- 특정 기술에 대한 서적 : 기술 서적은 당면한 업무와 관련된 것들에 대해 상세하고 심도 있는 기술 지식을 제공한다. 기술 지식은 가치가 상당히 빨리 떨어진다. 예) 자바, Hibernate, Node.js
- 특정 개념에 대한 서적 : 기초를 쌓을 수 있는 책이다. 새로운 개념이나 패러다임들을 소개한다. 이해하고 습득에 긴 시간이 소요된다. 테스트주도개발, 도메인 기반 개발, 객체 지향 설계 등이 있다. 이러한 개념을 알아두면 새 기술을 배울 때 학습 시간을 크게 단축시킨다.
- 행동양식에 대한 서적 : 효율적으로 팀에서 일할 수 있게 안내하거나, 더 나은 프로페셔널이 되도록 조언한다. 애자일 방법론, 소프트웨어 장인정신, 린 소프트웨어 개발, 심리학, 철학 등
- 혁명적 서적 : 일하는 방식이나 개인의 가치관을 바꾸는 책이다. 일상적인 업무 중 대화에서도 흔하게 언급된다. 실용주의 프로그래머, 디자인패턴(Gof), 테스트 주도 개발, 소프트웨어 장인정신, 리팩토링 등 완전히 이해하는 데 몇년 이상 소비된다.
2. 블로그
- 블로그는 실제 경험, 개인적인 발견, 의견, 성곰담, 실패담들이 담겨 있기 때문에 소프트웨어 정신이나 애자일 모델에 궁합이 잘 맞다. 충분한 지식이 없으면 잘못된 블로그 내용에 피해를 볼 수 있는 단점이 있다.
3. 기술 웹사이트
- 시장의 최신 동향을 알아보기 좋은 수단이다
끊임없는 훈련
품질이 좋은 코드를 능숙하게 작성하고 싶다면 높은 품질의 코드를 작성하는 방법을 훈련해야 한다. 훈련 외에 다른 수단은 없다
1. 카타
- 품세라는 뜻으로 일본 무예 훈련에서 나온 용어다. 작은 훈련용 코딩들을 의미한다. 훈련 문제들은 이해하는데 간단하지만 해결하기에 복잡하다는 특징이 있다. 같은 문제를 반복하더라도 매번 다른 테크닉, 다른 기술, 다른 접근 방법으로 효과를 최대한 받을 수 있다.
2. 펫(토이) 프로젝트
- 취미생활과도 비슷한 나만의 프로젝트다. 압박하는 요인이 전혀없다. 요구사항도 본인 맘대로다. 무언가를 배울 수만 있다면 원하는 것은 무엇이든 할 수 있다. 이것이 펫(토이) 프로젝트의 핵심이다.
3. 오픈소스
- 배우고 싶은 내용과 연관있는 오픈 소스를 찾고, 소스를 내려받아 실행해본다. 기여할 부분이 보인다면 문서 내용 추가, 테스트 코드 작성 등 간단한 것부터 시도하자. 오픈 소스는 훌륭한 개발자들의 방식을 체험하고 공개적으로 자신의 활동을 알릴 수 있는 기회이기도 한다.
4. 페어 프로그래밍
- 혼자서 배우는 데는 한계가 있다. 혼자 배운다면 배우겠지만 문제는 시간이다. 더불어 자신만의 좁고 편향된 생각에서 벗어날 방법이 없다. 페어 프로그래밍을 이용하면 새로운 내용을 빨리 배울 수 있다. 또한 자신의 실제 역량을 파악하는 기회도 된다.
후기
이번 챕터는 회사에 대한 불평불만보다는 커리어의 주인을 제대로 인식하고 발전에 대한 올바른 태도와 방법을 주제로 이야기한다.
시간에 대한 꾸짖는 소리도 있었지만 생략했다.
책에서 말하는 커리어를 위한 방법은 손쉽게 접할 수 있다. 수 많은 기술 서적부터 교육, 컨퍼런스, 인강 등 다양하다.
너무 많다보니 어떤거부터 접하고 시작해야할지 모를 정도다.
하지만 이번 챕터를 통해 어느정도 기준을 잡을 수 있는 기회가 되었으면 좋겠다. (나는 개념 서적과 디자인패턴부터 학습중이다 )
훈련외에 다른 수단이 없다는 말에 TDD 교육이 생각난다.
처음엔 다양한 개념을 배우고 코드에 녹여보려고 과제를 진행하면, 개념을 의식하면서 코딩하기가 힘들었다.
리뷰어에게 매일 피드백받고 수정하고 반복할 수록 의식하지 않아도 조금씩 개념을 코드에 녹이는 모습을 발견할 수 있었다.
좋은 품질의 코드를 위해선 반복적인 훈련밖에 없는거 같다.
그리고 배운 내용을 꾸준히 블로그에 기록하는 습관이 중요하다고 생각된다.
시간이 지나면 내가 짠 코드도 제대로 기억못하는데 책 내용은 오죽할까.
책을 읽고 느끼고 배운것을 잊지 않기 위해 오늘도 리뷰를 작성한다.
'서적 > 소프트웨어 장인' 카테고리의 다른 글
[CHAPTER 6] 동작하는 소프트웨어 (0) | 2021.05.06 |
---|---|
[CHAPTER 5] 영웅, 선의 그리고 프로페셔널리즘 (0) | 2021.05.05 |
[CHAPTER 3] 소프트웨어 장인정신 (0) | 2021.05.04 |
[CHAPTER 2] 애자일 (0) | 2021.04.27 |
[CHAPTER 1] 21세기의 소프트웨어 개발, Part1 이념과 태도 시작 (0) | 2021.04.24 |