Apprenticeship Patterns

프로그래머의 길, 멘토에게 묻다. 데이브 후버, 애디웨일 오시나이 지음 | 강준빈 옮김

📖 책을 고른 이유(동기)

멘토님에게 멘토링 5회차로 선물 받은 책이다.

받았을 때는 몰랐는데 매우 유명한 책이라는 사실을 나중에 알게 되었다.

멘토님이 이 책은 지금 개발자를 꿈꾸는 상태에서 읽어보고 3~4년뒤 다시 읽어보면 느끼는 점이 많을 것이라고 추천해주셨다.

앞서 말한 밸러스를 지키기 위한 독서이지만 이 책은 개발자자체의 삶을 살아가는 방법에 대한 책이다.

길잡이 책

책을 정리하며 몇년 뒤 다시 읽었을 때 지금의 생각을 다시 한번 떠올리기 좋을 것 같다는 생각이 들었다.

머리말

아직은 여기서 말하는 패턴이 무얼 의미하는지 깨닫지는 못했지만 성장해 나가는 패턴정도로 생각된다.

알지도 못하며 그 사실도 모르는 자, 바보로다 - 그를 멀리하라!
알지 못하나 그 사실을 아는 자, 못 배운 자로다 - 그를 가르치라!
알고 있으나 그 사실을 모르는 자, 잠든 자로다 - 그를 깨우라!
알고 있으며 그 사실을 아는 자, 깨우친 자로다 - 그를 따르라!

지은이의 글 첫 번째 글귀이다.

여기서 알지 못하나 그 사실을 아는자, 못배운 자는 날 의미하는 것 과 같고 알고 있으며 그 사실을 아는 자, 깨우친 자는 멘토님을 말씀하시는 것 같다.

내 시점에선 깨우친 자는 누군지 보이기 때문에 그를 따를 것이고 멘토님 시선에선 마찬가지로 못배운 자는 내가 되니 나를 가르친 것이다.

항상 궁금했던 점은 멘토님은 목적없이 나에게 귀한 시간을 내주시면서 왜 선의를 배푸는 걸까?

감사하는 마음과 꼭 보답하겠다는 마음은 항상 가지고 있고, 닮아가고 싶은 롤 모델이기도 하다.

물론 배품을 좋아하셔서 봉사활동의 일환이라고 생각하실 수 있다.

(지식의 나눔을 정말 좋아하시는 것 같다.. 지식의 나눔이라는 추상적인 것 보다 낚시하는 방법에 대해서 많이 길을 잡아주신다. 똑바로 서있을 수 있도록 자세를 교정해주시는 느낌)

지금까지 크게 생각해본적 없이 이런 멘토링을 받았는데 위의 글귀를 읽고 다시 생각해보게 된 것 같다.

멘토링이란 경험과 지식이 많은 사람이 스승 역할을 하여 지도와 조언으로 그 대상자의 실력과 잠재력을 향상시키는 것 또는 그러한 체계라고 한다.

아직 책을 다 읽지 않았고 추측에 불과하지만 함께 자라기, 멘토링, 컨퍼런스등 이런 활동을 지속하시는 이유는 가르치면서 멘토님도 성장을 목적에 둔게 아닌가라는 생각이 든다.

이러한 생각을 지속하다 보니 이게 사실이 아니라도 멘토와 멘티의 관계에 있어서 선순환은 존재해야 한다는 생각 든다.(받기만 하는 관계 x)

지금까지 멘토링을 너무 생각없이 받은게 아닌가라는 생각도 들고 좀 더 다른 시선이나 내 생각을 이야기 나누며 다른 맛?을 필요로 하실까? 라는 고민이 생겼다.

생각을 정리해보니 멘토님이 내게 바라는 것은 성장일 것이고 이런 관계에 대한 책임감도 조금 달라진 것 갇다.

정리해보면서 든 생각이지만 멘토님은 호밀밭 파수꾼의 주인공의 꿈과 똑같다.

몇천 명의 아이들이 있을 뿐 주위에 어른이라곤 나밖에 아무도 없어.
나는 아득한 낭떠러지 옆에 서 있는 거야.
내가 하는 일은 누구든지 낭떠러지에서 떨어질 것 같으면 얼른 가서 붙잡아 주는 거지.
애들이란 달릴 때는 저희가 어디로 달리고 있는지 모르잖아?

1장 들어가는 글

견습과정은, 기예를 통달하겠다는 필생의 열정을 서서히 불어넣는다는 점에서 중요하다. 이는 끊임없이 배우고자 하는 열정을 점점 쌓이게 하며, 그런 과정 속에서 견습생은 탁월한 개발자가 될 수 있다.

이 책은 소프트웨어 개발에 이제 막 제대로 발을 들인 개발자들을 위한 책이라고 설명한다.

먼저 경험한 수많은 개발자들이 남긴 기록들 중 비슷한 내용들을 패턴으로 분류하여 올바른 길, 더 나은 길을 설명해준다.

견습생이란?

“기본적으로 견습과정이란, 내가 지금 하고 있는 일을 항상 좀 더 좋고 세련되고 빠르게 해결하는 방법이 있을 거라고 생각하는 태도가 아닐까요?”

“견습과정은 당신이 발전해 가면서 더 나은 방법을 찾아 가는, 그리고 더 좋고 세런되고 빠른 방법을 배우도록 만드는 사람, 회사 혹은 상황을 찾는 상태이자 과정이라고 봅니다”

책은 다양하게 쏟아지는 훌룡한 개발자가 되기 위한 방법으로 사고방식에 초점을 두는 것 같다.

이러한 사고방식을 견습과정 패턴이라고 정의하였고 실제로 주위에서 많이 사용되고 있음을 말한다.

이러한 패턴의 특징은 생성적(generative)이라는 점이다.

느낀점

읽으면서 저자가 패턴을 찾아가는 과정에서 또 다른 패턴을 발견했다 문장이 되게 익숙하게 느껴졌다..

과거에 The Secret이라는 책을 읽은 적있는데 1장 내용의 느낌이 많이 비슷한 느낌을 받았던 것 갇다.

머리말부분에도 말했지만 내가 견습과정(개발자의 길로 들어가는 첫 스테이지..?)의 시작은 스스로 견습과정이라고 생각할 때 시작되는 것 같다.

스스로 얼마나 우물안 개구리였는지 깨닫는 과정에서 오는 학구열 그리고 좌절에서 많이 배우고 성장을 해야겠다는 생각이 든다.

2장 잔을 비우다.

잔이 가득 차서 넘치고 있지 않습니까?

시작부터 정곡을 찌르는 짧은 이야기로 시작한다.

이 이야기를 읽고 든 생각은 읽는 사람에 따라 정말 다양한 해석이 나올 것 같다는 생각이 들었다.

나는 지식의 허영심을 버리지 않고 대화를 이어가고 싶기 때문에 단편적이고 짧은 지식들을 테이프로 연결한 카세트라고 생각하고 실제로도 일상생활에서 자주 그러한다고 말할 수 있다.

물론 도움이 된 적도 있겠지만 결과적으로는 전혀 도움이 되지 못하는 행위임을 알게되기 까지 오래걸린 것 같다.

내가 채워온 잔은 정말 내가 채워온 잔이기 때문에 제대로 된 배움을 얻기 위해선 비울 필요가 있다.

최근에 들은 말 중 가장 인상 깊은 말인 “코드를 평가함에 있어서 평가란 사람 자체를 평가하는게 아닌 더 좋은 소프트웨어를 위한 평가이다.”

