Skip to content

Latest commit

 

History

History
46 lines (33 loc) · 10.7 KB

2nd-onion.md

File metadata and controls

46 lines (33 loc) · 10.7 KB

1장에서 다룬 첫 번째 양파 껍질의 목표는 프로그래밍이 무엇인지에 대한 경험을 하고, 웹 애플리케이션을 프론트엔드부터 백엔드까지 개발하는 경험을 하면서 웹 애플리케이션을 구성하는 요소, 역할을 이해하는데 집중했다. 웹 애플리케이션 개발에 필요한 최소한의 내용을 학습하는 단계이다.

프로그래밍에 도전하는 사람들을 보면 첫 번째 양파 껍질은 소프트웨어에 대한 흥미를 가지면서 나름 재미있는 경험을 한다. 초급자가 학습할 컨텐츠도 많고 따라하기 식의 쉽고 재미있는 컨텐츠가 많기 때문이기도 하다. 하지만 첫 번째 단계에서 두 번째 단계로 도전하는 사람보다 포기하는 사람이 더 많다. 따라서 두 번째 양파 껍질에 도전한다는 것만으로도 한 단계의 어려움을 극복한 것이기 때문에 스스로를 대견하게 생각해도 괜찮다.

하지만 첫 번째 양파 껍질을 벗겨냈다고 안심하기에 이르다. 두 번째 양파 껍질은 첫 번째 양파 껍질보다 훨씬 더 두껍고, 알아야할 지식도 폭발적으로 늘어나는 경향이 있기 때문이다 . 이 두 번째 양파 껍질 단계에서 더 많은 도전자들이 중도 포기하거나, 현재 상태에 만족하고 다음 단계로 성장하지 못한다. 이 두 번째 양파 껍질을 벗는 순간 소프트웨어 개발과 관련한 대략적인 그림도 그릴 수 있으며, 앞으로 무엇을 학습해야할 것인지에 대한 통찰도 얻을 수 있다. 쉽지 않은 과정이 될 것이다. 두 번째 양파 껍질을 벗는 험난한 여정에 이 책이 작으나마 도움이 되었으면 한다.

이 책의 두 번째 양파 껍질은 1장에서 다룬 첫 번째 양파 껍질과 자연스럽게 연결되는 단계는 아니다. 이 책의 첫 번째 양파 껍질과 두 번째 양파 껍질 사이에는 다음과 같은 단계가 추가되어야 좀 더 자연스럽다. 이 단계는 1장에서 경험한 자바 기반으로 웹 프론트엔드부터 백엔드까지의 개발에 깊이를 더한 후 일정 기간 동안 웹 애플리케이션을 개발한 현장 경험을 의미한다. 취업을 통해 경험하든, 스스로 독학을 통해 경험하든 몇 개의 웹 애플리케이션을 자바 기반으로 개발한 경험을 쌓은 후 이 책의 두 번째 양파 껍질에 도전할 때 학습 효과를 높일 수 있다. 이 같은 이유 때문에 이 책을 읽는 가장 적합한 대상 독자로 최소 1년 이상의 현장 경험을 가진 자바 웹 개발자로 정했다.

어쩌면 이 책의 두 번째 양파 껍질은 세 번째 양파 껍질로 표현하고, 두 번째 양파 껍질을 첫 번째 양파 껍질에서 경험한 것에 이론적인 지식을 더하고, 반복적인 웹 애플리케이션 개발을 통해 개발 경험을 쌓는 단계로 보는 것이 더 적합하다. 하지만 이 책은 현장 경험을 쌓는 두 번째 단계를 고려하지 않고, 학습 로드맵 측면에서 학습할 지식 단계만을 고려해 두 번째 양파 껍질로 표현했다.

이 책의 두 번째 양파 껍질은 첫 번째 양파 껍질에서 한 단계 더 깊이 있는 경험을 하는 것에 초점이 맞추어져 있다. 두 번째 양파 껍질의 학습 목표는 다음과 같다.

  • 첫 번째 단계에서 경험한 지식(특히 자바)에 더해 좀 더 깔끔한 코드를 구현하는 코딩 관례, 사용법에 대해 경험한다. 공통 라이브러리와 프레임워크를 직접 구현해 봄으로써 자바를 더 깊이 있게 사용하는 경험, 객체지향 설계와 개발, 리팩토링 경험을 한다.
  • 개발자가 학습해야할 지식은 순수하게 애플리케이션 개발만으로 국한되지 않는다. 개발자는 자신이 개발한 소스 코드를 효과적으로 빌드, 배포하고 운영할 수 있어야 한다. 이에 대한 학습이 선행되지 않으면 주객이 전도되어 애플리케이션 개발에 투자하는 시간보다 빌드, 배포, 운영에 투자하는 시간이 더 많아질 수도 있다. 따라서 개발한 소스 코드를 개발 서버, 실 서버에 배포하는 경험을 한다. 단순히 배포하는 경험만 하는 것이 아니라 단순, 반복적으로 발생하는 빌드, 배포 과정을 쉘 스크립트를 활용해 자동화하는 과정을 경험한다.
  • 두 번째 양파 껍질부터 웹 애플리케이션을 지탱하고 있는 기술, 보안, 성능에 대해서도 서서히 눈을 떠야 하는 시기이다. 내가 개발한 애플리케이션이 컴퓨터 내부에서 어떻게 동작하는지, 웹 브라우저와 웹 서버가 HTTP를 통해 어떻게 데이터를 주고 받는지, 안전한 웹 애플리케이션을 개발하기 위해 알아야 하는 지식에 대한 학습을 시작할 수 있는 동기부여를 할 수 있도록 한다.

