[TDD]숫자야구게임 연습

테스트 주도 개발(Test Driven Development)로 숫자야구게임을 구현해보았다.

1시간 30분동안 “실패-성공-리팩토링“의 과정을 거치며 최범균님이 구현한 결과와

비교해 보았다.

================================================================

1. “실패 => 성공 => 리팩토링”에서 “실패“과정을 따로 확인하지 않은 적이 많다.                   이것은 실제로 보폭을 넓게 가지고 갔다기보다 테스트코드를 만들 때 “성공“시키기           위해 구현을 먼저 시작한 경우가 많다는 뜻이다.

2. 적절한 시기에 리팩토링이 잘 되지 않았다.

3. 실제 구현에 대한 로직이 세련되지 못하다.

4. 그리고, 전에 범균님 동영상을 보지 않고 구현했으면 더 좋았을 것 같다! ㅎㅎ

5. IntelliJ는 Eclipse에 비해 리팩토링기능은 더 뛰어나고 테스트코드 실행속도는                  훨씬 느리다.

===============================================================

범균님 동영상을 이전에 보고 구현한 결과, 동영상 속의 결과물이 떠올라

제대로 내 생각을 구현에 넣지 못하는 문제가 있었다.

혹시나, TDD로 숫자야구게임을 구현해 보고 싶다면 꼭 먼저 구현해보고 범균님

동영상을 봤으면 하는 생각이다.

TDD로 개발할 때 개발속도나 설계상의 미흡한 점은 연습을 하면 할수록 보완되리라

생각된다.

그리고 이렇게 TDD로 구현을 완료하고 남은 테스트코드가 추후 유지보수시에도 훌륭한

문서가 될 것이기 때문에 꾸준한 TDD연습이 필요함을 느꼈다.

[참고 URL]

[독후감]나를 표현하는 글쓰기 나를 대신하는 글쓰기 -정형권 저

L

2015년 출퇴근길에 읽은 첫 책이다.

읽게 된 동기는, 올해 큰 목표 중 하나가 “책을 쓰는 것“이기 때문이다.

즉, 책을 쓰기 전 어떻게 준비하고 쓸 것인가에 대한 일종의 워밍업인 셈이다.

책을 읽으면서 인상깊었던 글귀를 옮겨보면..

=============================================================================

  • 책쓰기의 벽은 꾸준함으로 넘을 수 있다.
  • 독자를 분명하게 정하고 글을 써라
  • 자료 수집이나 개요를 구성하는 데 좀 더 많은 시간을 투자하는 편이 훨씬 낫다
  • 일단 초고 형태로 완성을 하고 본격적으로 그 초고를 고쳐 쓰는 데 많은 시간을       할애한다
  • 책을 쓰기 위해서는 평소에도 책을 많이 읽어야 하고 책을 쓰기로 결심하면             참고도서를 계속해서 읽고 생각을 정리해 나가야 한다
  • 책쓰기도 훈련하듯이 온몸이 기억하고 몸에 완전히 밸 수 있도록 매일 글쓰기를     게을리하지 말아야 한다
  • 퇴고 “부족한 부분 보완, 불필요한 부분 삭제, 글의 순서 확인 문장 구성 변경” 고려
  • 기획 => 자료수집 => 뼈대 => 서문쓰기 => 한 꼭지 써보기(마중물) => 꾸준히 쓰기

=============================================================================

키워드를 꼽아보자면 “꾸준함“이 될 것 같다.

사실 “꾸준함“은 무엇을 이루기 위해서는 어디에서나 통용되는 단어이지만,

책쓰기에서도 이 단어가 중요함을 느낄 수 있었다.

그리고 책의 마지막에는 단지 책을 쓰기 위한 마음속의 “동기”만으로는 부족하고,

그 “열망”을 뒷받침할 수 있는 “실천“이 중요하다고 끝맺음을 하고 있다.

나도 대략적인 주제는 정했고, 쓰고자 하는 마음은 어느 정도 가지고 있다라고