듣는 사람과 말하는 사람 둘 다 알고있어야 하는 말인 것 같다..!

첫 번째 언어

언어를 하나 선택하고, 그 언어에 능숙해져라.

어디서 읽은 글이였는데 컴퓨터 언어도 언어의 일종이기 때문에 한가지 언어를 어느정도 숙달이 된 상태여야 다른 언어의 습득이 쉽다는 내용이였다.

코딩을 할때 기본적인 사고방식을 해당 언어로 하기 때문인 것 같다.

여기서도 테스트코드의 중요성을 이야기하는데 정말 아직까지도 테스트코드의 중요성을 알지 못하는 것 같다.

언어 습득관련에서 테스트 코드의 용이함이 나오는 걸 봐서는 테스트코드가 언어, 프로젝트의 구조를 파악하기 정말 좋겠다는 생각이 든다.

지금은 C#을 공부하는 중인데 객체지향의 개념이 어느정도까지 올라간다면 함수형 프로그래밍도 도전해보고 싶다.

언어는 C++로..

오픈소스관련해서 최근 진행하게 된 유니티 커스텀 에디터 스터디에서 사람들이 커스텀한 패키지들을 볼 수 있는 사이트를 추천해주신 분이 계시다.

https://openupm.com/

이름부터가..

그 동안 깃헙으로 봤던 UniRx나 UniTask관련 패키지도 존재하고 통과된 커스텀 패키지들도 다양하게 볼 수 있었다.

이러한 패키지를 열어서 뜯어보고 공부해보면 좋을 것 같다.

해당 패키지를 열어서 테스트코드를 작성해본다..등등

흰 띠를 매라

새로운 시작을 하기전에는 내가 알고 있던 지식들을 잠시 내려놓는 편이 좋음을 말한다.

좋은 방법으로 내가 만든 프로그램을 다른 프로그래밍 패러다임으로 똑같이 만들어봄을 추천한다.

다른점에 대한 부분도 명확하게 들어오고, 장점과 단점도 확연하게 볼 수 있는 정말 좋은 방법같다.

열정을 드러내라

여기서 말하는 팀은 뭔가 한국에서 쉽게 찾을 수 있을 것 같지는 않다.

이상한 사람 취급을 받아야하는 상황은 유쾌하지 않은 경험이니 쉽게 열정을 드러내거나 다양한 방법을 적용해볼 기회가 있을까? 라는 생각이 먼저 든다.

그럼에도 내가 만약 인디게임팀을 들어간다면 적은 규모의 개발자동료라면 충분히 시도해보고 싶다는 생각이 든다.

꼭 팀이 아니더라도 스터디나 그룹, 동아리등 다양한 단체에서 열정을 드러내고 활동하는 것에 대한 이점은 최근에 들어서 많이 느끼는 것 같다.

동아리에서 만든 깃헙에서 Discussions에 위에서 말한 스터디 모집글을 올렸는데 비슷한 맥락인 것 같다.

먼저 열정을 드러내니 숨어있던 분들도 나와서 비슷한 이야기를 할 수 있었고 여기서 말하는 집단지성을 제대로 활용해볼 생각이다.

구체적인 기술

모든 패턴을 현재의 나를 대조하면서 생각하게 된다.

마찬가지로 커스텀 에디터를 만들어 본다는 기술 자체가 좋은 경험이라고 생각한다.

한번 익혀놓으면 기회가 될 때 추가적인 개발도 가능해지고 나름대로 어필할 수 있는 기술이라고 생각한다.

이러한 어필할 수 있는 기술에 대한 살을 붙이는 과정또한 중요한 것 같다.

독서토론중에 나온 이야기로 스팟보너스?잘 기억은 나지 않지만 매니저레벨에서 평가때 좋은 기술을 적용하거나 특출난 개발자에게 주는 보너스정도라고 한다.

사실 보너스라고 해도 몇만원되는 돈이기 때문에 크지 않다고 생각할 수 있는데 돈보다는 공인의 효과가 더 큰것 같다.

어떤 기술을 적용해서 좋은 성과를 얻었다고 했을 때 그것에 대한 보상이 증명되기 때문에 좋은 것 같다.

무지를 드러내라

제목자체가 내용을 정말 잘 설명하는 것 같다.

비슷한 문장으로 “평생바보로 사는 것 보다 한번 바보가 되는게 좋다”

가장 가깝게 갈 수 있는 길이 있음에도 돌아가는 이유는 사회적인 동물이기 때문에 본능의 영향도 있을 것이라고 생각한다.

그 이전에 사실 내 스스로가 다른 사람의 무지를 비웃거나 무시했기 때문일 것이다.

스스로 무지를 드러냄에 대한 걸리는 점이 없다면 쉽게 성장했을 것이다.

자기 자신을 먼저 제대로 바라보는게 먼저인 것 같다..!

무지에 맞서라

무지에 맞서라는 패턴은 무지를 드러내는 패턴과 균형을 잘 맞춰야 함을 강조한다.

무지에 맞서서 학습하는 과정에서도 무지를 드러내고 다시 맞서는 태도가 중요하다.

책에서 말하는 정보탐식가, 자기비하등을 예로 들어 극닥저인 패턴의 예를 보여준다.

이 패턴이 무지를 드러내라패턴 뒤에 등장한 이유는 학습함에 있어서 명확해지는 부분인 것 같다.

자신이 알고 모르고 정확하게 바라본 뒤 필요하다고 생각되는 부분을 학습해 나가야 하는 것 같다.

지금 진행중인 스터디 또한 동아리 깃헙에서 레포를 파서 전체적 동아리 내부사람들에게 진행상황또한 공유할 것 같다.

여기서 오는 공개적인 학습에 대한 긍정적인 효과도 기대가 된다..

깊은 쪽

무참한 실패를 맛본 적이 한 번도 없다면, 당신은 퀀가 가치 있는 일을 시도했던 적이 한 번도 없었다고 봐야 한다.

나에게 두드러지는 역할이나 어려운 문제가 주어진다면, 그 기회를 놓치지 말고 두 손으로 꼭 잡아라 두렵게 생각되는 일을 맡고 능력을 넘어서는 듯한 일을 실제로 함으로써만 당신은 성장할 수가 있다.

정말 공감이 많이 가는 말이다.

항상 안정을 추구하는 타입이지만 게으름이 너무 싫어서 큰 일을 벌려놓는 성격이다.

스터디 모집또한 같은 맥락으로 현재 진행중인 프로젝트 또한 2가지이다..

물론 기회가 된다면 더 할 생각도 있으며 두렵지만 나에게 도움이 된다는 걸 너무 잘 알기에 성장할 수 있는 기회 + 강제성이 부여되는 일을 좋아하는 것 같다.

혼자서는 잘 안하게 되는 타입이라..

한 발 물러서라

자신의 무지함을 깨닫는 곡선을 본적이 있다.

정말 많이 공감이 되는 내용이였는데 이제 어느정도 알겠다는 순간이 오는데 그때가 정말 아무것도 모르는 상태라는 것..

프로젝트를 진행 후 내가 얼마만큼의 길을 왔고 지금 현재 역량은 어느정도인지 깨닫는 과정이 정말 중요하다는 것

이 과정은 회피할 수 없으며 무지를 드러내고 무지에 맞서는 과정을 이어주는 다리이다.

느낀점

정말 뼈를 때리는 말들이 많아서 많이 아팠다..

정확한 자기평가에 대한 중요성을 강조하며 이번 장을 마무리한다.

