2017년 1월 23일 월요일

프로그래머의 길, 멘토에게 묻다



견습 프로그래머로써 해야 할만한 일들을 어떻게 해나가야한다는 구체적인 예로 정리한 책.
다양한 패턴으로 상황과 그 해결방향에 대해 제시하고 있다. 기존의 여러 자기개발서와 비슷하지만 이건 소프트웨어 개발자의 장인정신을 향한 방향을 제기해준다는것에 점수를 주고 싶다. 책을 읽는 순서는 특별히 중요하지 않아서 필요한 항목만 필요한때 읽을 수 있다.

== 나에게 해당하는 패턴에 대한 정리 및 고찰. ==

* 깊은쪽
나의 현재 상태가 점점 안정적인 일만 추구하게 될때, 결국은 나의 능력은 평범해지게 될것이다.
더 어려운 일을 잡을 수 있도록하여 능력을 발전시킬 수 있도록 해야한다.
오히려 실패할것이 눈에 보이더라도 해보고 부딪혀야 한다.
* 긴여정
급여나 통상적인 리더쉽 보다 학습과 장기적인 성장에 더 가치를 두어라.
내가 중년이 되어서도 여전히 현역 프로그래머가 될것이라는 점을 마음에 새기고 움직여라.
일평생을 개발직에 종사할거라는 마음가짐으로 나의 커리어와 학습,성장을 목표로 움직이다.
* 자신만의 지도를 그려라
내가 꿈꾸는 목표를 향한 진로를 계획하는 것은 나의 책임이다.
큰 그림을 그리고 중간그림을 구체화하여 실제화 시킨다. 작지만 작은 실현가능한 그림을 그리고,
그 계획은 시기에 따라 변화할 필요가 있으므로 계속 다듬어 나가야한다.
* 마음 맞는 사람들
비슷한 길을 걷고 있는 사람들과 빈번히 교류할 필요가 있다.
이런 커뮤니티는 이점이 많지만, 집단사고에 빠지는것을 경계하고, 언제나 커뮤니티를 깜짝놀래킬 역량을 계속 유지해야한다.
주변에 그런 커뮤니티가 있는지 찾고 없다면 만들어야한다. 새로운 맴버를 받아들이는것에 인색하지 않고 계속 활발함을 유지할 수 있다면,
성공적인 커뮤니티라고 할 수 있다. > 긴 여정을 혼자 걷지 말고 같이 걷자. 서로 의지하고 가르쳐주고 공동체 의식으로 살자.
* 연습 연습 또 연습
실수해도 마음편한 환경에서 방해 받지 않고 기예를 연마할 시간을 확보하라.
연습이란 이론적으로 좋지만, 주기적인 피드백을 받지 못하면 잘못된 습관만 들이는 것과 같다.
일종의 연습문제를 풀기 (알고리즘 관련), 책에서 문제를 얻고 일정기간동안 풀어보고 커뮤니티와 함께 맞춰 의견을 나누자.
* 소스를 활용하라
시스템을 이해한다는 것은 결국 작성된 코드를 이해한다는것과 같다.
다른사람이 작성한 코드를 읽기. 오픈소스의 경우 최신을 받고, 폴더구조나 왜 그렇게 했는지를 이해해 보고 나라면 어떻게 할지도 고민하기.
sourceforge.net, github, google code 같은 오픈소스를 보고 발전해나가는 방향과 왜 그렇게 되었는지를 이해한다면, 현 시점의 프로그래밍의 경향이나 사상을 이해하기 쉬워 진다.
알고리즘의 복잡한 오픈소스를 하나 고르자. (git, svn 같은 소스관리 시스템이 한가지 예)
소스를 둘러보면서 생소한 알고리즘이나 자료구조, 설계사상을 기록하자. 다음에는 그 프로젝트를 기술하면서 새로 알게된 아이디어들에 강조점을 둔 블로그를 남겨라. 그 내용이 내 프로젝트에 적용 할 수 있을지 고민하자.
* 배운것을 기록하라
과거로부터 배우지 못하는이들은 같은일을 되풀이하게 되어있다.
내가 걸어가는 여정을 위키나 블로그등에 남긴다. 배운교훈을 순서대로 쌓아나간다면 이후 멘토링할때 멘티들에게 영감을 줄 수 있다.
* 피드백 루프를 만들어라
자기평가는 오로지 자신이 가진 능력에 비례하며, 늘 객관성이 부족하다.
TDD로 내가 짠 부분에 대해 빠른 실패에 대한 피드백을 얻거나 코드리뷰를 받거나, 어떤 자격증에 대해 도전을 하기.
“어떤것이 흥미롭게 느껴진다면, 거기서 무언가를 배울 수 있다.”
* 독서목록
읽어야 할 책의 수가 읽을 수 있는 속도 보다 빠르다. 지속적으로 책의 리스트를 업데이트하고 우선순위를 변경하여 읽어나간다.
해당 목록은 공유를 하고 읽었던것도 기록을 한다. 하여 보다 좋은 책을 고를 수 있는 눈과, 읽어야할 세부 목록과 방향을 업데이트해 나가야한다.
* 더 깊이 파고들어라
수많은 도구들에 대해 피상적인 지식만 있다면, 미묘한 버그가 발생하거나 깊은 지식이 필요한 일을 할때 어쩔줄 몰라 허둥대는 경우가 많다.
도구나 기술 분야, 각종 기법 같을 깊이 파고드는 법을 배워라. 왜 그런식으로 되어 있는지 알게 될때 까지 지식의 깊이를 더해가라.
여기서 깊이라 함은, 세부적인 설계보다는 그런 설계에 이르게한 요인을 이해하는것을 의미한다.
심도있는 지식을 얻는것은 힘들다. 그렇지만 표면적인 지식만 갖고 있다면 풀려고 하는 문제가 해결가능한지 불가능한지 모르게된다는점이다.

댓글 없음:

댓글 쓰기