프로그래머의 뇌 : 훌륭한 프로그래머가 알아야 할 인지과학의 모든 것

프로그래머의 뇌 : 훌륭한 프로그래머가 알아야 할 인지과학의 모든 것

$24.88
Description
인지과학을 활용한 개발자의 일머리 개선법
이 책은 인지과학에 기반을 둔 각종 방법론으로 개발자가 새로운 언어나 프레임워크를 빠르게 배워 생산성을 향상하도록 돕는다. 코드를 더 잘 이해하는 것에서 나아가, 버그 방지, 명확한 작명법, 리팩터링, 대규모 코드베이스 개선에 이르기까지 과학적으로 입증된 기법을 제시한다.

저자

펠리너헤르만스

저자:펠리너헤르만스
덜란드레이던대학교(UniversiteitLeiden)의부교수로프로그래밍교육과프로그래밍언어를연구한다.암스테르담자유대학교(VrijeUniversiteitAmsterdam)의교사아카데미에서컴퓨터과학의교수학을전문으로하고있으며,로테르담에있는리쇰크랄링언(LyceumKralingen)고등학교에서도학생들을가르치고있다.
초보프로그래머를위한헤디(Hedy)프로그래밍언어의창시자이며,소프트웨어관련인기팟캐스트인‘소프트웨어엔지니어링라디오(SowareEngineeringRadio)’의진행자이기도하다.

역자:차건회
현재미국로스앤젤레스의ShellRechargeSolutions에서자바백엔드테크리드로일하고있다.자바,스프링부트,메시지큐,일래스틱서치,레디스등자바백엔드의전반적인기술스택및성능향상에관심이있다.

목차

옮긴이머리말xi
추천의글xiii
베타리더후기xvi
추천서문(존스키트)xviii
시작하며xx
감사의글xxii
이책에대하여xxiv
표지에대하여xxvi

PARTI코드더잘읽기

CHAPTER1코딩중겪는혼란에대한이해3
1.1코드가초래하는세가지종류의혼란4
1.1.1혼란의첫번째유형:지식의부족5
1.1.2혼란의두번째유형:정보의부족6
1.1.3혼란의세번째유형:처리능력의부족6
1.2코딩에영향을주는인지과정7
1.2.1LTM과프로그래밍8
1.2.2STM과프로그래밍8
1.2.3작업기억공간과프로그래밍10
1.3인지과정들의상호작용10
1.3.1인지과정들이어떻게상호작용하는지에대한간단한설명10
1.3.2프로그래밍업무와관련한인지과정11
요약13

CHAPTER2신속한코드분석14
2.1코드를신속하게읽기15
2.1.1두뇌에서무슨일이일어나는가?16
2.1.2재현한코드다시살펴보기17
2.1.3두번째실험다시살펴보기19
2.1.4생소한코드를읽는것은왜어려운가?19
2.2기억의크기제한을극복하기20
2.2.1단위로묶는것의위력20
2.2.2전문가는초보자보다코드를더잘기억한다23
2.3읽는것보다보는것이더많다25
2.3.1영상기억공간25
2.3.2기억하는대상이중요한것이아니고기억하는방식이중요하다27
2.3.3청킹연습33
요약35

CHAPTER3프로그래밍문법빠르게배우기36
3.1문법을기억하기위한팁37
3.1.1중간에끊어지는것이미치는나쁜영향37
3.2플래시카드사용해문법배우기38
3.2.1언제플래시카드를사용해야하는가39
3.2.2플래시카드의확장39
3.2.3플래시카드개수줄이기40
3.3어떻게하면잊어버리지않을수있을까?40
3.3.1기억을잃어버리는이유41
3.3.2간격을두고반복하기43
3.4문법을더오랫동안기억하기44
3.4.1정보를기억하는두가지형태44
3.4.2단지보기만해서는안된다45
3.4.3정보를기억하는것은기억을강화한다46
3.4.4능동적사고를통한기억력강화47
요약50

CHAPTER4복잡한코드읽는방법51
4.1복잡한코드를이해하는것이왜어려울까?52
4.1.1작업기억공간과STM의차이53
4.1.2프로그래밍과관련한인지부하의종류53
4.2인지부하를줄이기위한기법55
4.2.1리팩터링55
4.2.2생소한언어구성요소를다른것으로대치하기57
4.2.3플래시카드에코드동의어추가60
4.3작업기억공간에부하가오면사용할수있는기억보조수단61
4.3.1의존그래프생성61
4.3.2상태표사용64
4.3.3의존그래프와상태표의혼용66
요약68

PARTII코드에대해생각하기

CHAPTER5코드를더깊이있게이해하기71
5.1‘변수역할’프레임워크72
5.1.1변수는각자다른일을한다72
5.1.211가지역할73
5.2역할과패러다임76
5.2.1역할의이점76
5.2.2헝가리안표기법78
5.3프로그램에대해깊이있는지식을얻으려면80
5.3.1텍스트지식대계획지식80
5.3.2프로그램이해의여러단계81
5.4텍스트를읽는것과코드를읽는것은유사하다84
5.4.1코드를읽을때우리뇌에서는무슨일이일어나는가?85
5.4.2프랑스어를배울수있다면파이썬도배울수있다86
5.5코드읽기에적용해볼수있는텍스트이해전략90
5.5.1기존지식의활성화91
5.5.2모니터링91
5.5.3코드에서중요한라인을결정하기92
5.5.4변수명의의미를추론하기93
5.5.5시각화94
5.5.6질문하기96
5.5.7코드요약96
요약97