다시한번 메타인지를..ㅠ

3장 긴 여정을 걷다.

데이브의 사례를 읽고 든 생각은 이론도 매우 중요하지만, 프로젝트나 개발자 커뮤니티등 헤엄칠 수 있는 공간이 있어야 성장할 수 있음을 말하는 것 같다.

긴 여정

눈을 감고, 앞으로 10년 동안 당신이 맡을 거라 생각되는 역할 중에서 가장 기묘한 것을 떠올려 보라.

프로그래머로써 기술적 성장은 언제나 설레는 일이다.

하지만 현실에서는 기술을 공부할 시간 보다 개인적인 시간, 업무에 시간이 많이 뺏기게 되며 성장할 기회를 잃어버린다.

견습과정에서는 학습과 장기적인 성장에 관점을 두고 장기적인 목표를 세우라고 말한다.

내가 지금 걸어갈려고 하는 프로그래머의 길을 다시 한 번 생각해보고 목표는 어디까지이고 뭘 하고 싶은지에 대한 생각을 정리하자..

지금의 나는 뭘 하고 싶고 어떤 기술을 공부하고 싶지만 그 기술을 나름 마스터했다고 생각했을 땐 또 다른 벽이 기다리고 있을 것

몇년 개발하고 그만둘게 아니라면 스스로의 지도를 그리고 긴 여정을 떠나야 한다.

예술보다 기예

나는 프로그래밍을 일종의 공예로 본다. 공예는 예술의 일종이기는 하나 순수 예술은 아니다.

검증된 해결 방법 VS 신 기술 도입

물론 새로운 기술 공부는 개발자로서 언제나 궁금한 영역이고 기분좋은 일이다.

하지만 판매하는 직업이기 때문에 이를 쉽게 결정해서는 안된다.

이기심을 선택하지 말고 고객에게 가치를 제공하는 데 집중하라

소프트웨어 장인의 길을 가고 싶다면 예술이 아닌 기예에 집중해야 하며 스스로 함정에 빠진 적 없는 지 점검해야 한다.

글 중에 50줄 짜리 게임과 백만줄 짜리 게임의 결과물로 봤을 때 고객은 해당 코드의 퀄리티를 모르는 것이 핵심이다.

그렇다고 모든 코드를 저품질 코드라도 상품성에 집중하라는 것이 아닌 균형을 잘 잡아나가는게 중요하다.

설계에 대한 고민을 충분히 하는 것은 매우 중요하지만 개발기간의 3/2을 생각만 하며 고민하는 것은 직업정신이 빠진 사람으로 장인으로 볼 수 없다.

또한, 여기서 오는 이점도 언급을 하는데 수리를 통한 동작 이해이다.

지속적인 동기 부여

프로그래머가 일하는 모습을 본 적이 있는 사람이라면, 자기 방식대로 일할 수 있는 기회가 주어졌을 때 프로그래밍은 그 자체로 가장 큰 동기를 부여한다는 것을 알 수 있다.

나에게 빗대어 설명하자면 번 아웃이 오는 경우인 것 같다.

프로젝트의 방향이 자꾸 변하게 된다면 프로젝트에 대한 애정, 흥미도 떨어지면서 자연스럽게 할애하는 시간도 줄어든다.

개발 자체에 흥미가 떨어지는 시점은 누구나 오기 마련인 것 같고.. 이 때 처음 프로젝트를 완성했을 당시나 코드가 자연스럽게 흐르는 과정을 생각해보면 도움이 된다.

견습생인 지금은 다양한 코드를 만지고 접하는 게 재밌고 흥미로울 수 있지만 회사나, 프로젝트의 요구에 따라 현실을 위한 코드를 짜야한다.

그런 코드들은 대부분 재미가 없고 다른 이들도 피하는 작업이기 때문에 이런 갈등이 생길 수 있다.

책에서 등장하는 키워드인 황금 족쇄"뭔가 새로운 걸 배우고는 싶지만 내가 이미 알고 있는 것들로 벌이가 너무 좋다."

대부분의 프로그래머들이 취업준비를 하며 회사에 맞게 공부하고 취업 후 실력이 퇴보되는 경우를 예로 볼 수 있을 것 같다.

스스로 긴 여정에 대한 질문을 던져봤다.

오비 페르난데스의 경우 이미 전문가임에도 새내기에 도전했다는 생각을 했을 때 만약 나라면 그런 선택을 할까..?

지금의 나라면 다른 기술이나 언어가 궁금해서 어느정도 학습은 하겠지만 완전하게 내 전문성은 내려놓지 못할 것 같다.

황금 족쇄가 왜 무거운 황금 족쇄인지 이름을 참 잘지었네..

열정을 키워라

신은 인류의 아주 일부에게만, 설령 얻는 것이 없더라도 열정으로 했을 일을 하면서 생계도 유지하는 특권을 주었다.

열정을 질식시키는 환경에서 나의 열정을 보호할 안전장치를 마련해라

사나운 관리자, 냉소적인 동료, 계층 사다리 등 회사의 업무환경에서는 필연적으로 마주치기 마련이다.

이러한 열정 종식자들을 스스로 뛰어 넘기 위해선 안전장치가 필요하다.

  1. 스스로 좋아하는 일을 하라

내가 만약 현실의 벽에 부딪쳐 작은 게임사가 아닌 회사에 입사하게 된다 해도 사이드 프로젝트로 인디게임 개발을 이어가는 것

회사에서 받은 스트레스와 식은 열정을 집에서 불태우며 장인의 길을 걷는다.

  1. 마음 맞는 사람들을 찾아라

냉소적인 동료가 아닌 성장하고 싶고 배움을 좋아하는 동료나 사람을 찾아라 지역 커뮤니티가 될 수 있다.

사이드 프로젝트를 비슷한 동료와 진행하거나 타인과 공유하면서 피드백을 받는다.

  1. 배운 것을 공유하라

스터디를 예로 들 수 있고, 진행중인 블로그도 포함이 된다.

  1. 고전을 읽어라

고전 책을 좋아해서 자주 읽을려고 하는 편인데 다시 한번.. 복기…

고전 책의 경우 정말 다양한 면으로 해석이 가능하기 때문에 때때로 지금의 문제에 대한 해결책을 제시해주거나 마인드를 바로잡아 주기도 한다.

  1. 나만의 지도를 그려라

상반되는 목표를 받았을 경우 자신만의 길을 위해 걸어가는 것이 좋다.

어느정도 소신은 당연하게 있어야 한다고 생각한다. 한국회사에선 힘들 수.. 있겠다는 생각이 들지만

스스로에 대한 실력이 확실하다면 그런 것에 대한 걱정은 무의미하다.

자신만의 지도를 그려라

헐뜯기 좋아하는 사람들을 조심해라.

공감이 많이 되는 말이다.

실제로 정말 많다고 생각하며 자신의 지식을 공유의 목적보단 우위에 서고 싶어하는 경우가 많기 때문이다.

게임개발 공부를 시작한지 이제 1년이 거의 되가는 것 같은데 초반에 공부에 어려움이 있어서 도움을 요청할 때 많이 만나봤던 것 같다.

느낀점은 헐뜯기 좋아하는 사람들이 바뀌기를 기대하는 것 보단 스스로 틈을 보이지 않는 것이 더욱 중요하다.

어느정도 표준화된 지도가 있지만 그 지도를 모두가 따라야 하는 것은 아니다. 때로는 특이한 지도가 성공에 더욱 가깝기도 하다.

