소프트웨어 학습 및 자바 웹 개발자 학습...
-
Upload
javajigi-jaesung -
Category
Software
-
view
3.255 -
download
3
Transcript of 소프트웨어 학습 및 자바 웹 개발자 학습...
학습 방법 및 웹 Back End 개발자 학습 로드맵
프로그래밍을 배우는 것이 어려운 이유는 ?
https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard
자신감
숙련도
https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard
https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard
https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard
각 단계를 극복하는 방법
https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard
I: Surviving the Hand-Holding Honeymoon• 다양한 초보 강의를 검토한 후 하나를 선택해 학습
• 이 단계에서 대부분의 강의 내용은 비슷하기 때문에 하나를
선택해 반복 학습
II: Surviving the Cliff of Confusion• 초보라 할지라도 학습을 같이할 동료를 구한다 .• 다른 사람의 코드 읽기
• 지속적으로 작은 코드를 시작하고 빌드하면서 디버깅에 대한
두려움을 제거
III: Surviving the Desert of Despair• 하나의 목표를 설정한 후 목표에 집중
• 수박 겉핥기 식의 다양한 지식 습득이 아니라 한 분야에 대한
깊이 있는 지식 습득
• 구체적인 목표 의식을 가지고 의식적인 연습을 함으로써 시간
낭비를 최소화
IV: Surviving the Upswing of Awesome• Best practices 를 찾아 연습하고 , 지식의 빈틈을 보완
• 설계 , 아키텍처 , 배포와 같이 좋은 개발자가 되기 위한 연습
• 이 단계를 극복하기 위한 핵심은 피드백을 받는 것
• 코칭을 해줄 멘토나 동료를 찾는 것이 핵심
https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard
오늘 이야기는 자바 웹 Back End 개발자로 목표를 정한 개발자에 대한 학습
로드맵
자바 웹 Back End 개발자 학습 로드맵
자바 웹 개발자 학습 로드맵 – 2012 년• https://youtu.be/3mgMwObtaQ0
2012 년• Java, Spring 프레임워크 , MyBatis vs ORM, 관계형
데이터베이스
• HTML, CSS, JavaScript• 통합개발환경 , 빌드도구 , 버전관리 도구
• 객체지향 , 테스트와 리팩토링
https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard
2012 년 다룬 내용은
자바 웹 초급 개발자가
갖추어야 할 역량을 기준
https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard
오늘 이야기는 초급
개발자에서 중급
개발자로 성장하는
과정에 대한 이야기
HTTP 웹 서버 , 프레임워크 , 공통
라이브러리를 직접 구현하는 경험을
하면서 각 단계마다 필요한 학습 로드맵을
제시하려고 노력했음 .
학습 로드맵만 보고 싶다면…
https://github.com/slipp/jwp-book
현재 - 자바 웹 프로그래밍이 가능한 상태• Java, Spring 프레임워크 , MyBatis vs ORM, 관계형 데이터베이스
• HTML, CSS, JavaScript• 통합개발환경 , 빌드 도구 , 버전관리 도구
• 객체지향 , 테스트와 리팩토링
• 객체지향 , 테스트 , 리팩토링을 통한 clean code• 빌드 , 배포 , 운영과 관련한 전반적인 내용
• 웹 애플리케이션을 지탱하고 있는 기반 지식
현재 역량에 깊이를 더하는 ..
• 조슈아 블로치 , Effective Java 이펙티브 자바
• 자바 기본을 습득한 후에 심화 학습이 가능한 책이다 .
• 토비의 스프링
• 자바 실무 프로젝트에서 사용하는 Spring 프레임워크에 대해 다룸
• 김영한 , JPA 프로그래밍
• ORM 프레임워크의 활용방법에 대해 다루고 있는 책 . 특히
ORM 표준이라 할 수 있는 JPA 기반의 내용을 학습할 수 있음 .
객체지향 , 테스트 , 리팩토링을 통한 clean code
• 켄트벡 , Test Driven Development by example• TDD 의 구체적 사례와 패턴을 제시
• 테스트 주도 개발 TDD 실천법과 도구
• TDD, Unit Test 기법과 라이브러리 소개 , Eclipse 활용법 소개
• 최신 라이브러리에 대한 설명이 돋보임
• Refactoring• 리팩토링 기법의 카탈로그
• Clean Code• 유지보수하기 쉬운 코드를 작성하는 지침들
• 자바 웹 프로그래밍 Next Step• 자바 웹 프로그래밍 학습 로드맵 제시
• 프레임워크를 직접 구현하면서 자바 웹 개발 전반 , 테스트 , 리팩토링 , 객체지향 설계에 대해
다룸
빌드 , 배포 , 운영과 관련한 전반적인 내용
개발한 애플리케이션을 효과적으로
배포하고 , 운영하기 위해 알아야할
도구들과 각 도구들간의 효과적인 활용
방법에 대해 다루고 있다 . 각 도구들에
대해 깊이 있게 다루기 보다는 다양한
도구들을 활용해 어떻게 효과적인 개발
환경을 구축할 수 있는지에 대한 큰
그림을 그릴 수 있도록 해준다 .
웹 애플리케이션을 개발이 끝나면 서버에
배포해야 한다 . 배포를 하려면 리눅스 기본
명령과 쉘 스크립트를 작성할 수 있어야 한다 .
구매할 것을 추천하지만 만약 부담이 된다면
http://linuxcommand.org/tlcl.php 에서
영어로 된 책을 다운로드할 수 있다 .
더 깊이 들어간다면…• 지속적 통합
• 지속적 배포
• Jenkins CI, Fabric, Docker• Devops• 등등
웹 애플리케이션을 지탱하고 있는 기반 지식
SQL 첫걸음 : 하루 30 분 36강으로 배우는 완전 초보의 SQL 따라잡기 • 가볍게 접근하고 싶은 경우 . 시작하는 단계는 이 책이면 충분
Real MySQL : 개발자와 DBA 를 위한 • MySQL 에 대한 더 깊이 있는 학습을 원한다면 ..
NoSQL : 빅 데이터 세상으로 떠나는 간결한 안내서 • NoSQL 에 대한 전반적인 내용에 대한 학습
HTTP & Network : 그림으로 배우는• 가볍게 접근하고 싶은 경우 . 시작하는 단계는 이 책이면 충분
HTTP 완벽 가이드• http 에 대해 더 깊이 있게 이해하고 싶다면 . 몇 년의 경력이 쌓은 후 읽을 것을 추천
성공과 실패를 결정하는 1% 의 네트워크 원리• HTTP 이해와 더불어 네트워크에 대한 기본적인 이해가 필요 . 졸업할 때까지 이
책이 담고 있는 내용만 이해하더라도 충분함 .
시스템과 운영체제 뿐만 아니라 서버 아키텍처까지 전반적인 내용에 대해 이해할 수 있다 .
이 책은 우리가 흔히 사용하는 많은 이론들에
대해 정리하고 , 이 이론들이 어떻게 활용되고
있는지에 대해 설명하고 있다 .
더 깊이 들어간다면…• 자료구조 및 알고리즘
• 컴퓨터 시스템 아키텍처
• 운영체제
• 보안 , 성능
• 등등
책과 관련한 깡통 철학• 많은 책을 읽는 것이 중요한 것이 아니다 . 한 권이라도 제대로
읽는 것이 더 중요하다 .• 자신의 스타일에 맞는 책을 찾는 것도 학습의 시작이다 . 다른
사람이 추천하는 책이 아닌 자신의 책을 찾아라 .
활동이 이루어지는 전체 맥락을 늘 염두에
두고 자신의 행동이 전체에 미칠 영향을
이해한다면 , 아무리 사소한 직업이라도
세상을 전보다 살만한 곳으로 탈바꿈시키는
인상적 변화를 이끌어 낼 수 있다 .- 몰입의 즐거움 중에서…
어떻게 학습할 것인가 ?
프로그래밍 학습은 악기 연주와 운동 연습과 같은 방식으로 접근해야
한다 .
정신적 능력을 향상시키는 핵심은 단기기억의 한계를 극복하고 , 다량의 정보를
한꺼번에 효율적으로 다룰 수 있게 해주는 심적 구조물 ( 심적 표상 ) 을
만들어내는 것이다 . – 1 만 시간의 재발견 책에서
심적 구조물 ( 심적 표상 ) 이란 ?사물 , 관념 , 정보 , 이외에 구체적이든 추상적이든 뇌가 생각하고 있는 대상에
상응하는 심적 구조물이다 .예를 들어 프로그래밍에서 “변수”라고 하면 머릿 속에 떠오른 이미지가 심적
표상이다 .
“ 의식적인 연습”의 핵심 목적은 효과적인 심적 표상을 개발하는 것이며 , 심적
표상은 다시 “의식적인 연습”에서 핵심 역할을 한다 .– 1 만 시간의 재발견 책에서
의식적인 연습을 위한 활동• 현재 자신의 수준보다 한 단계 난이도가 있는 문제에 도전한다 .• 같은 프로그램을 여러 번 반복적으로 구현해 본다 . 단 , 반복할 때마다 다른
방식으로 접근하기 위해 노력한다 .• 주변 학생 , 교수의 피드백을 최대한 활용한다 . 피드백을 받고 개선하는 경험을
반복해야 한다 .
코치의 역할• 심적 표상을 개발하기 위한 의식적인 연습을 설계
• 컴포트 존 ( 현재 자신의 역량 수준 ) 을 벗어난 도전을 하도록
독려하는 역할
학생의 역할• 지루하고 , 즐거운 경험이 아닐 수 있지만 반복적인 연습을 통해
심적 표상을 체득한다 .• 연습의 구체적인 목표에 집중해서 연습에 적응하고 , 통제할 수
있어야 한다 .• 정체된 상태라 느껴질 때 학생 , 교수의 피드백을 통해 다음
단계에 도전하는 적극적인 자세를 가진다 .
의식적인 연습 관련 참고 자료• http://egloos.zum.com/agile/v/5749946: 시간적 여유가 없다면
• 1 만 시간의 재발견 . 의식적인 연습에 대한 전반적인 내용을 다루고
있음 .
내가 시도한 몇 가지 의식적인 연습 데모
어떻게 학습을 지속할 것인가 ?
https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard
이 단계를 어떻게 극복할
것인가 ? 특히 비전공자
단 , 우리는 직장인이다 .먹고 살기 위해 최소 하루에 8 시간은 일해야 한다 .
1. 학습에 집중할 수 있는 환경 조성 (1 년 ~ 2 년 )• 술자리 참여하지 않기 – 친구들 정리
• 애인 만들지 않기
• 취미 활동 끊기
• 꾸준히 운동하기 . 체력이 좋으면 운동도 하지 마라 .• 등등등
2. 같이 학습할 동료 찾기• 역량이 비슷해도 괜찮다 .
• 혼자보다 같이 가면 더 오래갈 수 있다 .• 짝 프로그래밍으로 연습 ( 강추 )
• 정말 찾기 힘들면 온라인 커뮤니티를 활용한다 .
3. 피드백을 받을 수 있는 방법을 찾아라 .• 멘토 역할을 해줄 선배가 있다면 최고 . 하지만 현실은 ㅠㅠ
• 온라인에 자신의 코드를 공유하고 질문해라 .• https://slipp.net/questions/414 • https://slipp.net/questions/461
의식적인 연습은 지루하고 재미없다 . 고통의 연속일 수 있다 .스스로 동기부여하고 , 인내하는 연습을 해야 한다 .
주변 사람이 아닌 내 자신에 집중해야 한다 .
배움에 대하여 다른 관점을 느낄 수 있는 책
향후 사회생활을 할 때 일 속에서도 배움을
만들어 가면서 행복을 느낄 수 있다는 내용
• 우리가 일을 하는 궁극적 목표는 행복을 체험하기 위함이다 . – 수
많은 사상가들
• 삶을 훌륭하게 가꾸어주는 것은 행복감이 아니라 깊이 빠져드는
몰입이다 .
행복한 삶을 살기 위해 몰입하는 것이
얼마나 중요한 것인지에 다루고 있는 책이
다 . 몰입하는 것이 왜 어려운지에 대해서도
다룬다 . 프로그래머에게 있어 몰입은 특히
즐겁고도 재미있는 경험이다 .
더 많은 사람이 자신의 일을 사랑하고
일 속에서 몰입 경험을 함으로써 행복한 삶을 살았으면 좋겠다 .