CHAPTER6코딩문제해결을더잘하려면98
6.1모델을사용해서코드에대해생각해보기99
6.1.1모델의유익함99
6.2정신모델102
6.2.1정신모델자세히살펴보기103
6.2.2새로운정신모델배우기104
6.2.3코드에대해생각할때정신모델을효율적으로사용하는방법105
6.3개념적기계110
6.3.1개념적기계는무엇인가?111
6.3.2개념적기계의예111
6.3.3개념적기계의층위113
6.4개념적기계와언어114
6.4.1개념적기계의확장114
6.4.2여러개념적기계는서로충돌하는정신모델을만들수있다115
6.5개념적기계와스키마타117
6.5.1왜스키마타가중요한가?117
6.5.2개념적기계는의미론인가?117
요약117

CHAPTER7생각의버그119
7.1왜두번째프로그래밍언어가첫번째보다쉬울까?120
7.1.1기존프로그래밍지식을활용할가능성을높이는방법122
7.1.2전이의다른형태123
7.1.3이미알고있다는것은저주인가축복인가?124
7.1.4전이의어려움125
7.2오해:생각의버그127
7.2.1개념변화를통한오개념디버깅128
7.2.2오개념제압하기129
7.2.3프로그래밍언어에대한오개념130
7.2.4새로운프로그래밍언어를배울때오개념방지하기132
7.2.5새로운코드베이스에서의오개념진단132
요약133

PARTIII좋은코드작성하기

CHAPTER8명명을잘하는방법137
8.1이름이중요한이유138
8.1.1명명이중요한이유139
8.1.2명명에대한다양한관점140
8.1.3초기명명관행은지속적인영향을미친다142
8.2명명의인지적측면144
8.2.1형식이있는이름은STM을돕는다144
8.2.2명확한이름이LTM에도움이된다145
8.2.3변수이름은이해에도움이되는다양한유형의정보를포함할수있다146
8.2.4이름의품질평가시기147
8.3어떤종류의이름이더이해하기쉬운가?148
8.3.1축약할것인가,하지않을것인가?148
8.3.2스네이크케이스냐,캐멀케이스냐?152
8.4이름이버그에미치는영향153
8.4.1나쁜이름을가진코드에버그가더많다153
8.5더나은이름을선택하는방법154
8.5.1이름틀154
8.5.2더나은변수명에대한페이텔슨의3단계모델157
요약158

CHAPTER9나쁜코드와인지부하를방지하는두가지프레임워크159
9.1코드스멜이인지부하를초래하는이유160
9.1.1코드스멜에대한간략한소개160
9.1.2코드스멜이인지과정에악영향을미치는방식163
9.2나쁜이름이인지부하에미치는영향165
9.2.1언어적안티패턴166
9.2.2인지부하측정167
9.2.3언어적안티패턴및인지부하170
9.2.4언어적안티패턴이혼란을일으키는이유171
요약172

CHAPTER10복잡한문제해결을더잘하려면173
10.1문제해결이란무엇인가?174
10.1.1문제해결요소174
10.1.2상태공간174
10.2프로그래밍문제를해결할때LTM의역할은무엇인가?175
10.2.1문제해결은그자체로인지과정인가?175
10.2.2문제해결을위한LTM교육방법177
10.2.3문제해결에역할을하는두가지유형의기억177
10.3자동화:암시적기억생성180
10.3.1시간경과에따른암시적기억181
10.3.2자동화를통해보다신속하게프로그램을실행할수있는이유184
10.3.3암시적기억개선185
10.4코드와해설에서배우기186
10.4.1새로운유형의인지부하:본유적부하187
10.4.2개발작업시풀이된예제활용하기189
요약190

PARTIV코딩에서의협업

CHAPTER11코드를작성하는행위193
11.1프로그래밍중이루어지는다양한활동194
11.1.1검색194
11.1.2이해195
11.1.3전사195
11.1.4증가195
11.1.5탐구196
11.1.6디버깅은어떤가?197
11.2프로그래머의업무중단197
11.2.1프로그래밍작업시워밍업필요198
11.2.2중단후에는어떻게되는가?198
11.2.3중단에잘대비하는방법199
11.2.4프로그래머를방해할때202
11.2.5멀티태스킹에대한고찰204
요약205

CHAPTER12대규모시스템의설계와개선206
12.1코드베이스의특성조사207
12.1.1인지적차원207
12.1.2코드베이스개선을위해CDCB사용217
12.1.3설계기동및트레이드오프218
12.2차원및활동219
12.2.1차원이활동에미치는영향219
12.2.2예상활동에대한코드베이스최적화221
요약221

CHAPTER13새로운개발자팀원의적응지원222
13.1적응지원의문제223
13.2전문가와초보자의차이224
13.2.1초보자의행동에대한심층적이해225
13.2.2개념을구체적으로보는것과추상적으로보는것의차이229
13.3적응지원개선231
13.3.1작업은하나의프로그래밍활동으로만제한231
13.3.2새팀원의기억지원232
13.3.3코드함께읽기234
요약237

마치며238
찾아보기241

출판사 서평

주요내용
■코드를인식할때의뇌작동원리
■코드를빠르게파악하는읽기방법
■복잡한코드와문제를쉽게바꾸는기법
■협업환경에서코드베이스를개선하는요령

대상독자
■프로그래밍스킬을향상하고자하는모든개발자
■나만못한다는자괴감에빠진주니어개발자
■아무리가르쳐도발전이없는주니어에게좌절한시니어개발자