위 세 가지 목표가 두 번째 양파 껍질의 핵심 목표이다. 이 책 한 권을 통해 위 세 가지 목표를 모두 달성할 수 없다. 이 책은 이 세 가지 목표 각각에 대해 일부 내용을 포함하고 있다. 따라서 두 번째 양파 껍질을 극복하기 위해 이 책과 같이 읽었으면 하는 책은 다음과 같다.

첫 번째 책은 **이펙티브 자바 2판(조슈아 블로크 저/이병준 역, 인사이트/2014년)**이다. 외국어를 배우려면 언어의 구조를 알아야 하고(문법), 사물의 이름들을 알아야 하며(단어), 일상적인 필요를 표현하는 관례와 효과적 전달 방법을 알아야 한다(용례). 학교에서는 보통 앞 두 가지만 가르치는 경우가 많다. 프로그래밍 언어에 있어서도 상황은 비슷해서 대부분의 책이 앞의 두 가지 주제에 집중하고 있다 . 자바와 관련해 기본적인 문법과 단어를 학습했다면 다음 단계로 코딩 관례와 효과적인 사용법을 학습하기 위한 목적으로 이 책을 읽었으면 한다. 이 책은 자바 개발자가 반드시 읽어야할 필독서 중의 하나이다.

두 번째로 추천하고 싶은 책은 빌드, 배포, 운영과 관련해 알아야할 도구들에 대한 전반적인 학습을 할 수 있는 성공으로 이끄는 팀 개발 실천 기술(이케다 타카후미,후지쿠라 카즈아키,이노우에 후미아키 공저/김완섭 역, 제이펍/2014년) 책이다. 이 책은 개발한 애플리케이션을 효과적으로 배포하고, 운영하기 위해 알아야할 도구들과 각 도구들간의 효과적인 활용 방법에 대해 다루고 있다. 각 도구들에 대해 깊이 있게 다루기 보다는 다양한 도구들을 활용해 어떻게 효과적인 개발 환경을 구축할 수 있는지에 대한 큰 그림을 그릴 수 있도록 해준다. 이 책을 추천하는 이유는 이 책이 제안하는 개발 환경 구축을 주도하라는 것이 아니다. 현재 자신의 개발 환경과 비교해보고 부족하다고 생각하는 부분이 있으면 하나씩 시도해 봤으면 하는 바람 때문이다. 개발자가 애플리케이션 개발 업무에 더 집중하기 위해서는 프로그래밍과 관련한 학습과 더불어 개발 문화와 개발 환경을 개선하는 시도를 지속적으로 해야 한다.

웹 애플리케이션 개발자가 반드시 학습해야할 주제 중의 하나가 HTTP이다. 물론 다른 중요한 지식들도 많지만 웹의 근간을 지탱하는 HTTP는 좀 더 깊이 있게 학습했으면 하는 바람으로 세 번째로 추천하고 싶은 책은 **HTTP & Network : 그림으로 배우는 책으로 학습(우에노 센 저/이병억 역, 영진닷컴/2015)**이다.

마지막으로 소개하고 싶은 책은 **IT 인프라 구조 : 그림으로 공부하는(야마자키 야스시,미나와 요시코,아제카츠 요헤이,사토 타카히코 공저/오다 케이지 감수/김완섭 역, 제이펍/2015년)**이다. 내가 이 책을 소개하는 이유는 대부분의 개발자가 프로그램이 동작하는 시스템, 운영체제에 대한 관심이 높지 않기 때문이다. 시스템과 운영체제를 이해하는 것이 생각보다 쉽지 않고 몰라도 소프트웨어 개발이 가능하기 때문이다. 나 또한 그렇게 살아왔다. 하지만 경험이 쌓이고, 한 단계 더 깊이 있는 지식을 학습하다보면 항상 막히는 부분은 시스템, 운영체제와 관련한 부분이었다. 그런데 이 책을 보면서 깊이 있는 지식은 아니라도 시스템과 운영체제 뿐만 아니라 서버 아키텍처까지 전반적인 내용에 대해 이해할 수 있겠다는 생각이 들었다. 또한 이 책은 우리가 흔히 사용하는 많은 이론들에 대해 정리하고, 이 이론들이 어떻게 활용되고 있는지에 대해 설명하고 있다. 그런데 이 이론이 시스템, 운영체제 뿐만 아니라 웹 애플리케이션 개발자가 한 단계 성장하는데 반드시 알아야할 내용을 포함하고 있어 필독서로 추천한다.

두 번째 양파 껍질을 벗기 위해 최소한 이 책들이 담고 있는 내용은 학습할 것을 추천한다. 이 몇 권의 책으로 모두 소화하기 힘들다. 두 번째 양파 껍질 단계에서 읽었으면 하는 다른 책들은 각 장을 진행하면서 관련된 내용의 책들을 추천할 계획이다. 각 장에서 추천하는 책까지 모두 학습하기 힘들다면 최소한 위에서 추천한 4권의 책만이라도 학습할 것을 추천한다. 위 4권의 책을 통해 시야를 넓힌 후 더 깊이 있게 학습할 주제를 직접 찾아가는 것도 좋은 선택이다.


Table of Contents

1부. 첫 번째 양파 껍질

3부. 세 번째 양파 껍질