지도는 가치관이나 주변사람들에 의해서 언제든지 수정될 수 있고, 항상 성장을 바라보고 그려나가야 한다.

책에서 예시로 나온 사례들을 보면 대부분 제자리 걸음에 대한 스트레스로 한계를 뛰어넘는 경험을 하였다.

스스로 정체되어 있다고 느낄 때는 과감하게 내려놓을 필요가 있다.

직위를 지표로 이용하라

자네를 선임 엔지니어에서 수석 엔지니어로 승진시켰네, 급여는 그대로지만 사람들이 자네를 덜 무시할거야.

직위라는 문자열에 속지마라

남들이 그럴 자격이 있다고 해도 견습과정이 끝난 것은 아니다.

하지만 직위라는 타이틀로 스스로가 얼마나 부족한지는 깨닫게 해준다.

전장에 머물러라

소비 제일과 임시변통이 판치는 이 사회의 유혹에 넘어가서 우리는 가끔 잘못된 길을 선택하는데, 거기서는 단지 성취의 환상, 만족의 그림자를 얻을 뿐이다.

프로그래머가 10년차정도까지 가게되면 PM정도의 직급을 얻을 것 이다.

시니어 개발자로 계속 근무하며 신입들고 같은 레벨에 머무리지 않고 전체적인 프로젝트를 관리하게 될 것

“숙련됨은 연습을 중단하는 그 시점부터 퇴보하기 시작한다.”

스스로의 선택에 따라 갈리겠지만 책에서 말하는 숙련공이 되기 위해선 전장에 머무르는 편이 좋다.

물론 회사쪽에 타협점을 제시할 수 있다.

또 다른 길

당신이 가는 길로 가지 않는다고 해서 그 사람들이 길을 잃은 것은 아니다.

위에서 말한 다른 길에 대한 내용이 여기서 나올 줄 몰랐다.

다른 길은 항상 존재하지만 걷기 전에 내가 그 길을 선택했던 이유를 떠올려라

느낀점

긴 여정이지만 대부분 내가 지금 걷고 있는 (공부하는 대학생,,?) 길에 대한 내용이며 지속적인 성장을 위한 조언들이 있었다.

아직은 회사에 들어가지 않아서 대부분의 회사에 관련된 내용은 프로젝트정도의 볼륨으로 생각했다.

4장 정확한 자기 평가

빠르게 학습하는 사람들의 주된 위험중에 하나가 좁은 연못 속 커다란 물고기가 되어버리는 것이다.

좁은 연못, 큰 물고기라고 해서 크게 문제가 되지 않지만 큰 물고기가 큰 연못이 있다는 사실을 모르는 것은 문제가 될 수 있다.

그 큰 연못에는 더욱 거대한 물고기들이 살고 있다..

소프트웨어분야는 특히 약간 앞서 나간 정도로 만족해 버리기 때문에, 범용함을 넘어서기는 아주 쉽다.

따라서 항상 큰 연못들을 방문하여 큰 물고기들을 만나봐야 하며 배움을 얻어야 한다.

가장 뒤떨어진 이가 되라

여우의 머리가 되기보다 사자의 꼬리가 되어라!

더 이상 배움이 진전이 없을 때의 문제이다.

해결방법은 간단하다. 주변을 당신보다 뛰어난 개발자들로 채워라.

현재 팀에서 가장 성장한 개발자가 되었다면 팀을 과감하게 벗어나 가장 뒤떨어진 멤버가 되는 팀으로 들어가라

가장 재밌다고 해야 할까.. 매번 시도해보고 싶은 패턴, 기억에 남을 것 같은 패턴이다.

뛰어난 개발자를 항상 모방하고 성장하며 나눠주고 다시 배움을 얻고 이 방법이 가장 빠르게 성장하는 방법이란 것을 알기에 패턴이 크게 와닿는 것 같다.

당연하게 부작용은 있다. 내가 들어가게 되면 해당 팀에 퍼포먼스가 크게 저하될 수 있고 신기술이나 배움이 느리다면 제외가 될 수 있다.

다른 시각으로 바라보면 동기로 작용하여 학습에 좋은 영향이 될 수 있다.

멘토를 찾아라

정말 공감 100% 삽질에 대한 생각은 많이 변화했지만 삽질은 좋은 효과를 가져온다. 혼자 학습하는 방법, 새로운 지식을 얻는 방법등 다양한 효과가 있는데 멘토는 그걸 한번에 해결해준다.

멘토를 찾아라는 사실 좋은 멘토를 찾아라의 경우로 스스로 걸어갈 수 있게 만들어 주는 멘토를 만나는게 매우매우 중요하다.

내가 가야하는 길을 이미 앞서 지나가본 사람들이기 때문에 찾아가서 배워야 한다.

마음 맞는 사람들

연관된 문제를 풀기 위해 힘을 모으고 있는 인재들의 커뮤니티보다 강력한 것은 없다.

스터디를 혼자 진행하다가 이번에 모집으로 교체하고 다른 한분과 같이 진행중인데 정말 모집하길 잘했다는 생각이 든다.

혼자서 볼 수 없는 부분, 동일한 목표, 서로를 감시, 성장하는 기분 등등 집단지성이 정말 굳굳,,

팔꿈치를 맞대고

나는 뭔가 해석하거나 알아내기 위해서 어느 정도 자유가 주어지는 것이 즐겁지만, 누군가와 함계 일하는 것도 즐겁다.

지금 진행중인 스터디가 좋은 예제이다.

같이 새로운 UI Toolkit, 패키지 릴리스 등 경험해보지 못한 기술이지만 같은 흥미와 목표를 가지고 있어서 공부하기에 적합하다.

짝 프로그래밍실제로 42서울을 진행할 때 진행하시는 분들의 간증을 들어봤는데 추천하시는 분들의 비율이 정말 높았다.

머리가 하나에서 두개로 늘어났을 뿐인데, 실제로 돌아가는 머리는 2개보다 더 많이 돌아가는 기분이였다고..

아마도 서로 목표가 확실하고, 자아성취..?, 나누고 싶은 마음등등 2명이서 마음만 잘 맞으면 나머지는 다 따라오는 사항들이니 속도는 분명하게 붙었을 것이다.

바닥을 쓸어라

장인적인 전통에서, 새내기는 마스터의 견습생으로 시작한다. 그들은 쉬운 일을 거드는 것부터 시작하고, 숙달되어가면서 점차로 더 크고 복잡한 작업으로 옮겨간다.

팀적인 조언으로 스스로 뭔가를 해낼 수 있는 일원임을 즘명하라

팀에 새로 합류하게 되었다면 이미 진행중인 프로젝트가 있을 것이고 받은 역할이 없다면 반드시 해야하는 일에 지원하여 스스로를 증명하는 것이다.

느낀점

겸손은 성공적인 견습과정의 토대 중 하나다.

이번 년도 목표를 되게 잘 세웠다고 생각했는데 3,4장을 읽고 나서는 조금 더 구체화를 할 필요가 있다고 느꼈다.

지금의 목표는 그냥 당장 하고싶은 목표들이지만 숙련공이 되기 위한 목표가 많이 부족하고 납득이 되어야 함을 느낀다.

5장 끊임없는 학습

만일 그래도 괜찮다면, 우리는 일을 진지하게 시작하기도 전에 늘 뭔가 주의를 돌릴 만한 일이 일어나지 않을까 하고 기다려 볼 것 이다.
큰 성취를 이루는 사람들이란 지식을 너무나 갈망하여 좋지 않은 여건에서도 그것을 탐구하는 이들이다.
여건이 좋을 때란 결코 오지 않는다.