생각했지만, 막상 쉽게 시작하지 못하고 있는 것은 바로 그 “동기“, “열망“이

절실하지 않기 때문이지 않을까 싶다.

책을 쓰는 과정이 설사 많이 힘들고 고통스럽더라도 그것을 성취했을 때는

내 성장의 키가 한뼘 더 자라있을 것임은 분명하다.

올해의 가장 크고 새로운 도전이 될 “책쓰기“의 바다에 풍덩 빠질 시간이 되었다!

[독서]2015 올해 읽은 책

  • 기술서적

    객체지향의 사실과 오해(완독)                                                                                  – Spark로 하는 고속 빅데이터 분석과 처리                                                                 – 쉽게 배워서 빨리 써먹는 스칼라 프로그래밍                                                           – 자바 프로그래밍 면접, 이렇게 준비한다                                                                   – 엔터프라이즈 빌드자동화를 위한 Gradle                                                                  – Spring4.0 프로그래밍                                                                                                – 네이버를 만든 기술 자바편                                                                                      – 자바 ORM 표준 JPA 프로그래밍

  • 그 외 양서들(2)

    – 테크니컬 리더(2/9)                                                                                                       – 나를 표현하는 글쓰기 나를 대신하는 책쓰기(1/19)

  • 올해 처음 한 일들

    – SE-Radio듣기(6/18)                                                                                                    – – 아침출근/업무중 운동(5월중)

[모델링]코드리뷰짝 매칭결과 알림

들어가기

팀원 6명에 대해 코드리뷰 짝을 지어주면 재밌을 것 같아 작년말에 Node.js를 이용해서

간단하게 프로그램을 만들었다.프로그램에 대한 자세한 소개는 여기를 참고하면 된다.

이번에 얘기할 주제는 프로그램 구현완료 후에 모델링을 다시 해본 내용이다. =============================================================================

1. 최초버전

나름, 알림을 보내는 부분과 결과를 파싱하는 부분이 변화되는 부분이라 생각되어

AlarmSender와 Parser인터페이스를 정의했다.

알림내용에 대한 부분도 공통적인 부분은 Alarm(SmsAlarm도 생각해서)으로 정의하고

그것을 상속받아 EmailAlarm을 만들어 모델링했다.

하지만, 모델링과정에서 “역할“에 대한 정의가 잘못되어 Main 클래스에 해당하는

CodeReviewMathcingPairResultBatch클래스에서 알림내용을 만들고 있고,

통지내용을 모델링하기 위해 Alarm클래스를 만들었지만, 알람은 그냥 알람일 뿐인데

코드리뷰매칭결과“를 Alarm이란 이름으로 정의한 것도 결국 “역할“에 대한 잘못된

정의에서 나온 결과물이다.

class_diagram_mod   2. 중간버전

기존의 Alarm이 담고 있던 “코드리뷰매칭결과“를 CodeReviewPairResult클래스로

모델링했지만, 클래스다이어그램만 봤을때는 이것이 무엇을 담고 있는지 명확하지

않은 문제가 있다.

그리고 “코드리뷰매칭결과“를 가져오기 위한 부분도 저수준모듈인 HtmlParser클래스에

의존하고 있다. 저렇게 되면 “코드리뷰매칭결과“를 웹페이지가 아닌 DB 혹은 파일에서

가져왔을 때 CodeReviewService클래스를 수정해야된다.

결국, 수정에는 열려있고 확장에 닫혀있는 구조가 된 것이다.

그래도, 통지기(Notifier)인터페이스의 notify메소드 파라미터를 “코드리뷰매칭결과”와

“팀원”으로 나누어 정의한 것은 통지기의 “역할“에 대한 고민의 흔적이다 class_diagram_v5_mod 3. 최종버전

총 8번에 걸쳐 최범균님과 모델링결과물에 대해 논의하고 리팩토링한 결과 아래와 같은

클래스다이어그램이 나오게 되었다.

