1장에서 다룬 첫 번째 양파 껍질의 목표는 프로그래밍이 무엇인지에 대한 경험을 하고, 웹 애플리케이션을 프론트엔드부터 백엔드까지 개발하는 경험을 하면서 웹 애플리케이션을 구성하는 요소, 역할을 이해하는데 집중했다. 웹 애플리케이션 개발에 필요한 최소한의 내용을 학습하는 단계이다.
프로그래밍에 도전하는 사람들을 보면 첫 번째 양파 껍질은 소프트웨어에 대한 흥미를 가지면서 나름 재미있는 경험을 하는데, 초급자가 학습할 컨텐츠도 많고 따라하기 식의 쉽고 재미있는 컨텐츠가 많기 때문이기도 하다. 하지만 첫 번째 단계에서 두 번째 단계로 도전하는 사람보다 포기하는 사람이 더 많다.
두 번째 양파 껍질은 첫 번째 양파 껍질보다 훨씬 더 두껍고, 알아야할 지식도 폭발적으로 늘어나는 경향이 있기 때문이다. 이 두 번째 양파 껍질 단계에서 더 많은 도전자들이 중도 포기하거나, 현재 상태에 만족하고 다음 단계로 성장하지 못한다. 이 두 번째 양파 껍질을 벗는 순간 소프트웨어 개발과 관련한 대략적인 그림도 그릴 수 있으며, 앞으로 무엇을 학습해야할 것인지에 대한 통찰도 얻을 수 있다.
이 책의 두 번째 양파 껍질은 1장에서 다룬 첫 번째 양파 껍질과 자연스럽게 연결되는 단계는 아니다. 이 책의 첫 번째 양파 껍질과 두 번째 양파 껍질 사이에는 다음과 같은 단계가 추가되어야 좀 더 자연스럽다. 이 단계는 1장에서 경험한 자바 기반으로 웹 프론트엔드부터 백엔드까지의 개발에 깊이를 더한 후 일정 기간 동안 웹 애플리케이션을 개발한 현장 경험을 의미한다. 취업을 통해 경험하든, 스스로 독학을 통해 경험하든 몇 개의 웹 애플리케이션을 자바 기반으로 개발한 경험을 쌓은 후 이 책의 두 번째 양파 껍질에 도전할 때 학습 효과를 높일 수 있다. 이 같은 이유 때문에 이 책을 읽는 가장 적합한 대상 독자로 최소 1년 이상의 현장 경험을 가진 자바 웹 개발자로 정했다.
어쩌면 이 책의 두 번째 양파 껍질은 세 번째 양파 껍질로 표현하고, 두 번째 양파 껍질을 첫 번째 양파 껍질에서 경험한 것에 이론적인 지식을 더하고, 반복적인 웹 애플리케이션 개발을 통해 개발 경험을 쌓는 단계로 보는 것이 더 적합하다. 하지만 이 책은 현장 경험을 쌓는 두 번째 단계를 고려하지 않고, 학습 로드맵 측면에서 학습할 지식 단계만을 고려해 두 번째 양파 껍질로 표현했다.
두 번째 양파 껍질은 첫 번째 양파 껍질에서 한 단계 더 깊이 있는 경험을 하는 것에 초점이 맞추어져 있다. 두 번째 양파 껍질의 학습 목표는 다음과 같다.
- 첫 번째 단계에서 경험한 지식(특히 자바)에 더해 좀 더 깔끔한 코드를 구현하는 코딩 관례, 사용법에 대해 경험한다. 공통 라이브러리와 프레임워크를 직접 구현해 봄으로써 자바를 더 깊이 있게 사용하는 경험, 객체지향 설계와 개발, 리팩토링 경험을 한다.
- 개발자가 학습해야할 지식은 순수하게 애플리케이션 개발만으로 국한되지 않는다. 개발자는 자신이 개발한 소스 코드를 효과적으로 빌드, 배포하고 운영할 수 있어야 한다. 이에 대한 학습이 선행되지 않으면 주객이 전도되어 애플리케이션 개발에 투자하는 시간보다 빌드, 배포, 운영에 투자하는 시간이 더 많아질 수도 있다. 따라서 개발한 소스 코드를 개발 서버, 실 서버에 배포하는 경험을 한다. 단순히 배포하는 경험만 하는 것이 아니라 단순, 반복적으로 발생하는 빌드, 배포 과정을 쉘 스크립트를 활용해 자동화하는 과정을 경험한다.
- 두 번째 양파 껍질부터 웹 애플리케이션을 지탱하고 있는 기술, 보안, 성능에 대해서도 서서히 눈을 떠야 하는 시기이다. 자신이 개발한 애플리케이션이 컴퓨터 내부에서 어떻게 동작하는지, 웹 브라우저와 웹 서버가 HTTP를 통해 어떻게 데이터를 주고 받는지, 안전한 웹 애플리케이션을 개발하기 위해 알아야 하는 지식에 대한 학습을 시작할 수 있는 동기부여를 할 수 있도록 한다.
위 세 가지 목표가 두 번째 양파 껍질의 핵심 목표이다. 이 책 한 권을 통해 위 세 가지 목표를 모두 달성할 수 없다. 이 책은 이 세 가지 목표 각각에 대해 일부 내용을 포함하고 있다. 따라서 두 번째 양파 껍질을 극복하기 위해 이 책과 같이 읽었으면 하는 책은 다음과 같다.
1) 이펙티브 자바 2판(조슈아 블로크 저/이병준 역, 인사이트/2014년)
외국어를 배우려면 언어의 구조를 알아야 하고(문법), 사물의 이름들을 알아야 하며(단어), 일상적인 필요를 표현하는 관례와 효과적 전달 방법을 알아야 한다(용례). 자바와 관련해 기본적인 문법과 단어를 학습했다면 다음 단계로 코딩 관례와 효과적인 사용법을 학습하기 위한 목적으로 이 책을 읽었으면 한다. 이 책은 자바 개발자가 반드시 읽어야할 필독서 중의 하나이다.
2) 성공으로 이끄는 팀 개발 실천 기술(이케다 타카후미,후지쿠라 카즈아키,이노우에 후미아키 공저/김완섭 역, 제이펍/2014년)
빌드, 배포, 운영과 관련해 알아야할 도구들에 대한 전반적인 학습을 할 수 있는 이 책은 개발한 애플리케이션을 효과적으로 배포하고, 운영하기 위해 알아야할 도구들과 각 도구들간의 효과적인 활용 방법에 대해 다루고 있다. 각 도구들에 대해 깊이 있게 다루기 보다는 다양한 도구들을 활용해 어떻게 효과적인 개발 환경을 구축할 수 있는지에 대한 큰 그림을 그릴 수 있도록 해준다. 이 책을 추천하는 이유는 이 책이 제안하는 개발 환경 구축을 주도하라는 것이 아닌, 현재 자신의 개발 환경과 비교하여 부족하다고 생각하는 부분이 있으면 하나씩 시도해 봤으면 하는 바람 때문이다. 개발자가 애플리케이션 개발 업무에 더 집중하기 위해서는 프로그래밍과 관련한 학습과 더불어 개발 문화와 개발 환경을 개선하는 시도를 지속적으로 해야 한다.
3) HTTP & Network : 그림으로 배우는 책으로 학습(우에노 센 저/이병억 역, 영진닷컴/2015)
웹 애플리케이션 개발자가 반드시 학습해야할 주제 중의 하나가 HTTP이다. 물론 다른 중요한 지식들도 많지만 웹의 근간을 지탱하는 HTTP는 좀 더 깊이 있게 학습했으면 한다.
4) IT 인프라 구조 : 그림으로 공부하는(야마자키 야스시,미나와 요시코,아제카츠 요헤이,사토 타카히코 공저/오다 케이지 감수/김완섭 역, 제이펍/2015년)
이 책을 소개하는 이유는 대부분의 개발자가 프로그램이 동작하는 시스템, 운영체제에 대한 관심이 높지 않기 때문이다. 시스템과 운영체제를 이해하는 것이 생각보다 쉽지 않고 몰라도 소프트웨어 개발이 가능하다. 하지만 경험이 쌓이고, 한 단계 더 깊이 있는 지식을 학습하다보면 항상 막히는 부분은 시스템, 운영체제와 관련한 부분이었다. 그런데 이 책을 보면서 깊이 있는 지식은 아니라도 시스템과 운영체제 뿐만 아니라 서버 아키텍처까지 전반적인 내용에 대해 이해할 수 있다. 또한 이 책은 흔히 사용하는 많은 이론들에 대해 정리하고, 이 이론들이 어떻게 활용되고 있는지에 대해 설명하고 있다. 그런데 이 이론이 시스템, 운영체제 뿐만 아니라 웹 애플리케이션 개발자가 한 단계 성장하는데 반드시 알아야할 내용을 포함하고 있어 필독서로 추천한다.
두 번째 양파 껍질을 벗기 위해 최소한 이 책들이 담고 있는 내용은 학습할 것을 추천한다. 이 몇 권의 책으로 모두 소화하기 힘들다. 두 번째 양파 껍질 단계에서 읽었으면 하는 다른 책들은 각 장을 진행하면서 관련된 내용의 책들을 추천할 계획이다. 각 장에서 추천하는 책까지 모두 학습하기 힘들다면 최소한 위에서 추천한 4권의 책만이라도 학습할 것을 추천한다. 위 4권의 책을 통해 시야를 넓힌 후 더 깊이 있게 학습할 주제를 직접 찾아가는 것도 좋은 선택이다.
참고도서 : https://roadbook.co.kr/169
[신간안내] 자바 웹 프로그래밍 Next Step
● 저자: 박재성 ● 페이지: 480 ● 판형: 사륙배변형(172*225) ● 도수: 1도 ● 정가: 30,000원 ● 발행일: 2016년 9월 19일 ● ISBN: 978-89-97924-24-0 93000 [강컴] [교보] [반디] [알라딘] [예스24] [인터파크] [샘
roadbook.co.kr
'교재 실습 > 자바 웹 프로그래밍 Next Step' 카테고리의 다른 글
2.1 main() 메서드를 활용한 테스트의 문제점 (0) | 2024.03.26 |
---|---|
2장 문자열 계산기 구현을 통한 테스트와 리팩토링 (0) | 2024.03.26 |
1.6 학습 방법 (1) | 2024.03.19 |
1.5 본격적으로 웹 프로그래밍에 도전 (0) | 2024.03.18 |
1.4 일단 시작해 보자 (3) | 2024.03.17 |
댓글