매우 찔리는 문장으로 시작하는데 사람은 다 비슷한것 같다.

나는 항상 밥을 먹고 나선 바로 공부나 작업에 들어가지 않고 어느정도 휴식을 취하는데 그 부분에서 오는 자기합리화를 벗어난 적이 없다.

흔히 딴짓을 하는 나를 막을 수 없기 때문에 예전에 읽은 인생의 12가지 법칙의 책상부터 정리하는 것 즉, 최대한 딴짓을 할 수 없는 환경을 만드는 것이 중요하다.

지금 이 글을 쓰며 진행중인 모각코(모여서 각자 코딩..)의 프로그램도 어느정도 서로 감시하며 도서관분위기를 조성해 딴짓을 못하게하는.. 지금의 상황에 잘 맞는 말인 것 같다.

책에서 말하는 배우는 방법을 먼저 터득해야하는 것은 전적으로 동의한다.

지금은 어느정도 궤도에 오른 것 같지만 항상 이렇게 공부하는 방법이 맞을까? 라는 의문이 생길 때가 있다.

주위의 숙련공들은 항상 학습을 달고 사는데 그에 비해 새로운 것을 배우고자 하는 방법(태도)이 부족한 것을 알고 있다.

능력의 폭을 넓혀라

모르는 것을 배우는 일이, 어떻게 하는지 이미 아는 일을 행하는 것보다 더 중요할 때가 흔히 있다.

소프트웨어 전반적인 정보, 사용하고 있는 언어, 툴의 신기술의 범위는 정말 엄청나게 넓다. 당장 검색만 해도 쏟아지는 정보들이 넘친다.

한가지 기술에 대해서 탐구하고 공부하라는 것이 아닌 능력의 전반적인 폭을 넓히는 과정이다.

여기서는 새로운 지식과 경험을 찾아가는 활동이 수반되는데 책에서는 커뮤니티, 블로그, 지역모임등 다양한 정보를 얻을 수 있는 창구를 활용하길 적극 권하고 있다.

자신만의 정보를 축적하는 것은 현시대에서 정말 멍청한 짓이라고 할 수 있다.

뒷 부분에 나오지만 견습과정을 버리고 정보의 바다에 휩쓸려 한가지만 집중적으로 탐구하고 개발하는 사람들은 당장 깃허브만 봐도 넘친다.

하루 이틀 따라간다고 해서 따라갈 수 있는 수준이 아니며 그들이 정리해놓은 정보를 적극적으로 활용해야 한다.

책의 사례말고도 깃허브의 Explore를 잘 활용하면 관심사를 star로 수집할 수 있고 topic도 등록하면 비슷한 정보들을 보여준다.

실제로 잘 활용하고 있다.

이외에도 레딧, 동아리, 개발자 모임톡 등 2023년에는 더욱 많은 정보를 얻을 수 있는 기회가 있다.

그렇지만 취업한 친구들을 보면 어느순간 소방호스를 끄는 순간이 오는 것을 볼 수 있는데 책에서 그런 부분까지 언급하니 신기했다.

  • 어떻게 능력의 폭을 넓힐지 이해했다면 언제 그것을 실행으로 옮길 것인지 알아야 한다..!

연습, 연습, 또 연습

우리가 마스터라고 알고 있는 사람들은 어떤 특정한 기술에 더 능숙해질 목적으로 거기 전념하지는 않는다.
사실 그 사람들은 연습하는 것 자체를 좋아하며, 이 때문에 그들이 점점 더 능숙해지는 것이다.
그리고 더 능숙해질수록 기본적인 동작을 더 즐기게 되는 선순환이 완성된다.

연습자체에 대한 시선을 다르게 하는 것이 중요한 것 같다.

한가지 문제에 대해서 여러번 풀어보고 다른 방식으로 풀어보고 반복하는 과정을 42서울때 몇번 경험을 해봤는데 그 때 생긴 기예?는 아직까지 기억에 남고 잘 활용하고 있다.

정말 귀찮고 짜증나는 일이라는 프레임이 항상 씌워져 있지만 실제로 작업할 때는 마감도 없고, 평가도 없기 때문에 온전히 몰두할 수 있는 환경이 생기게 된다.

지금은 객체지향을 잘 활용하고 싶어서 다양한 알고리즘을 c#으로 짜보는 연습을 하고 있는데 정말 다양한 방법이 나온다..

조금 더 익숙해지면 멘토님이 예전에 말씀해주신 수학문제를 푸는 코딩..?

코딩테스트형식의 암기가 아닌 진짜 문제를 해결하기 위해 고민하고 수학적 공식을 가져와 코드로 만들고 표현하는 방법이 재밌을 것 같다는 생각이다.

항상 새로운 기술을 공부하다 보면 기반이 튼튼하지 못해서 뒤로 다시 돌아가는 문제가 생겼는데 그 때 마다 그냥 정리된 글만 보고 눈으로 이해정도까지 가는 레벨이였다면 연습, 또 연습은 실제로 활용해보고 완전히 다시 풀어보는 과정이 가장 쉽게 기억에 각인됨을 알고 있다.

부숴도 괜찮은 장난감

어떤 일이든 간에 사랑하지 않고서는 정말로 잘 할 수가 없다.

경험은 실패로 부터도 얻어지고 종종 무언가를 배울 수 있는 가장 좋은 방법이 되기도 한다.

책에서 나온 저글링의 비유가 참 마음에 든다.

앞서 나온 패턴들에서 언급한 것 처럼 예술보다 기예 새로운 기술을 적용해보고 싶다고 진행중인 프로젝트에 무작정 도입할 수 없다.

저글링을 3개로 하던 내가 5개를 실제 공연에서 할 수 없듯이 5개를 돌리기 위한 개인적인 연습공간이 필요하다.

그런 연습공간은 개발자는 항상 가까이 두어야 하고 그런 연습공간에선 부숴지는 것에 대한 걱정이 없어야 한다.

나만의 장난감을 만드는 것에 대한 두려움이 없어야 하고 그것을 온전히 즐겨야한다..ㅜ

소스를 활용해라

프로그래머가 되고자 준비하는 가장 좋은 방법은 프로그램을 짜는 것이며, 다른 사람들이 작성한 뛰어난 프로그램을 공부하는 것이다.

다른 책에서도 나오는 라이브러리를 최대한 활용해봐라 라는 내용인 줄 알았는데 (오픈)소스코드를 전체적으로 분석해보고 과거 이력을 따라가며 왜 그렇게 했을 지 생각해봐야 한다는 내용이다.

다른 사람들이 작성한 내용을 전반적으로 파악했다면 코드의 리펙터링을 시도해본다.

리펙터링과정에서 자기 생각과 다르다고 느끼는 지점이 불가피하게 도달하게 될 것인데 이때 스스로 자문해보는 것이다.

개발한 사람들이 내가 알지 못하는 무언가를 알고 있었을지 혹은 그 반대인지 생각해보고 이를 기록으로 남겨놓는 것도 좋은 방법이다.

이런 과정을 반복하다 보면 다른 사람들의 코드에서 얻어낸 미묘함과 요령으로 채워진 도구상자를 가지게 된다.

이 도구상자는 작은 문제를 빠르게 푸는 능력을 연마하게 해주는데 이는, 비슷한 문제를 예전에 보았기 때문이다.

일하면서 성찰하라