제일 큰 변화는 “코드리뷰매칭결과“를 가져오는 부분이다.

이전에는 Parser로 추상화해서 정의했다면, 최종버전을 만들면서 가장 고민했던 부분이

 “코드리뷰매칭결과를 가져오다“라는 부분에 집중했다는 것이다.

이 말은 즉, Parser로 추상화해서 정의한 것이 웹페이지에서 결과를 가져오는

구체적인 “구현“에 의존했다면,  MatchingResultSource인터페이스를 정의함으로서,

 “코드리뷰매칭결과를 가져오다“라는 부분을 올바르게 “추상화“할 수 있었다.

MatchingResultSource인터페이스를 정의함에 따라,  “코드리뷰매칭결과” 모델링도 각각

MatchingResult와 Group으로 정의했다.

CodeReviewPairResult클래스에 제목과 내용만 있던 전과 비교해 “코드리뷰매칭결과“에

어떤 내용이 담겨있는지가 보다 더 명확해졌다.

그리고, 전체적으로 인터페이스와 클래스, 메서드의 “이름“에 신경썼는데

결국, 겉으로 드러나는 “이름“을 통해 말하고자 하는 의도가 더욱 분명히 드러나기 때문에

더욱 고민을 많이 했던 부분이다.

class_diagram_v8_mod=============================================================================

마치며..

이번 모델링과 리팩토링을 통해  “코드리뷰짝 매칭결과를 가져와 팀원에게 알려준다

라는 고수준 로직을 적절하게 “추상화“하고 그에 따른 “다형성” 구현을 통해 각각의

역할“과 “책임“을 정의함으로서, 향후 유지보수에 유연한 구조를 만들 수 있게 되었다.

이것이 가능한 이유는 객체지향 설계 중, 추상화/다형성을 통한 “의존역전원칙(DIP)“과

리스코프치환원칙(LSP)“을 지킴으로서, 결국엔 수정에는 닫혀있고 확장에는 열려있는

개방폐쇄원칙(OCP)“을 준수했기 때문이다.

그리고, 추가적으로 OCP를 준수함으로써 CodeReviewService의 고수준모듈 로직,

코드리뷰짝 매칭결과를 가져와 팀원에게 알려준다“를 재사용할 수 있게 되었다.

8번에 걸친 수정을 하면서 익숙하지 않은 “모델링“에 대한 “역할“과 “책임“정의가

쉽지 않았다.

책으로만 봤던, 수정이 용이한 유연한 설계에 대한 이론에 고개를 끄덕이면서 머리로만

이해하려고 했던 내용을 실전에서 부딪치니 생각처럼 “모델“이란 녀석이 쉽게 도출되는

게 아니구나라는 걸 깨닫게 되었다.

적절하게 “모델”을 추출하기 위해서는 많은 지식과 경험이 필요하고, 또한 깊이있는

고민과 사색이 수반되어야 함을 느꼈다.

마지막으로 그간의 과정이 결코 쉽지 않았지만, 힘들었던 것 만큼 재미있는 시간이었다

[2014]올해를 마치며.. 회고!

회고를 쓰기 전, 오랜만에 블로그를 둘러봤는데 올해 작성한 글이 하나도 없었다 ㅎ

이게 올해 첫 포스팅이자 마지막 포스팅이 된 셈이다.

2015년엔 활발한 블로그 활동을 다짐하며, 2014년 한해를 돌아보고자 한다.


1. "자주적"인 사내 기술관련 활동

굳이 “자주적“이란 단어를 사용한 것은,  작년 11월에 입사해서 지금까지 내가 했던 모든

기술 관련 활동들이 내 스스로 필요하다고 생각해서 했기 때문이다.

이 부분이 전과는 가장 크게 다른 점인데 기존에는 나를 둘러싼 주위 환경과 사람등에

중심을 잡지 못하고 많이 휘둘리고 의지했다면, 올해 들어서야 비로소  ““를 바로 보기

