소프트웨어 학습 및 자바 웹 개발자 학습...

66
학학 학학 학 학 Back End 학학학 학학 학학학

Transcript of 소프트웨어 학습 및 자바 웹 개발자 학습...

Page 1: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

학습 방법 및 웹 Back End 개발자 학습 로드맵

Page 2: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

프로그래밍을 배우는 것이 어려운 이유는 ?

Page 3: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

자신감

숙련도

Page 4: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

Page 5: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

Page 6: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

Page 7: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

각 단계를 극복하는 방법

Page 8: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

Page 9: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

I: Surviving the Hand-Holding Honeymoon• 다양한 초보 강의를 검토한 후 하나를 선택해 학습

• 이 단계에서 대부분의 강의 내용은 비슷하기 때문에 하나를

선택해 반복 학습

Page 10: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

II: Surviving the Cliff of Confusion• 초보라 할지라도 학습을 같이할 동료를 구한다 .• 다른 사람의 코드 읽기

• 지속적으로 작은 코드를 시작하고 빌드하면서 디버깅에 대한

두려움을 제거

Page 11: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

III: Surviving the Desert of Despair• 하나의 목표를 설정한 후 목표에 집중

• 수박 겉핥기 식의 다양한 지식 습득이 아니라 한 분야에 대한

깊이 있는 지식 습득

• 구체적인 목표 의식을 가지고 의식적인 연습을 함으로써 시간

낭비를 최소화

Page 12: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

IV: Surviving the Upswing of Awesome• Best practices 를 찾아 연습하고 , 지식의 빈틈을 보완

• 설계 , 아키텍처 , 배포와 같이 좋은 개발자가 되기 위한 연습

• 이 단계를 극복하기 위한 핵심은 피드백을 받는 것

• 코칭을 해줄 멘토나 동료를 찾는 것이 핵심

Page 13: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

오늘 이야기는 자바 웹 Back End 개발자로 목표를 정한 개발자에 대한 학습

로드맵

Page 14: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

자바 웹 Back End 개발자 학습 로드맵

Page 15: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

자바 웹 개발자 학습 로드맵 – 2012 년• https://youtu.be/3mgMwObtaQ0

Page 16: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

2012 년• Java, Spring 프레임워크 , MyBatis vs ORM, 관계형

데이터베이스

• HTML, CSS, JavaScript• 통합개발환경 , 빌드도구 , 버전관리 도구

• 객체지향 , 테스트와 리팩토링

Page 17: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

2012 년 다룬 내용은

자바 웹 초급 개발자가

갖추어야 할 역량을 기준

Page 18: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

오늘 이야기는 초급

개발자에서 중급

개발자로 성장하는

과정에 대한 이야기

Page 19: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

HTTP 웹 서버 , 프레임워크 , 공통

라이브러리를 직접 구현하는 경험을

하면서 각 단계마다 필요한 학습 로드맵을

제시하려고 노력했음 .

학습 로드맵만 보고 싶다면…

https://github.com/slipp/jwp-book

Page 20: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

현재 - 자바 웹 프로그래밍이 가능한 상태• Java, Spring 프레임워크 , MyBatis vs ORM, 관계형 데이터베이스

• HTML, CSS, JavaScript• 통합개발환경 , 빌드 도구 , 버전관리 도구

• 객체지향 , 테스트와 리팩토링

• 객체지향 , 테스트 , 리팩토링을 통한 clean code• 빌드 , 배포 , 운영과 관련한 전반적인 내용

• 웹 애플리케이션을 지탱하고 있는 기반 지식

Page 21: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

현재 역량에 깊이를 더하는 ..

Page 22: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

• 조슈아 블로치 , Effective Java 이펙티브 자바

• 자바 기본을 습득한 후에 심화 학습이 가능한 책이다 .

Page 23: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

• 토비의 스프링

• 자바 실무 프로젝트에서 사용하는 Spring 프레임워크에 대해 다룸

Page 24: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

• 김영한 , JPA 프로그래밍

• ORM 프레임워크의 활용방법에 대해 다루고 있는 책 . 특히

ORM 표준이라 할 수 있는 JPA 기반의 내용을 학습할 수 있음 .

Page 25: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

객체지향 , 테스트 , 리팩토링을 통한 clean code

Page 26: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

• 켄트벡 , Test Driven Development by example• TDD 의 구체적 사례와 패턴을 제시

Page 27: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

• 테스트 주도 개발 TDD 실천법과 도구

• TDD, Unit Test 기법과 라이브러리 소개 , Eclipse 활용법 소개

• 최신 라이브러리에 대한 설명이 돋보임