자기 성찰은 쉽지 않은 일이지만, 우리는 자신의 성공보다 실패를 연구함으로써 더 많이 배울 수 있다고 나는 믿는다.

배운 것을 기록하라

쓰는 행위 자체가 가진 힘 역시 과소평가해서는 안 된다.
당신은 더 큰 목적의식을 잃어버릴 수도 있을 텐데, 쓴다는 행위는 한 발짝 물러서서 문제에 대해 깊이 생각할 수 있도록 해 준다.
앞뒤 없는 비난의 글을 쓰는 사람이라도 어느 정도 생각을 해야만 한다.

정말 뼈저리게 느끼고 기록을 습관화하고 있다.

대학생시절에는 배우고 나서 1달만 지나도 가짜기억만 남고 제대로 기억하지 못해서 그 때 당시에는 다시 학습을 반복했는데 뭔갈 뚜렷하게 개발했다기 보다 배우는 방법을 몰라서 그냥 외우는 식의 공부만 반복했다.

지금은 블로그, 깃허브에 항상 기록을 해두는데 점점 익숙해질 수록 내 기억처럼 꺼내서 쓰고 있다는 점이 너무 좋다.

읽은 책을 기록하는 BookReview, 좋은 코드를 기록하는 CodeReview, 하루 스케줄/월 스케줄/ 목표를 관리하는 Todo, 좋은 내용들을 정리해서 올리는 테크블로그까지 다양한 방법으로 발자취를 남기고 있다.

배운 것을 공유하라

너그러운 마음이 행우을 가져다준다는 것은 아무리 얘기해도 과장이 아닐 것입니다. 당신 주위에서 제일 운이 좋다고 하는 생각하는 사람들을 한번 살펴보세요.
모두가 부러워하고, 늘 무엇이든 자기 뜻대로 되는 것처럼 보이는 그런 사람들 말입니다.
그런 사라믈이 단순히 운이 좋았다고 치부하기는 어려울 겁니다.
내가 아는 사람들은 항상 준비가 되어있고, 기예를 위해 노력하며, 주변의 사람들로 하여금 운이 좋다고 느끼게 하는 사람들이었습니다.

지금 나에게 가장 좋은 형태는 아카데미 컨퍼런스 모임, 스터디인것 같다.

아카데미 컨퍼런스모임은 격주로 분량의 책을 읽고 서로 느낀점, 논의사항을 나누며 지식을 나누는 자리인데 정말 많은 도움이 된다.

대부분 현직자분들이 많아서 듣고 있기만 해도 도움이 되는 내용이고.. 못 알아듣는다고 쓸모없는 내용이 절대 아니다.

그분들은 나에게 배운 것을 공유하는 중이고 나는 줄의 맨 끝자리에 서있는 셈이다.

42서울에서도 동료평가를 가장 이상적인 예로 들 수 있을 것 같다.

자신이 공부한 것에 대해 동료에게 설명하고 토론하는 것이 가장 효과적인 학습법임을 알기 때문에 세계적으로 진행중인 것이다.

피드백 루프를 만들어라

우리 소프트웨어 업계 종사자들은 어느 정도는 눈에 보이지 않는 제품을 가지고 일하지만, 눈에 보이지 않는다는 점 때문에 피드백에 대한 필요성은 오히려 커진다.

일하면서 성찰하라와 비슷한 내용인 것 같은데 확실히 이 두가지 내용은 아직은 이해하기 어려운 부분인 것 같다.

경험적인 부분이 없어서 이해가 아직 되지는 않지만 내 레벨에선 풀리퀘를 통한 코드리뷰정도인 것 같다.

실패하는 법을 배워라

천재성은 종종 잘못 이해된다. 그것은 탁월한 지적 능력의 문제가 아니라 성격의 문제이다. 천재성은 무엇보다도 기꺼이 실패를 인지하고, 미봉책으로 가리려 하지 않으며, 변화하고자 하는 의지를 필요로 한다.
그것은 실패에 대한 의도적이고 심지어는 강박적인 성찰과, 새로운 해법에 대한 지속적인 탐색에서 비롯된다.

실패를 두려워하지 않을려면 실패에서 오는 배움을 깨닫고 그것이 오히려 좋은 경험이 될 수 있음을 인지해야 한다.

책에서 나온 실천방안의 내용이 앞서 나온 연습, 연습, 또 연습의 내용과 비슷해 보이지만 스스로 실패에 대한 생각을 전환할 수 있는 방법같다.

느낀점

책에서 말하는 끊임없는 학습에 대한 저주 또는 축복이라는 말이 개발자로써는 항상 가지고 가야하는 말인 것 같다.

실패와 자기 객관화(메타인지)를 통해 자신의 약한 부분을 알아보는 것이 표면상으로는 부정적일 수 있으나 이러한 패턴들을 활용하여 무지함을 줄여나갈 수 있다..!

만약 성자하는 개발자, 소프트웨어 장인정신으로 향하지 않고 적당한 취업, 전문적인 영역에 특화되고 싶다면 알고있는 것에만 집중할 수 있는 것 같다.

이번 장은 연습, 연습, 또 연습, 부숴도 괜찮은 장난감, 소스를 활용해라를 최대한 활용하고 싶다는 생각이 들었다.

게임에 대한 개발 프레임워크가 부족하다는 생각이 있어서 다양한 오픈소스의 게임들을 분석할려고 생각만 했는데 오늘 이 패턴을 엮어서 나만의 루틴을 만들 수 있을 것 같다.

오픈소스게임을 뜯어서 나만의 연습공간을 만들고 직접 리펙토링을 해보고 더 좋은 방법을 기록하고 공부해보는 것이 지금에서는 가장 흥미로운 작업일 것 같다.

6장 학습 과정의 구성

이제 그는 평가가 아니라 지식에 의해 동기를 얻는 사람이 될 것이다. 그가 학습하는데 외부의 압력 같은 것은 필요하지 않다.
압력은 오히려 그의 내부에서 생겨난다.
일단 자리를 잡으면, 이런 유의 동기 부여는 기세로 타오른다.

지금은 정보화 시대로 정말 많은 정보가 넘치는 세상이다.

궁금한 정보가 있다면 10초도 안걸려서 내용을 확인할 수 있다..

학습과정에서 추천도서를 찾고 구성하는 것은 스스로 해야하는 일이다.

도서 목록

누구라도 한 번에 모든 것을 배울 수는 없다. 하지만 오늘은 이것 조금 내일은 저것 조금 한다든지,
전에는 아무도 생각하지 않았던 순서로 학습해 간다든지,
마음 내키는 데까지 공부한 다음에 다른 주제로 옮겨간다든지 하는 견습생을 제지하는 어떤 규칙이나 원칙이 있는 건 아니다.
견습생이 뭔가 배우고자 할 때는 일정상 미리 조율된 시간이 될 때까지 기다릴 필요는 없다.
그리고 배울 준비가 아직 안 됐거나 재미 없거나 두렵거나 불필요하다고 생각되는 것들을 배울 필요도 없다.
배우는 사람은 자기만의 학습 계획을 스스로 세운다.

어느정도 언어의 익숙해지고 개념이 정리된 순간이 온다면 읽어야 하는 책, 정보의 양이 엄청난 것을 알 수 있다.

아직 언어에 능통한 것도 아니지만 공부해야할 지식을 적어둔 리스트만 봐도 숨이 막힌다..

해결 방법으로 독서목록유지를 말한다.