시작한 첫 해라고 생각하기 때문이다.

그래서인지 더욱 의미있는 결과물이 많이 나왔던 한해였다.

  • 테스트코드 작성방법/필요성 교육 및 전파
  • 처음으로 아무것도 없는 맨땅에서 프로젝트를 시작해서 오픈함
  • 프로젝트 프로세스상에 지속적 통합(CI)관련 젠킨스 적용
  • 뷰단 EL/JSTL 도입 및 사용하기 쉽도록 기반작업 수행                                           공통 뷰단 리소스 관리 및 모듈화 진행
  • 업무와 연관된 자작 프로그램 개발 및 공유
  • UML로 만든 설계결과물(주로 클래스다이어그램) 공유
  • 주기적인 팀원들 코드리뷰
  • 첫 스터디 리딩
2. 읽은 책과 코딩량

올해 읽은 책 자체는 6~7권 정도로 많지 않다. 다만, 최범균님의 “객체지향과 디자인패턴

채수원님의 “테스트주도개발 실천법과 도구“는 스터디나 필요에 의해 여러 번 읽었다.

그리고 전년과 다른 것이 코딩이 상대적으로 많이 늘었다는 점인데, 업무와 연관된

여럿 프로그램을 스스로 만들다보니 동기부여가 더 잘된 것도 한 몫 한듯 싶다.

덕분에 Groovy, Nodejs등도 공부하고 사용해 볼 수 있어 좋았다.

내년엔 Python, Java 8 Lambda, 빅데이터관련 기술등도 공부해보고 싶다.

3. 올해 처음으로 한 것!

올해는 유달리 처음으로 한 게 많았다. 생각나는 것을 적어보면..

  • 사내에서 기술관련 공유 및 팀원들 교육하기
  • 마소에 “자바스크립트 테스트코드 도전하기” 기고
  • 자작 프로그램을 만들며 깃헙 사용해보기
  • 신림프로그래머모임을 통해 발표하기
  • slideshare에 발표자료 올리기
  • 선배개발자입장에서 팀원들과 코드리뷰 하기
  • 오늘 한 일 중심으로 일기쓰기
  • 혼자 커피숍에 앉아 책보기(아무도 없어 뻘쭘했다)
  • 혼자 영화관에서 영화보기(사람이 별로 없어 생각보다 괜찮았다)
  • 양 염통/위/대창 먹어보기

적고 보니 사내기술활동과 연관된 부분이 많다.

내년엔 와이프 허락 하에 “혼자 여행해보기”에 도전해볼까 싶다. ㅎ

4. 좋은 사람들과의 인연

올해도 어김없이 좋은 분들과의 인연이 이어졌다.

그 중에서도 단연 멘토인 최범균님과 가장 많이 만나고 대화했던 한해였다.

몇년간 계속 범균님을 괴롭혀 드려 죄송하기도 하지만 이제 그 괴롭힘이 어느덧 일상이

되었고 범균님도 어느 정도 즐기시는 듯 하니 내년엔 더 괴롭혀드릴 생각이다. ㅎ

그 밖에 태기형, 남희형, 김영보님과도 온/오프라인에서의 인연을 이어가고 있다.

내년엔 좀 더 많은 분들과  허심탄회하게 교류했으면 하는 바램이다.


회고를 마무리하면서 내년도에 목표로 하는 것들을 적어볼까 한다.

  • 책 쓰기
  • 20~30분 걷기운동 지속하기
  • 일기쓰기 지속하기
  • 꾸준한 신앙활동
  • 꾸준한 독서
  • TV 끊기
  • 가치있는 자작 프로그램 많이 만들기
  • 지속적인 블로그포스팅
  • 팀원들과의 거리 좁히기
  • 기술관련 많이 공유하고 기회되면 발표하기
  • 영어 읽기/쓰기/듣기 다시 도전!
  • 목표 잘게 쪼개기. 성취 후엔 나 자신에게 달콤한 열매주기

