본문 바로가기

Jbee/서평&영화&자격증

[서평] 개발자가 읽은 완벽한 공부법



개발자가 읽은 '완벽한 공부법'

총 평
제목에 ‘완벽한’이라는 다소 자극적인 수식어를 달고 있는 책이다. ‘빅보카’의 저자 신박사님 함께 작업하신 책이라서 읽어보았다. 정말 오랜만에 읽어보는 자기계발서이다. 결론부터 말하자면 훌륭했고 제목 그대로 완벽했다. 하지만 실제로 이 책이 독자에게 많은 도움이 되려면 책에 나온 방법에 따라 실천해야 도움이 된다. 또 이 책은 ‘공부법'을 넘어서 인생을 '어떻게 살아갈 것인가'에 대한 방향을 제시해준다.

흔한 자기계발서들은 이렇다.
흔한 자기계발서 : 나 자신을 믿어라!!
독자 : 어떤 근거로 그런 주장을 하는데? 어떻게 믿으라는 것인가?
에 대한 의문을 남긴채 그냥 그렇게 해라. 하고 끝이난다.

흔한 자기계발서 : 목표를 가져라!!
독자 : 목표를 세워도 잘 안되던데? 목표를 어떻게 세워야 하는데?
에 대한 의문을 남긴채 그냥 그렇게 해라. 하고 끝이난다.

흔한 자기계발서 : 동기 부여가 중요하다!!
독자 : 중요한 건 알겠는데 동기부여가 안 되는걸 어떻게 하라고?
에 대한 의문을 남긴채 그냥 그렇게 해라. 하고 끝이난다.


하지만 이 책은 그렇지 않다.
한 번 쯤은 들어봤을 만한 이야기를 각종 실험 결과과학적인 논증으로 이를 뒷받침하여 독자들에게 신뢰를 제공하는 동시에 구체적인 방향과 방법을 제시하여 독자들이 실천할 수 있게 끔 한다. 이 책의 저자는 독자들이 이미 이와 같은 이야기를 많이 들었다는 것을 알며, 여러 시도들을 했지만 실패한 경험이 있다는 것을 알고 있다. 때문에 뜬구름 잡는 이야기는 하지 않는다. 그러면서 실제 경험담과 함께 글에서 주장하는 바를 뒷받침한다.

한 부분에 집중한 각종 책들의 핵심을 뽑아서 이야기 하고 있다. 때문에 자칫 지루해질 수 있는 실험 내용이 주장을 뒷받침 할 정도의 양이어서 읽기에 부담스럽지 않다. 학습이 뇌와 관련된 활동이다보니 다소 어려운 뇌 과학 표현들이 등장한다. 하지만 이를 학술적으로 묻고 설명하는 것이 아니라 주장을 뒷받침하는 역할을 수행하기에 그렇구나하고 넘기면 된다. 조금 딱딱하지만 술술 읽히는 책이다. 필자도 공부법에 대해 익히 들어 알고 있는 내용들도 많았지만 몰랐던 내용들도 많았다. 

흥미로운 실험 결과들이 '나도 하면 될 것 같은데?'하는 자신감을 북돋아 주며, 이 책을 좀 더 빨리 만났더라면 내가 달라질 수 있었을까 하는 약간의 기대감까지 선사한다. 무언가를 제대로 공부해보고 싶은 분들께, 자기계발서를 일부러 멀리했던 분들께 이 책을 추천한다.


서 평
일반적인 공부법에서 개발자에게 좀 더 어울릴 주제들에 대해서 따로 생각을 정리해봤다.

1장. 믿음 :: 공부는 믿는대로 된다.
작은 성공이 기대를 낳는다.
내가 나 스스로를 믿지 않고 무슨 일을 해낼 수 있을까. 연속되는 실패에 자존감이 떨어졌다면, 작은 것을 찾아서, 쉬운 것을 찾아서 성공해보자. 이 책의 어느 유명한 자산 관리사는 파산하기 직전의 고객에게 이자율이 높은 빚이 아닌 갚아야 할 부채가 가장 적은 빚부터 갚아나가라고 한다. 하나 하나씩 부채를 갚다보면 자신감이 생기고 엄청난 액수의 빚도 갚을 수 있다는 자신감이 생기기 때문이란다. 어떠한 분야를 학습하는데도 마찬가지라고 생각한다. 처음부터 두꺼운 책(전공 서적)을 보려 하지 말고 얇은 책(기본서)이나 짧은 강의를 통해서 완독, 완강을 해보자. 나 자신에 대한 자신감이 올라갈 수 있을 것이다.