Page 28: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

• Refactoring• 리팩토링 기법의 카탈로그

Page 29: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

• Clean Code• 유지보수하기 쉬운 코드를 작성하는 지침들

Page 30: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

• 자바 웹 프로그래밍 Next Step• 자바 웹 프로그래밍 학습 로드맵 제시

• 프레임워크를 직접 구현하면서 자바 웹 개발 전반 , 테스트 , 리팩토링 , 객체지향 설계에 대해

다룸

Page 31: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

빌드 , 배포 , 운영과 관련한 전반적인 내용

Page 32: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

개발한 애플리케이션을 효과적으로

배포하고 , 운영하기 위해 알아야할

도구들과 각 도구들간의 효과적인 활용

방법에 대해 다루고 있다 . 각 도구들에

대해 깊이 있게 다루기 보다는 다양한

도구들을 활용해 어떻게 효과적인 개발

환경을 구축할 수 있는지에 대한 큰

그림을 그릴 수 있도록 해준다 .

Page 33: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

웹 애플리케이션을 개발이 끝나면 서버에

배포해야 한다 . 배포를 하려면 리눅스 기본

명령과 쉘 스크립트를 작성할 수 있어야 한다 .

구매할 것을 추천하지만 만약 부담이 된다면

http://linuxcommand.org/tlcl.php 에서

영어로 된 책을 다운로드할 수 있다 .

Page 34: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

더 깊이 들어간다면…• 지속적 통합

• 지속적 배포

• Jenkins CI, Fabric, Docker• Devops• 등등

Page 35: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

웹 애플리케이션을 지탱하고 있는 기반 지식

Page 36: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

SQL 첫걸음 : 하루 30 분 36강으로 배우는 완전 초보의 SQL 따라잡기 • 가볍게 접근하고 싶은 경우 . 시작하는 단계는 이 책이면 충분

Page 37: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

Real MySQL : 개발자와 DBA 를 위한 • MySQL 에 대한 더 깊이 있는 학습을 원한다면 ..

Page 38: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

NoSQL : 빅 데이터 세상으로 떠나는 간결한 안내서 • NoSQL 에 대한 전반적인 내용에 대한 학습

Page 39: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

HTTP & Network : 그림으로 배우는• 가볍게 접근하고 싶은 경우 . 시작하는 단계는 이 책이면 충분

Page 40: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

HTTP 완벽 가이드• http 에 대해 더 깊이 있게 이해하고 싶다면 . 몇 년의 경력이 쌓은 후 읽을 것을 추천

Page 41: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

성공과 실패를 결정하는 1% 의 네트워크 원리• HTTP 이해와 더불어 네트워크에 대한 기본적인 이해가 필요 . 졸업할 때까지 이

책이 담고 있는 내용만 이해하더라도 충분함 .

Page 42: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

시스템과 운영체제 뿐만 아니라 서버 아키텍처까지 전반적인 내용에 대해 이해할 수 있다 .

이 책은 우리가 흔히 사용하는 많은 이론들에

대해 정리하고 , 이 이론들이 어떻게 활용되고

있는지에 대해 설명하고 있다 .

Page 43: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

더 깊이 들어간다면…• 자료구조 및 알고리즘

• 컴퓨터 시스템 아키텍처

• 운영체제

• 보안 , 성능

• 등등

Page 44: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

책과 관련한 깡통 철학• 많은 책을 읽는 것이 중요한 것이 아니다 . 한 권이라도 제대로

읽는 것이 더 중요하다 .• 자신의 스타일에 맞는 책을 찾는 것도 학습의 시작이다 . 다른

사람이 추천하는 책이 아닌 자신의 책을 찾아라 .

Page 45: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

활동이 이루어지는 전체 맥락을 늘 염두에

두고 자신의 행동이 전체에 미칠 영향을

이해한다면 , 아무리 사소한 직업이라도

세상을 전보다 살만한 곳으로 탈바꿈시키는

인상적 변화를 이끌어 낼 수 있다 .- 몰입의 즐거움 중에서…

Page 46: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

어떻게 학습할 것인가 ?

Page 47: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

프로그래밍 학습은 악기 연주와 운동 연습과 같은 방식으로 접근해야

한다 .

Page 48: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

정신적 능력을 향상시키는 핵심은 단기기억의 한계를 극복하고 , 다량의 정보를

한꺼번에 효율적으로 다룰 수 있게 해주는 심적 구조물 ( 심적 표상 ) 을

만들어내는 것이다 . – 1 만 시간의 재발견 책에서

Page 49: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