지금 작성중인 md파일로 github 그리고 블로그에 글을 만들어 공유의 목적과 목록유지를 이루고자 하는데 이 패턴 자체가 이런 상황을 말하는 것 같다.

뒤를 돌아서 읽은 날짜나 내용을 다시 본다면 스스로의 독서 습관을 성찰하는 좋은 방법이다.

또한 내용을 다시 본다면 그때 빠진 내용이나 공통되게 나타나는 패턴과 동향을 알 수 있다.

이러한 정보를 공유하고 있다고 할 때 다른 사람이 내용을 보고 흥미롭게 생각해 좋은 관계로 이어갈 수 있거나 자신과 다른 생각을 말해줄 수 있다.

책과 책사이의 숨겨진 연관성이나 드러나지 않은 보석을 발견하게 될 수도 있다.

내가 세운 독서목록은 항상 우선순위 큐의 형태를 유지해야하고 쏟아지는 정보의 양에 의해 뒤로 점점 밀리는 책이 존재할 것이다.

이는 좋은 일이며 잠재적인 지식의 홍수에서 우선순위를 매겨 걸러내는 방법을 제시하는 것이 목적이기 때문이다.

이 패턴을 실천할 때 어려운 점은 책을 읽을 때 어떤 기준이 존재해야 하는데 그 기준을 정하려면 해당 주제를 깊이 이해하고 있어야 한다는 점이다.

우선 그 주제를 개괄적으로 이해할 수 있도록 해주는 책을 한권 골라서 읽고, 그 다음에 흥미를 끄는 세부 주제에 대해서 더 자세히 다룬 책들을 고르는 것이다.

다른 방법으로 마음 맞는 사람들과 멘토들에게 의지하는 것이다.

멘토들은 필독서를 추천해 줄 것이고, 동료 견습생들과의 토론은 그 책들을 어떤 순서로 읽을지 정하도록 해줄 것이다.

또한 사람들이 공개해둔 독서목록을 활용하는 방법도 있다.

https://github.com/miloyip/game-programmer

실제로 게임 프로그래머의 독서 목록이 이 패턴에 맞게 순위 별로 정리된 것도 있다.

꾸준히 읽어라

좋은 프로그래밍 책을 두 달에 한 권, 즉 일주일에 대략 35페이지 정도만 읽어도,
당신은 이내 이 분야에 대해서 확실한 감을 갖게 될 것이며 주변의 거의 모든 이들과 구별되는 수준으로 올라설 것이다.

지금 참여중인 모각코시간을 원래는 블로그 포스팅이나 알고리즘 문제풀기 정도로 사용을 했는데 좀 더 일정한 관리를 하고 싶어서 주에 딱 2시간 토요일 10:30~12:30까지는 책을 읽는 시간으로 두기로 했다.

당연하게 개발관련 책들이고 멘토님이 추천해주신 책들로 읽고 있다.

대략 50쪽 분량을 읽고 정리중이다..

고전을 공부하라

당신의 직업이나 관심 분야에서 위대한 저작들, 즉 지금까지 있었던 가장 훌룡한 책과 기사, 연셜문등을 찾아서 그것을 짖지하게 공부하기 시작하라

정말 공감되는 패턴이다.

대학교에서 소프트웨어과에 진학했을 때 1학년은 정말 죽어라 공부를 하지 않았다..

학교에선 고전 책을 읽어야 졸업을 시켜준다고 들어서 다양한 고전 책들을 접했는데 그 때 고전책들의 매력에 빠진 것 같다.

왜 고전이 고전인지 알고 책을 다시 보면 읽을 때 마다 새롭고 다양한 해결책을 주며 동반자를 만들어 준다.

고전 소설의 경우에는 주인공을 나의 동료로 만들어서 생각의 방향을 전환해준다..

가장 재밌고 기억에 남는 책들은 앵무새죽이기, 예루살렘의 아이히만, 좁은 문, 인간실격 등등..

아직까지도 많은 도움이 되고 벅차오른다.

요즘엔 많이 못 읽었는데 고전 책 독서모임같은 모임도 들어가고 싶다.

주마다 일정시간 읽고 토론하는.. 시간이 된다면

더 깊이 파고들어라

실무에서는 대형 프로젝트의 초반에 알고리즘 때문에 문제가 생기지 않는다.
오히려 프로그래머가 더 이상 어떻게 진행해야 할지 모르게 되거나 현재 짜 놓은 프로그램이 부적합하다는 사실이 갑자기 명백해질 때
하위 문제로 모습을 드러내곤 한다.

각종 도구를 사용할 때 지금하는 작업을 완료하는 데 필요한 정도로만 배우고 있다.

내재된 이슈도 무시하고 제공된 튜토리얼이나 장난감 예제를 통째로 복사하여 사용한다면 수많은 도구들을 사용하더라도 피상적인 지식만 존재하기 때문에 미묘한 버그나 깊은 지식이 필요한 일에는 해결하지 못하는 문제가 발생한다.

먼저 도구, 기술분야, 기법같은 것을 깊이 파고는 방법을 배워라 왜 그런식으로 되어 있고 알게 될 때까지 깊이 들어가는 것이다.

같이 적용하기 좋은 패턴은 연습, 연습, 또 연습을 적용해서 다른 방법으로도 접근해보고 깊이를 탐구하는 것이 좋다.

어중간한 지식, 피상적인 지식보다 해당 분야에 깊이 있는 지식을 가졌다면 엄청난 자신감을 주며 새로운 깊이있는 지식에 도전할 때도 도움이 된다.

앞에서 다룬 학습하는 방법에 일환으로 깊이 있는 지식을 배우는 방법이 학습되는 것이다.

익숙한 도구들

바퀴 자국안에 빠지게 되면 바퀴를 아무리 돌려도 계속 제자리고, 유일한 진척이라고는 거 깊게 파이는 자국뿐이다.
홈은 다르다 바퀴가 홈에 맞물리면 당신은 힘들이지 않고 앞으로 직진한다.
확실히 믿을 수는 있지만 당신과 세상이 어떻게 변했는지는 감안하지 않은 그런 방식들에 집착한다면 결국은 바퀴 자국에 빠지게 될 것이다.

읽으면서 예술보다 기예라는 패턴이 생각났다. 차이점은 프로젝트와 기술적인 부분인 것 같다.

내가 사용중인 도구들은 지금에선 익숙한 도구들이라 아직 책에서 말한 실전경험이 없지만 도구를 쉽게 버리고 새롭게 배우는 것에 대한 패턴..

깊이 파고들어 한가지 도구에 익숙해지면 도구를 사용한 쉬운 해결방법이 보이게 된다.

하지만 더 쉬운 도구, 대중성 있는 도구가 나와도 인지하지 못한다고 한다..

느낀점

학습과정의 구성에 대해서 멘토님에게 질문글을 달았는데

내가 물어볼려고 했던 내용이 책에서 많이 나와서 당황했다..

정보를 수집하고 공부하는 과정에서 밀려드는 정보의 양에 놀란적이 나만 있는 것이 아닌 공통된 견습생의 패턴으로 보이는게 신기하다.

당신은 계속되는 자기 교육 과정에 능동적으로 참여할 필요가 있다.

7장 맺는 글

장인들은 원숙해지는 솜씨에 가장 자부심을 느낀다.
단순한 모방이 지속적인 만족을 줄 수 없는 것은 이런 이유 때문이다.
기술은 점차 발전해 가야만 한다.

마스터는 없다 아직까지는..

지금까지 소프트웨어의 역사는 100년 정도라고 할 수 있다..