스프링(Spring Framework)을 처음 공부하는 사람이면 처음부터 '토비의 스프링’(일반 전공서적 두께로 총 2권인 정말 두꺼운 책! 하지만 정말 좋다는 책)을 보려하지 말고 스프링을 사용하여 간단한 웹 애플리케이션을 만드는 강의를 따라하면서 스프링에 대한 기본적인 원리를 익히는 것이 더 올바른 학습 방법이라고 생각한다. 전공 서적은 정말 두껍다. 네트워크 전공 서적이라고 한다면 네트워크 부분 부분 요소마다 많은 내용을 다루고 있기 때문이다. 단언컨대 이 책을 통해 처음 네트워크를 공부하게 되면 큰 그림을 놓치게 된다. 얇은 책을 통해서 네트워크 원리에 대한 큰 그림을 그리고 나서 전공 서적을 살펴봐도 늦지 않다. 오히려 더 빠를 수도.



2장. 메타인지 :: 나를 모르면 공부도 없다.
자기가 얼만큼 할 수 있느냐에 대한, 그것을 보는 안목의 차이가 중요하다.
소크라테스의 ‘너 자신을 알라’라는 유명한 말이 생각이 난다. 계획을 세울 때도 내가 하루에 어느 정도의 양을 소화할 수 있는지 아는 것이 중요하다. 그래야 보다 효율적이고 상식적인 계획을 세울 수 있을 것이다. 또한 자신이 부족한 부분을 알고 그 부분을 보완한다는 점에서도 이 말은 일맥상통한다. 나를 제대로 파악하기 위한 가장 좋은 방법은 다른 사람에게 물어보는 것이며 내 코드를 남에게 공개하는 것이다. 이에 대한 중요성은 6장의 노력에서도 나오는데 피드백을 통한 성장은 정말 중요하다고 생각한다.



3장. 기억 :: 기억력은 타고나는 것이 아니다.
인출이야 말로 장기기억으로 가는 최고의 길이다.
이 말에 격하게 공감한다. 필자는 개발 공부를 시작할 때, 블로그를 함께 시작했다. 블로그에는 오늘 하루 내가 배운 내용 중 일부를 포스팅했는데 불특정 다수에게 가르치는 것처럼 포스팅을 했다. 꼭 소리를 내는 것만이 인출이 아닌 것이다. 책을 통해 이해한 바를 글로 표출시키는 것. 이것이 바로 인출인 것이다.  정말 공들여 포스팅한 글은 아직도 생생하게 기억난다. 그리고 나만의 언어로 정리했기 때문에 기억이 재생되는데 더 효과적이다. 지금 서평을 쓰고 있는 이 행위도 인출이며 이 책의 내용을 한 번 더 곱씹어 볼 수 있는 좋은 기회가 된다.

어렵게 공부하면 잊기 어렵다.
지독했던 버그는 쉽게 잊혀지지 않는다. 우리 모두가 알고 있다. 우리에겐 스택오버플로우(Stack overflow)가 있지만 학습할 때만큼은 적당한 시간을 갖고 고민하는 태도가 필요한 것 같다. 자신의 수준을 알았으면 조금 더 어려운 수준에 도전해야 한다. 물론 너무 어려운 수준에 도전하여 좌절감에 빠지지는 말자. 이 부분 또한 6장에서 다룬다.



4장. 목표 :: 성공적인 목표 설정은 따로 있다.
증명해야할 상황도 있겠지만 성장이라는 큰 목표를 갖고 공부하자
이 부분 또한 정말 많이 공감했다. 필자 또한 취업이라는 증명이 필요했다. '난 정말 공부를 열심히 했어’라고 백날 떠들어봤자 이를 증명할 방법이 없다면 아무 소용이 없는 것이다. 목표에는 증명 목표와 성장 목표 두 가지가 존재한다고 한다. 이 둘은 상호배타적이지 않다. 단, 올바른 방법으로 목표를 이루려고 했을 때의 경우에 해당한다. 취업을 하기 위해서 취업 관련 공부만 했다면 이는 자신의 성장과는 조금 거리가 멀 수도 있다.(분야에 따라 다를 수 있다.) 하지만 자신의 성장을 도모하며 취업을 했다면 이는 두 가지의 목표를 한 번에 달성한 것이다. 성장 목표에 중점을 두고 공부를 한다면 증명 목표는 자연스럽게 따라오지 않을까 하는 생각을 해본다.



5장. 동기 :: 내게 자유를 달라.
공부에 있어서 나에게 선택권이 있고, 자신을 스스로 통제할 수 있다고 믿으며,
자율감을 느끼는 것은 동기부여에 매우 중요하다.
학창 시절 공부 못하는 학생들의 특징은 '왜 공부해야 하는지 모르겠다'라는 말을 입에 달고 살면서 그 왜에 대한 대답을 찾으려고 하지 않는다. 사실 이들도 찾아보긴 했지만 찾지 못했거나 다른 사람에게 물어봤더니 이들에게 '그러니까 공부를 못하지'라고 무시해서 공부에 대한 반발심이 더 강해졌을 가능성이 높다. 사실 이들은 하고 싶은게 없는게 아닐까. 하고 싶은 것을 위해 무엇을 해야 하나 찾아보면 왜 공부를 해야하는지가 나온다. 분야에 따라서 공부하는 영역이 달라지겠지만 근본적인 부분에는 학습이 있다.