적고 보니 좀 많은 것 같다. 설사 모든걸 다하지 못하더라도

적고나서 내년에도 틈틈이 계속 본다면 쳐질때마다 동기부여가 될 수도 있을 것이다

올 한해는 나 자신에게 “열심히 했다!”라고 박수쳐주고 싶은 해이다.

그리고 열심히 한만큼 즐거운 고민거리도 많이 생겼다.

30대가 꺾이는 내년엔 지금 가지고 있는 열정을 더욱 불태워서

내 스스로에게 더욱 떳떳하고 자랑스러운 한해로 만들어보자고 다짐한다.

[독서]2014 올해 읽은 책

* 기술서적

  • 테스트 주도 개발 : 고품질 쾌속개발을 위한 TDD 실천법과 도구(1월)
  • 인사이드 자바스크립트(2월~3월초, 6~7월초 팀내스터디)
  • Effective Unit Testing(7월초)

* 그외 양서들

  • 폴리글랏 프로그래밍(3월중)
  • 도와주세요! 팀장이 됐어요(3월말)

[2013]올해를 마치며.. 회고

retrospective

이제 2013년이 30분밖에 남지 않았다.

작년 회고글을 읽으며 올해가 가기 전에 짧게나마 올해 나의 키워드들을 정리해봤다.

  • 아키에이지 웹서비스 상용오픈 & 첫 직장생활 보너스
  • 5~7월 팀내 즐겨찾기서비스 데모시연, 꾸준히 유닛테스트 단련, Gradle+Jenkins+Sonar를 이용해 개발팀내 코드품질관련 이메일리포팅시스템 개발등 스스로 동기부여하며 개발필 충만하게 올해 가장 뜨거운 2개월반의 시간을 보냄
  • 범균님 책 처음으로 베타리딩 참여
  • 3번째 회사 퇴사와 두달반의 백수생활과 구직활동, 그리고 어렵사리 4번째 회사 입사
  • 4번째 회사 입사 전 세상에서 가장 이쁜 아들이 태어남
  • 34년만에 첫 중고차 구입
  • 작년대비 스터디참여 감소, 하지만 기술서적은 상대적으로 많이 읽음
  • 범균님과의 꾸준한 만남과 멘토링

올해는 좋은 일이 많았고, 무엇보다 두달반동안 내 자신을 채찍질하며 내가 하고 싶은 것을

만들고 공유했던 기억이 더 특별하게 남는다.

다만, 꾸준하게 그 페이스를 유지하지 못한 점과 올해도 역시나 코딩이 많이 부족한 점은

큰 아쉬움으로 남는다.

아쉬움이 큰 만큼 그 아쉬움을 후회없이 깨끗하게 지워버릴 내 순수한 열정만큼은

육아의 큰 벽이 가로막고는 있지만 내년에도 계속 지속되기를 희망한다.

또 불꽃이 사그러들지 않도록 노력할 것이다.

[구직]두달반의 구직활동을 끝내며..

#Part1. 뜻하지 않은 희망퇴직과 준비되지 않은 나.

실직

올해 9월, 뜻하지 않은 희망퇴직으로 인해 준비되지 않은 상태에서

회사를 그만두게 되었다.

지난 시간을 후회한들 소용없는 짓이지만 지금에와서 돌이켜보면

회사를 나오기 전 시간이 있었을 때,

  • 나를 만드는 충분한 준비
  • 앞으로 나아갈 명확한 진로에 대한 고민
  • 적극적인 구직활동

를 했더라면 하는 아쉬움이 진하게 남는다.

하지만 내 몸은 항상 편한 것을 찾고, 퇴사를 하고 자유의 몸이 되었을 때

나를 지탱해주던 자물쇠가 풀리며 아무준비도 되지 않은 채로 실직의 몸이 되었다.

 

#Part2. 생각보다 녹록지 않은 취업문

취업문

퇴사 후, 한 달간은 정말로 마음 편하게 논 것 같다.