한 인간이 태어나고 죽을 때까지 100년이라고 한다면 지금은 아직도 개발되어야 하고 많은 역사나와야 한다.

저자는 스트라디바리의 이야기처럼 지식의 전달을 강조한다.

저자는 제멜바이스의 이야기처럼 설득의 필요성도 강조한다.

우리가 마스터를 분간할 수 있는 방법 중 하나는 그의 학생들이 야망과 성취라는 측면에서 마침내 스승을 능가하는지를 보는 것이다.

소프트웨어의 역사가 더욱 발전하기 위해선 견습생이 계속해서 마스터를 뛰어 넘어야 하고 발전해나가야 한다.

패턴 목록

  • 가장 뒤떨어진 이가 되라(Be the Worst): 주변의 모든 이들을 일찌감치 앞서버리면서 당신의 학습은 더디어졌다.
  • 고전을 공부하라(Study the Ckassics): 당신과 함께 일하는 경험 많은 사람들은, 당신이 이미 읽었을 것이라고 여기는 책에서 나오는 개념들을 계속 언급한다.
  • 구체적인 기술(Concrete Skills): 뛰어난 개발 팀에서 일하고 싶지만, 당신에게는 아주 적은 실무 경험밖에 없다.
  • 꾸준히 읽어라(Read Constantly): 신속하게 숙련도를 끌어올렸지만, 당신에게 보이지 않는 심오하고 더욱 근본적인 개념들이 어디선가 끝없이 흘러가고 있는 것 같다.
  • 긴 여정(The Long Road): 당신에게는 소프트웨어의 명장이 되고자 하는 포부가 있다. 비록 사람들이 당신에게 기대하는 것은 그게 아닌 것 같지만.
  • 깊은 쪽(The Deep End): 당신은 자신의 경력이 안정 상태에 접어든 것이 아니라 실은 틀에 박힌 듯 정체된 것이 아닌가 두려워지기 시작한다.
  • 능력의 폭을 넓혀라(Expand Your Bandwidth): 소프트웨어 개발에 대한 당신의 이해는 좁으며 일상 작업에 관련된 저수준의 세부사항에 맞춰져 있다.
  • 독서 목록(Reading List): 읽어야 할 책의 권수가 당신의 책 읽는 속도보다 더 빠르게 늘어간다.
  • 또 다른 길(A Different Road): 당신이 가려는 방향은 소프트웨어 장인정신으로 향하는 길과 다르다는 것을 알게 되었다.
  • 더 깊이 파고들어라(Dig Deeper): 당신은 많은 도구와 기술이나 기법에 대해 피상적인 지식밖에 가지지 못했고, 좀 더 어려운 문제들과 씨름하면서 계속 장애물에 부딪하고 있다.
  • 마음 맞는 사람들(Kindred Spirits): 당신은 멘토도 없이 궁지에 빠져 있으며 당신의 포부와는 어울리지 않는 분위기 속에 놓여 있음을 알게 되었다.
  • 멘토를 찾아라(Find Mentors): 당신은 이미 있는 것을 다시 만들고 장애물에 부딪히느라 많은 시간을 소모하고 있지만, 어디쯤에서 안내를 받기 위해 방향을 틀어야 할지 확신하지 못한다.
  • 무지를 드러내라(Expose Your Ignorance): 당신의 지식에 큰 틈이 있음을 발견 했고, 당신이 하고 있는 일에 대해서 잘 모른다고 사람들이 생각할까봐 두렵다.
  • 바닥을 쓸어라(Sweep the Floor): 당신은 미숙한 개발자이며 팀으로부터 신뢰를 얻고자 한다.
  • 배운 것을 공유하라(Share What you Learn): 주변의 사람들이 당신처럼 빠르게 학습하지 못하는 것 같아서 좌절하고 있다.
  • 배운 것을 기록하라(Record Whar you Learn): 당신은 같은 교훈을 계속 되풀이해서 배우지만, 도무지 몸에 붙지를 않는 것 같다.
  • 부숴도 괜찮은 장난감(Breakable Toys): 실패가 허용되지 않는 환경에서 일하지만, 당신에게는 여전히 안전하게 학습할 데가 필요하다.
  • 소스를 활용하라(Use the Source): 주변에 좋은 코드와 나쁜 코드를 구별할만한 사람이 없다면, 당신이 짜 놓은 것이 좋은지 어떤지 어떻게 알 수 있을까?
  • 실패하는 법을 배워라(Learn How You Fail): 당신의 학습 역량은 성공적인 부분을 향상시켰지만, 실패와 약점은 그대로 남아 있다.
  • 연습, 연습, 또 연습(Practice, Practice, Practice): 당신의 일상적인 프로그래밍 작업은 실패하면서 배울 수 있는 여지를 제공해 주지 않는다.
  • 열정을 드러내라(Unleash Your Enthusiasm): 당신은 팀에 맞추기 위해서 소프트웨어 개발에 대한 흥분과 호기심을 숨기고 지내게 되었다.
  • 열정을 키워라(Nurture Your Passion): 당신은 기예에 대한 열정을 질식시키는 환경에서 일하고 있다.
  • 예술보다 기예(Craft over Art): 고객에게 해결책을 주기로 했는데, 단순하고 검증된 해법을 선택할 수도 있고, 뭔가 새롭고 환상적인 것을 만들 기회로 삼을 수도 있다.
  • 익숙한 도구들(Familiar Tools): 당신이 사용하는 도구와 기술들이 너무 급속히 바뀌어서, 작업을 추산하는 데 어려움을 느낀다.
  • 일하면서 성찰하라(Reflect as You Work): 지금의 지위에서 보낸 햇수와 수행한 프로젝트 개수가 늘어가면서, 당신은 마치 마법처럼 경험이 쌓이게만들어 줄 계시의 순간을 기다리고 있음을 깨닫는다.
  • 자신만의 지도를 그려라(Draw Your Own Map): 고용주가 제시하는 어떤 경력경로도 당신에게 맞지 않는 것 같다.
  • 전장에 머물러라(Stay in the Trenches): 승진 제안을 받았지만, 그 자리로 가면 프로그래밍과 멀어지게 된다.
  • 지속적인 동기 부여(Sustainable Motivations): 당신은 계속 바뀌고 상충되는 요구사항을 가져오는 고객을 위해 아리송하게 명세된 프로젝트라는 죄절스러운 현실에서 일하고 있음을 깨닫는다.
  • 직위를 지표로 이용하라(Use Your Title): 공시적인 자리에서 자신을 소개할때면 왠지 사과를 하거나 당신의 실제 기술 수준과 직무 내용간의 격차에 대해 변명을 해야 할 것 같은 생각이 든다.
  • 첫 번째 언어(Your First Language): 당신은 몇몇 언어에 익숙하지만, 그 어느 것에도 능통하지 않다.
  • 팔꿈치를 맞대고(Rubbing Elbows): 뭔지 알 수는 없지만 더 상급의 테크닉과 접근 방식이 있을 것이란 느낌을 갖고 있다.
  • 피드백 루프를 만들어라(Create FeedBack Loops): 당신은 자신이 인식하지 못한 무능력으로 고통 받고 있는지 알 수가 없다.
  • 한발 물러서라(Retreat into Competence): 너무나 광대한 자신의 무지에 직면하면서 당신은 압도됨을 느낀다.
  • 흰 띠를 매라(The White Belt): 당신이 가진 경험이 새로운 기술의 습득을 더 어렵게 하는 것 같아서 학습에 애를 먹고 있다.

댓글남기기