필자는 '이걸 왜 공부해야 하나'라고 의심이 되는 순간부터 이를 해결해야 하며 해결하지 못할 경우 그 부분에 대한 흥미를 잃는다. 반대로 공부해야 하는 이유를 알고 시작한 공부는 정말 즐겁게 할 수 있고, 내용에 대한 흡수가 빠르다. 하지만 문제는 이 ‘왜'에 대한 답을 찾기 힘들다는 것이다. 이 ‘왜'에 대한 답을 찾기 위해서는 선행되는 많은 부분을 학습해야 하고 시간이 오래 걸린다. 그래서 거꾸로 공부했다. 그 결과 개발에 대한 흥미를 유지할 수 있었고 재미있게 개발을 공부할 수 있었다. 무조건 CS 관련 기초 지식부터 차근차근 쌓아올려야 하는 것은 아니다.



6장. 노력 :: 노력은 결코 배신하지 않는다.
구체적이고 명확한 목표로 연습을 하며 조금 더 어려운 작업을 지속해서 해야 한다.
수업을 들었으면 두 배에 해당하는 개인 공부 시간을 확보해야 한다.
이는 '1만 시간의 재발견’이라는 책에서 언급된 내용이다. ‘노오오오오력’ 이라는 유행어가 등장할 정도로 노력을 해도 안 된다는 의식이 팽배했던 때가 있다. 잘못된 노력을 바로 잡을 필요가 있다. 예를 들어, 객체 지향적으로 엉망이고, 중복되는 코드도 많은 상태에서 한 프로젝트를 마무리 했다고 하자. 그리고 기존의 프로젝트에 대한 아무런 개선사항 없이 또 시간을 들여서 비슷한 수준의 프로젝트를 했다고 한다면 그 사람은 노력은 했지만 발전은 없을 것이다. 구체적으로 학습하고자 하는 목표가 없이 그저 시간을 들여 '코딩'했으며 자신이 할 수 있는 수준에서만 머물러 프로젝트를 진행한 것이다. 다람쥐가 쳇바퀴를 돌면 체력이라도 좋아지지만 이것은 영타는 늘었을지 몰라도 아무것도 아닌 노력이 된다.

자신이 하는 공부에 대해 전문가나 동료들에게 평가받기를 두려워하지 말아야 한다.
이런 측면에서 ‘코드 리뷰’ 또는 자신이 공부한 내용을 공개하는 것은 정말 중요하다고 생각한다. 엉망 진창인 코드를 리뷰 받아서 갈아 엎어보기도 하고 개선해나아가면서 진정한 발전이 있다고 생각한다. CS관련 전공 지식을 학습할 때도 이 지식이 어느 부분과 연관이 있는지, 두 알고리즘의 장단점은 무엇이며 이를 통해 유추할 수 있는 Use Case에는 어떠한 것들이 있는지 등을 중점적으로 학습하면 좀 더 효율적이다. 기존에 자신이 학습한 영역과 연관지어 학습하는 것은 단기기억이 장기기억으로 저장되는데에도 효과적이다.



7장. 감정 :: 감정은 공부의 안내자다.
부정적인 감정 일 때보다 긍정적인 감정일 때 더 효율적으로 학습할 수 있다.
억지로 하는 코딩이 제대로 될 리가 있을까. Happy Coding만이 진정한 실력을 올릴 수 있는 길이 될 것이다. 올바른 공부법으로 개발에 대한 흥미를 잃지 않고 학습하는 것이 무엇보다 중요한 것 같다.



8장. 사회성 :: 함께할 때 똑똑해진다.
사회적 정서는 우리가 생각하는 것 이상으로 지적 활동에 영향을 미친다.
이만큼 온라인 커뮤니티, 오프라인 스터디가 활발한 분야가 있을까. SNS에서도 정말 많은 개발 관련 페이스북 그룹이 있어 정보를 공유하고 많은 오프라인 스터디 모임들이 있다. 또 각종 세미나가 열리면서 정보 공유, 네트워킹의 기회가 많다. 오픈소스 프로젝트는 이것의 끝판왕이라고 할 수 있다. 책만 보지 말고 밖으로 나가 많은 개발자를 만나보고 세미나에 참석하는 것은 어떨까. 자극이 되는 동시에 빠르게 변하는 기술 트렌드를 이해하는데 많은 도움이 될 것이라 확신한다.


<<본 책에는 9장~14장이 더 있습니다! 일반적인 내용이라 생략했지만 정말 좋은 내용입니다. 일독을 권합니다.>>
9장. 몸 :: 몸은 공부의 길을 안다.
10장. 환경 :: 공부 효율은 환경에 따라 달라진다.
11장. 창의성 : 창의성은 지능이 아니라 태도다.
12장. 독서 :: 독서는 모든 공부의 기초다.
13장. 영어 :: 이번 기회에 제대로 배우자.
14장. 일 :: 실전처럼 공부하면 실전에서 통한다.

Happy Coding!!