방금 장황한 이메일을 받았습니다.

관공서에 취직하신 신입사원이신 분께서 사내에서 Spring, iBatis를 사용하여 개발을 하시는데 모두 바쁘게 코딩 하시느라. 진정한 사수 역할을 해주시는 분도 못만나고 혼자서 Spring, iBatis, Ant, Surversive, SVN 이런 난생처음 듣는 용어들을 학습하라는 명을 받았다고 하시고, 책을 봐도 외계어라 무슨 얘긴지 모르겠다고, 제 블로그에 정리된 글들을 봐도 외계어 같이 느껴진다고 하셨습니다.

이메일의 결론은 "Spring 공부 어떻게 시작해야 할까요.."라는 질문이였습니다.

제가 드릴 수 있는 답변은 단순합니다. 게임에서도 마찬가지지만 어떤 미션을 수행할 때 중요한 건 아이템. WOW도 만랩 찍으면 결국은 아이탬 빨이고, 전략 시뮬레이션이라는 스타도 결국은 빠른 손과 판단력, 전략, 팀웤 등의 아이템이 갖춰지지 않으면 질 수 밖에 없습니다.

특히나 외계어로 둘러쌓인 어려운 주제를 학습할 때는 반드시 두 개의 아이템이 필요합니다.
1. 차가운 머리
2. 뜨거운 가슴

어디선가 들어본 어구를 인용한 건데요. 진짜로 머리가 미적지끈하고 요즘 같이 이상한 날씨에 덥고, 습기차 있으면 머리가 잘 안돌아갑니다. 머리가 맑고 시원한 상태여야 하며, 조용한 장소여야 머리도 깨어나서 잘 돌아가기 시작합니다. 그리고 마음 속으로는 "너 Spring!? 나는 네오다!! 누가 이기나 한 판 붙자" 이런 심정이면 됩니다.

일단 저 두 가지 아이템이 마련되지 않으면 어떠한 학습법이라도 실패 할 가능성이 높습니다. 아무리 고민 고민 하셔도 해결되지 않을 것 입니다. 머리에는 들어오지 않고, 그래도 익혀야 하겠는데. 도통 봐도 모르겠고... 악순환이죠.

아이템을 마련했다고 치고, 본격적으로 미션 수행에 들어갈 때 필요한 것은 전략입니다. 스타크래프트에서의 최고로 재밌는 전략은 암만 생각해도 4 저글링입니다. Spring 학습 뿐만이 아니라 개발자로써의 고수가 되고 싶으시다면 월간 마소 7월호에 이일민님께서 기재하신 "큐브 맞추기를 통해 본 개바자 실력 향상 시나리오"를 강추하고 싶습니다. 저도 그 글을 보며 많은 자극과 새로운 전략을 짜는데 도움을 받았습니다.

지금까지 무슨 뻘소리냐.. 라고 생각하고 계시겠지만 사실 이정도 준비가 되면 어떤 방법으로 공부를 하시든지 도움이 될 거라고 생각합니다. 개인마다 공부하는 스타일이 다르고 익히는 속도며 배경 지식이 다른 상태기 때문에 일반적인 공부법은 있을 수가 없습니다. 따라서 이일민님의 글처럼 한단계 추상화 시킨 상태에서 말을 해야만 하죠.

그럼에도 불구하고 제목을 "나의 Spring 학습기"라고 적었으니.. 제가 학습한 과정을 알려드리면..

1. 작년 7월쯤 영회형을 만났습니다.
2. Spring In Action 이라는 영어 서적을(지금은 에이콘 출판사에서 번역본이 나왔지만) 이해가 안되도 무조건 읽어가며 스터디에 참여했습니다.
3. 스터디를 같이 하던 형들과 Spring을 사용한 웹 애플리케이션 개발을 하다가 말았습니다.
4. 2번과 3번에도 불구하고 Spring을 사용해서 저 혼자 무언가를 만들수가 없었습니다.(Spring 만 가지고도 웹 애플리케이션을 만들수가 없었습니다. 아예 기본적인 Servlet/JSP며 DB에도 익숙하지 않았으니까요. 지금도;;..)
5. Spring 레퍼런스를 정리하며 해당 내용을 직접 코딩도 해보고 요약해서 블로깅을 했습니다.

지금도 5번을 틈틈히 계속하고 있습니다. 그리고 Spring 뿐만 아니라 웹 애플리케이션 개발에 필요한 툴과 기술들(이클립스, Subversive, Ant, Hibernate, DB, 기타 등등)도 같이 공부를 해야겠지요. Spring만 하면 지겹자나요. 지금도 저는 계속 공부를 하고 있습니다. 아직도 할 것이 많기 때문에..

학습하실 때 어려운 점으로 외계어를 가장 강조하셨는데요. 외계어로 느껴지시는 단어들을 모두 이해해야만 배울 수 있는 것은 아니겠지만, 외계어가 등장하면 위키피디아를 통해 번역하시면 됩니다. 그래야 원할하게 학습을 하실 수 있겠죠.

간단하게 정리하자면...

Spring 을 사용한 간단한 웹 애플리케이션을 사용해 보신 다음에, 레퍼런스를 보시면서 Spring의 기본 토대를 이해하세요. 이해가 안 되시면 안되는 부분을 공부하세요. 왜 안되는 지. 어떤 단어를 모르겠는지. 모르는 건 찾아서 또 이해를 하세요. 그럼 언젠가는 진도가 나가고, 진도가 나갈 수록 사용해 보셨던 웹 애플리케이션의 소스코드도 이해가 되실 겁니다. 그럼 재밌어지죠.

부디 좋은 학습 성과 있으시길..