9. I: Surviving the Hand-Holding Honeymoon
• 다양한 초보 강의를 검토한 후 하나를 선택해 학습
• 이 단계에서 대부분의 강의 내용은 비슷하기 때문에 하나를
선택해 반복 학습
10. II: Surviving the Cliff of Confusion
• 초보라 할지라도 학습을 같이할 동료를 구한다.
• 다른 사람의 코드 읽기
• 지속적으로 작은 코드를 시작하고 빌드하면서 디버깅에 대한
두려움을 제거
11. III: Surviving the Desert of Despair
• 하나의 목표를 설정한 후 목표에 집중
• 수박 겉핥기 식의 다양한 지식 습득이 아니라 한 분야에 대한
깊이 있는 지식 습득
• 구체적인 목표 의식을 가지고 의식적인 연습을 함으로써 시간
낭비를 최소화
12. IV: Surviving the Upswing of Awesome
• Best practices를 찾아 연습하고, 지식의 빈틈을 보완
• 설계, 아키텍처, 배포와 같이 좋은 개발자가 되기 위한 연습
• 이 단계를 극복하기 위한 핵심은 피드백을 받는 것
• 코칭을 해줄 멘토나 동료를 찾는 것이 핵심
19. HTTP 웹 서버, 프레임워크, 공통
라이브러리를 직접 구현하는 경험을
하면서 각 단계마다 필요한 학습 로드맵을
제시하려고 노력했음.
학습 로드맵만 보고 싶다면…
https://github.com/slipp/jwp-book
20. 현재 - 자바 웹 프로그래밍이 가능한 상태
• Java, Spring 프레임워크, MyBatis vs ORM, 관계형 데이터베이스
• HTML, CSS, JavaScript
• 통합개발환경, 빌드 도구, 버전관리 도구
• 객체지향, 테스트와 리팩토링
• 객체지향, 테스트, 리팩토링을 통한 clean code
• 빌드, 배포, 운영과 관련한 전반적인 내용
• 웹 애플리케이션을 지탱하고 있는 기반 지식
32. 개발한 애플리케이션을 효과적으로 배
포하고, 운영하기 위해 알아야할 도구들
과 각 도구들간의 효과적인 활용 방법에
대해 다루고 있다. 각 도구들에 대해 깊
이 있게 다루기 보다는 다양한 도구들을
활용해 어떻게 효과적인 개발 환경을 구
축할 수 있는지에 대한 큰 그림을 그릴
수 있도록 해준다.
33. 웹 애플리케이션을 개발이 끝나면 서버에
배포해야 한다. 배포를 하려면 리눅스 기본
명령과 쉘 스크립트를 작성할 수 있어야 한다.
구매할 것을 추천하지만 만약 부담이 된다면
http://linuxcommand.org/tlcl.php 에서 영어로
된 책을 다운로드할 수 있다.
34. 더 깊이 들어간다면…
• 지속적 통합
• 지속적 배포
• Jenkins CI, Fabric, Docker
• Devops
• 등등
48. 정신적 능력을 향상시키는 핵심은 단기기억의 한계를 극복하고, 다량의 정보를
한꺼번에 효율적으로 다룰 수 있게 해주는 심적 구조물(심적 표상)을
만들어내는 것이다.
– 1만 시간의 재발견 책에서
49. 심적 구조물(심적 표상)이란?
사물, 관념, 정보, 이외에 구체적이든 추상적이든 뇌가 생각하고 있는 대상에
상응하는 심적 구조물이다.
예를 들어 프로그래밍에서 “변수”라고 하면 머릿 속에 떠오른 이미지가 심적
표상이다.
50. “의식적인 연습”의 핵심 목적은 효과적인 심적 표상을 개발하는 것이며, 심적
표상은 다시 “의식적인 연습”에서 핵심 역할을 한다.
– 1만 시간의 재발견 책에서
51. 의식적인 연습을 위한 활동
• 현재 자신의 수준보다 한 단계 난이도가 있는 문제에 도전한다.
• 같은 프로그램을 여러 번 반복적으로 구현해 본다. 단, 반복할 때마다 다른
방식으로 접근하기 위해 노력한다.
• 주변 학생, 교수의 피드백을 최대한 활용한다. 피드백을 받고 개선하는 경험을
반복해야 한다.
52. 코치의 역할
• 심적 표상을 개발하기 위한 의식적인 연습을 설계
• 컴포트 존(현재 자신의 역량 수준)을 벗어난 도전을 하도록
독려하는 역할
53. 학생의 역할
• 지루하고, 즐거운 경험이 아닐 수 있지만 반복적인 연습을 통해
심적 표상을 체득한다.
• 연습의 구체적인 목표에 집중해서 연습에 적응하고, 통제할 수
있어야 한다.
• 정체된 상태라 느껴질 때 학생, 교수의 피드백을 통해 다음
단계에 도전하는 적극적인 자세를 가진다.
54. 의식적인 연습 관련 참고 자료
• http://egloos.zum.com/agile/v/5749946: 시간적 여유가 없다면
• 1만 시간의 재발견. 의식적인 연습에 대한 전반적인 내용을 다루고
있음.
59. 1. 학습에 집중할 수 있는 환경 조성(1년 ~ 2년)
• 술자리 참여하지 않기 – 친구들 정리
• 애인 만들지 않기
• 취미 활동 끊기
• 꾸준히 운동하기. 체력이 좋으면 운동도 하지 마라.
• 등등등
60. 2. 같이 학습할 동료 찾기
• 역량이 비슷해도 괜찮다.
• 혼자보다 같이 가면 더 오래갈 수 있다.
• 짝 프로그래밍으로 연습(강추)
• 정말 찾기 힘들면 온라인 커뮤니티를 활용한다.
61. 3. 피드백을 받을 수 있는 방법을 찾아라.
• 멘토 역할을 해줄 선배가 있다면 최고. 하지만 현실은 ㅠㅠ
• 온라인에 자신의 코드를 공유하고 질문해라.
• https://slipp.net/questions/414
• https://slipp.net/questions/461
62. 의식적인 연습은 지루하고 재미없다. 고통의 연속일 수 있다.
스스로 동기부여하고, 인내하는 연습을 해야 한다.
주변 사람이 아닌 내 자신에 집중해야 한다.
63. 배움에 대하여 다른 관점을 느낄 수 있는 책
향후 사회생활을 할 때 일 속에서도 배움을
만들어 가면서 행복을 느낄 수 있다는 내용
64. • 우리가 일을 하는 궁극적 목표는 행복을 체험하기 위함이다. – 수 많은
사상가들
• 삶을 훌륭하게 가꾸어주는 것은 행복감이 아니라 깊이 빠져드는
몰입이다.
65. 행복한 삶을 살기 위해 몰입하는 것이
얼마나 중요한 것인지에 다루고 있는
책이다. 몰입하는 것이 왜 어려운지에
대해서도 다룬다. 프로그래머에게 있어
몰입은 특히 즐겁고도 재미있는 경험이다.
66. 더 많은 사람이 자신의 일을 사랑하고
일 속에서 몰입 경험을 함으로써 행복한 삶을 살았으면 좋겠다.