하지만 그 이후로는 점점 조급증이 밀려왔고, 내가 지원했던 곳에서는 떨어지고

내가 별로 가고 싶지 않은 곳에서는 합격하는 일이 벌어졌다.

이번에 구직활동을 하며 나름 느낀 것은..

  • 좋다고 하는 기업 대부분은 코딩테스트와 시험을 본다.                                                      => 긴장하지 않고 주어진 시간 내 문제를 풀어내는 능력이 필요. 기본기가 중요함
  • 경력자라면 자신의 이력서에 적은 프로젝트에 대해 면접 전 일목요연하게 정리하여  대응해야 함 => 의외로 자신이 한 일도 제대로 말하지 못하는 사람이 많음
  • 자신의 강점을 이력서와 면접시에 잘 어필하는 것이 필요!                                                => 수상경력이나 집필, 강연, 하다못해 자작물이라도 자신있게 말하는 것이 필요
  • 명확한 목표와 진로를 정했다면 꼭 필요한 곳만 이력서를 넣고 면접봐야 한다.            => 취업이 마음먹은 대로 되지 않고, 목표나 진로마저 흐릿하다면 시간이 지날수록           애초에 계획한것과 다르게 여기저기 중구난방 마구잡이식으로 지원하게 된다.               그리고 합격하더라도 결국엔 마음에 들지 않아 가지 않게 된다.  확실히 3~4군데를           정하고 거기에 맞게 이력서와 면접을 준비하는 것이 훨씬 효율적이다

나 역시 시간이 지날수록 밀려드는 조급증에 애초에 계획했던 것과는 다른 기업을

지원하는 경우가 많았고, 이는 결국 내가 목표한 기업에 집중하지 못하는 결과를 낳았다.

 

#Part3. 절반의 성공

준비되지 않은 상태, 흐릿한 목표하에 자유의 몸이 된 것 치고는 이번 구직활동의 결과는

절반의 성공이라고 생각한다.

그리고 지금에 와서 가장 중요하게 생각하는 것은 지금 다니고 있는 직장에서

  • 자신이 무엇을 하고 있고, 또 그것이 어떤 의미를 가지고 있는지
  • 자신이 하고 있는 일에 대한 꾸준한 정리와 공유
  • 관심을 가지고 있는 분야에 대한 지속적인 공부와 하고있는 일에 적용하는 도전!

어떤 직장을 다니던 간에 자신이 하고 있는 일에 의미를 부여하지 못하고, 또 자신이 공부한

것을 자신이 하고 있는 일에 적용하는 도전을 하지 못하고, 근본적으로는 자신이 관심을

가지고 있는 영역에 대한 지속적인 공부가 없다면 매너리즘은 항상 나를 따라다닐 것이다.

 

이런 기본적인 자세가 되어 있을 때, 나를 성장시켜 주는 회사를 만나는 것이 행운이

될 것이라는 깨달음을 얻고 내일을 기다린다..

[독후감]Extreme Programming – 켄트 벡

최범균님의 추천으로 Extreme Programming 책을 처음 접하게 되었다.

전부터 계속 Agile 방법론에 대해 궁금해하고 있던 찰나에 만나게 된 단비같은

책이다.

extreme programming

책을 읽기 시작한 후 부터는 손에서 놓을 수 없을 정도로 강한 흡입력을 보여준 책이다.

특히나 개인적으로 인상깊었던 부분은, XP 기본 실천방법 중 “짝 프로그래밍“과

10분빌드“의 조합이다.

둘이서 짝 프로그래밍을 하고 10분동안 전체시스템을 빌드하고 모든 테스트를 돌리는

그 10분이라는 시간동안 번갈아가면서 작업했던 내용들을 서로 대화하는 가운데

복기하고, 그 속에 서로 상대방에게 배우면서 성장해가는 모습을 머릿속에 그려보는 것은

생각만으로도 굉장히 매력적이고 유쾌한 일이었다.