심적 구조물 ( 심적 표상 ) 이란 ?사물 , 관념 , 정보 , 이외에 구체적이든 추상적이든 뇌가 생각하고 있는 대상에

상응하는 심적 구조물이다 .예를 들어 프로그래밍에서 “변수”라고 하면 머릿 속에 떠오른 이미지가 심적

표상이다 .

Page 50: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

“ 의식적인 연습”의 핵심 목적은 효과적인 심적 표상을 개발하는 것이며 , 심적

표상은 다시 “의식적인 연습”에서 핵심 역할을 한다 .– 1 만 시간의 재발견 책에서

Page 51: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

의식적인 연습을 위한 활동• 현재 자신의 수준보다 한 단계 난이도가 있는 문제에 도전한다 .• 같은 프로그램을 여러 번 반복적으로 구현해 본다 . 단 , 반복할 때마다 다른

방식으로 접근하기 위해 노력한다 .• 주변 학생 , 교수의 피드백을 최대한 활용한다 . 피드백을 받고 개선하는 경험을

반복해야 한다 .

Page 52: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

코치의 역할• 심적 표상을 개발하기 위한 의식적인 연습을 설계

• 컴포트 존 ( 현재 자신의 역량 수준 ) 을 벗어난 도전을 하도록

독려하는 역할

Page 53: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

학생의 역할• 지루하고 , 즐거운 경험이 아닐 수 있지만 반복적인 연습을 통해

심적 표상을 체득한다 .• 연습의 구체적인 목표에 집중해서 연습에 적응하고 , 통제할 수

있어야 한다 .• 정체된 상태라 느껴질 때 학생 , 교수의 피드백을 통해 다음

단계에 도전하는 적극적인 자세를 가진다 .

Page 54: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

의식적인 연습 관련 참고 자료• http://egloos.zum.com/agile/v/5749946: 시간적 여유가 없다면

• 1 만 시간의 재발견 . 의식적인 연습에 대한 전반적인 내용을 다루고

있음 .

Page 55: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

내가 시도한 몇 가지 의식적인 연습 데모

Page 56: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

어떻게 학습을 지속할 것인가 ?

Page 57: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

이 단계를 어떻게 극복할

것인가 ? 특히 비전공자

Page 58: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

단 , 우리는 직장인이다 .먹고 살기 위해 최소 하루에 8 시간은 일해야 한다 .

Page 59: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

1. 학습에 집중할 수 있는 환경 조성 (1 년 ~ 2 년 )• 술자리 참여하지 않기 – 친구들 정리

• 애인 만들지 않기

• 취미 활동 끊기

• 꾸준히 운동하기 . 체력이 좋으면 운동도 하지 마라 .• 등등등

Page 60: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

2. 같이 학습할 동료 찾기• 역량이 비슷해도 괜찮다 .

• 혼자보다 같이 가면 더 오래갈 수 있다 .• 짝 프로그래밍으로 연습 ( 강추 )

• 정말 찾기 힘들면 온라인 커뮤니티를 활용한다 .

Page 61: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

3. 피드백을 받을 수 있는 방법을 찾아라 .• 멘토 역할을 해줄 선배가 있다면 최고 . 하지만 현실은 ㅠㅠ

• 온라인에 자신의 코드를 공유하고 질문해라 .• https://slipp.net/questions/414 • https://slipp.net/questions/461

Page 62: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

의식적인 연습은 지루하고 재미없다 . 고통의 연속일 수 있다 .스스로 동기부여하고 , 인내하는 연습을 해야 한다 .

주변 사람이 아닌 내 자신에 집중해야 한다 .

Page 63: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

배움에 대하여 다른 관점을 느낄 수 있는 책

향후 사회생활을 할 때 일 속에서도 배움을

만들어 가면서 행복을 느낄 수 있다는 내용

Page 64: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

• 우리가 일을 하는 궁극적 목표는 행복을 체험하기 위함이다 . – 수

많은 사상가들

• 삶을 훌륭하게 가꾸어주는 것은 행복감이 아니라 깊이 빠져드는

몰입이다 .

Page 65: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

행복한 삶을 살기 위해 몰입하는 것이

얼마나 중요한 것인지에 다루고 있는 책이

다 . 몰입하는 것이 왜 어려운지에 대해서도

다룬다 . 프로그래머에게 있어 몰입은 특히

즐겁고도 재미있는 경험이다 .

Page 66: 소프트웨어 학습 및 자바 웹 개발자 학습 로드맵

더 많은 사람이 자신의 일을 사랑하고

일 속에서 몰입 경험을 함으로써 행복한 삶을 살았으면 좋겠다 .