물론, 서로간의 열정이 비슷하고 짝 프로그래밍을 하는데 부담을 느끼지 않아야 한다는

전제조건이 있어야 하겠지만 말이다.

짝 프로그래밍“을 한번도 경험해보지 않은 나로서도 처음엔 당연히 거부감이 있을 것

같지만, “짝 프로그래밍“에 저런 매력이 있다면 한번쯤 즐거운 마음을 가지고

도전해 보는것도 의미있는 일이 아닐까 생각해 보았다.

아니, 그런 환경을 만들고 도전해보고 싶은 마음이 이 책을 읽으면서 생겼다.

그 만큼, XP에선 “짝 프로그래밍“을 강조하고 있다는 얘기이다.

그리고 또 한가지 인상깊었던 것은 역시나 “자동화된 테스트“의 중요성이다.

이 책에선 XP의 기본적인 실천방법으로   “테스트 우선 프로그래밍“을 제시한다.

코드를 한 줄이라도 변경하기 전에 먼저 실패하는 자동화된 테스트를 작성하라는 것이다.

난 사실, TDD를 제대로 공부해 본 적도 없고 실무에서 활용한 적도 없지만

올해들어 자동화된 유닛테스트를 작성하면서 junit의 초록색막대를 보는 재미에 흠뻑

빠져있다. 그리고 유닛테스트를 작성하면 할 수록, 그것을 작성하는데 드는 시간이

결코 낭비가 아니라 내가 작성한 코드에 대한 결함을 줄이고,  이 코드가 정상적으로

돌아가리라는 믿음을 주어 점차 내 개발 프로세스의 핵심으로 자리잡고 있는 중이다.

그리고 더불어 TDD에도 관심을 가지고 공부하게 되는 계기를 만들어 주었다.

이런 가운데, XP에서 “테스트 우선 프로그래밍“의 항목을 보았을 때 절로 고개가

끄덕여지는 건 당연한 것이었다.

내가 이론적 지식이 없는 상태에서 경험으로 조금씩 체득한 것들을 XP에선 아래와 같이

테스트 우선 프로그래밍“을 했을 경우에 장점을 설명한다

  • 슬금슬금 늘어나는 범위 : 프로그램의 목적 명시화
  • 결합도와 응집성 : 결합도는 낮고 응집성은 높은 코드
  • 신뢰 : 작동하는 깨끗한 코드와 자동화된 테스트로 의도 드러내기
  • 리듬 : 테스트 – 코드 – 리팩토링 – 테스트 – 코드 -리팩토링

마지막으로, 이 책을 다 읽고 난 후의 XP의 초점을 생각해 본 내 나름대로의 결론은

결국엔 “사람“이었다.

서로 함께 앉아서 짝 프로그래밍을 하는 가운데 전체팀에서 소속감을 느끼고,

불필요한 프로세스를 줄이고 원활한 의사소통(분명하고 솔직한!)과 빠른 피드백을 통해

프로젝트를 성공적으로 이끄는 그 중심에 바로 “사람“이 있다는 것을 깨달았다.

XP에서는 아래와 같은 사람이 가치있는 직원이라고 말한다.

  • 다른 사람을 존중하는 행동을 한다.
  • 다른 사람과 잘 어울린다
  • 솔선수범한다
  • 자신이 약속한 것을 지킨다

이 책을 읽고 난 후에, 나 자신은 그 동안 얼마나 다른 “사람“을 존중하고 또 함께

성장하기 위해 무슨 노력들을 해왔는지에 대해서 반추해보는 좋은 경험이었다.

책 끝자락에 저자가 남긴 문구를 함께 공유하면 좋을 것 같아 남긴다.

“XP를 통해, 나는 스스로 존중받을 가치를 지니도록 일하고, 또 다른 사람들을 존중한다.

나는 기꺼이 최선을 다하면서 언제나 개선하려고 애쓴다.

나는 내가 자랑스럽게 생각하는 가치들을 믿으며 거기에 어울리는 행동을 한다”