팀 개발을 위한 Git, GitHub 시작하기 - 소스코드 버전 관리를 위한 깃.깃허브, 오픈소스 참여
정호영.진유림 지음 / 한빛미디어 / 2020년 1월
평점 :
구판절판



리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.


  학생 시절에, 밤을 새서 작성한 코드를 실수로 날려버린 적이 있었는데, 그 때 내가 작성한 코드의 이력을 관리할 수 있으면 좋겠다 라는 생각을 했었다. 그래서 "GNU software로 프로그래밍하기(한빛미디어)" 라는 책에 소개된 RCS 라는 툴을 이용해 작업을 했고, 혼자 관리하기에는 나쁘지 않았었다. 그리고나서 CVS나 Subversion으로 조금씩 새로운 버전을 써 보다, 회사에 입사하게 된 이후에는 ClearCase와 Perforce를 사용해 코드를 관리를 하고 있다. 


  다양한 툴들이 나왔었지만, 어떤 툴이 나한테 맞는 툴이다에 대해서는 정답은 잘 모르겠으나, 요즘은 무료이고 사용하기 편리한 git이 대세인 듯하다. 이 책은 git을 이용해 기본적인 소프트웨어 이력 관리하는 방법과 github을 이용해 혼자가 아닌 다른 사람과 함께 cowork을 하는 방법을 쉽게 설명하고 있다.


  이 책은 초보자 분들께 설명을 하기 위해 쓰여진 책이다 보니, 이해를 쉽게 할 수 있도록 그림도 잘 그려져있고, step by step으로 하나씩 따라하기 편하게 글이 쓰여 있다. 또 어려울 수도 있는 용어에 대해서도 하나하나 친절히 설명하고 있어, 처음 git이나 github을 이용해 개발을 시작하려는 분들이나 기존 다른 툴을 사용하다가 git을 빠르게 익히려는 분들께도 나쁘지 않은 책이라는 생각이 든다. 요즘 트랜드인지는 모르겠지만, 책이 컬러로 인쇄가 되어 있어 책에 나온 그림이 더 쉽게 눈에 들어온다. 중요한 부분은 형광펜을 칠해놓은 듯이 표시가 되어 있어, 명령어나 중요한 부분이 눈에 쉽게 들어온다.


  이 책의 구성은 GUI를 책의 3/4가량 할애하여 최대한 쉽게 설명하고 있고, 나머지 1/4정도를 CLI 환경에서의 사용법을 설명하고 있다. 그러다 보니, CLI 환경에서 좀 더 설명이 많았으면 하는 기대를 가질 수도 있고, 좀 더 많은 옵션이나 명령어를 설명해 줬으면 하는 분들도 있을 것이라는 생각이 들었다. 하지만 개인적으로 지금까지 코드를 작성하고 submit하고 공유하고 하는 대부분의 업무에서 생각해 볼 때,  많이 사용하는 반드시 필요한 명령이나 사용법은 대부분 포함되어 있다고 본다. 계속 프로그램 개발자로 일을 해와서 그런지 모르겠지만, 기본적인 commit, merge, conflict, diff 및 branch 관리 방법 이외의 다른 명령들을 사용할 일이 그리 많지 않았다. 물론 단순 명령이 아니라 내부적인 configuration을 이용해 복잡한 설정이나 자동화를 위한 다양한 방법도 설명이 되어있으면 더 좋았겠지만, 그런 내용은 이 책의 범위를 벗어난다고 생각된다. 


  GUI 환경에서 프로그램 버전 관리 툴을 거의 써 본적이 없어서, 이 책에서 많은 분량을 할당해 설명한 GUI 툴이 좋은 것인지 아닌지는 모르겠으나, 초보자용분들이 쓰기에는 나쁘지 않은 툴이라는 생각이 들었다. 유사한 툴들도 많이 있으니, git이나 github에 좀 익숙해지면, 자신에게 맞는 툴들을 찾아보는 것도 괜찮을 것이라 생각된다. CLI용으로도 여러가지 툴들이 있는데, 개인적으로 사용해 본 툴들은 vim용 fugitive와 emacs용 magit 이다. 이 책에서 설명하는 CLI 사용법을 충분히 익힌 다음, 이러한 툴들도 사용할 기회가 있으면 사용해 보셔도 괜찮을 것이라 생각된다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
줄리아를 생각하다 - 데이터 과학자를 위한 최적의 프로그래밍 언어
벤 로언스.앨런 B. 다우니 지음 / 한빛미디어 / 2020년 4월
평점 :
장바구니담기



리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.

C 언어를 배웠을 때  제일 처음에 Hello World 출력법을 배우고, 그리고나서 변수, 제어문, 함수 등을 배우게 되고, 그리고나서 자료구조를 배우게 되는 것이 생각난다. 그리고 자료구조를 배울 때, linked list, hash 등의 사용법을 배우고 이를 이용해서 문제를 어떻게 풀어나가는 지 배웠던 기억이 난다. Python과 Ruby와 같은 언어를 익힐 때에는 list, hash 등의 유용한 자료구조가 이미 언어에 구현되어 있어, 큰 어려움 없이 이를 사용해서 문제를 필요한 것들을 구현할 수 있었다. 하지만 C나 C++로 구현되어 있는 것을 이러한 언어들로 구현할 때, 늘 성능 문제가 걸림돌이 되어, 성능이 필요한 부분은 C로 작성하여 이러한 언어들과 섞어 쓰는 방법을 이용했었지만, 이 역시 불편함은 늘 있었다.
 
Julia는 이번 리뷰를 통해 처음 접하게 되었다. Julia란 언어가 Data Science 쪽에서 사용한다고 들어는 본 적이 있으나, 사용할 일이 없어서 굳이 배우려 해본 적은 없었다. 본서는 Julia 언어를 Julia를 모르는 분들이나 컴퓨터 언어를 처음 배우는 분들을 위해 어렵지 않게 기술이 되어 있고, 그에 맞게 여러 연습문제도 제공되고 있다. 또 번역도 쉽게 잘 되어 있어 읽는 데 큰 어려움이 없다. 그래서 기존 컴퓨터 언어를 하나 이상 잘 사용하시는 분들에게는 400페이지에 가까운 이 책은 정말 쉽고 빠르게 익힐 수 있는 책이라는 생각이 든다. 

본서를 통해 Julia를 익히면서 느낀 것은, Julia를 설계할 때, 기존 스크립트 언어의 불편함을 개선하고 많은 사람들이 사용하고 있는 언어와 유사해 많은 사람들이 쉽게 익힐 수 있도록 하려는 의도가 있었을 거라는 점이다. 책에서도 언급하지만 Julia는 Python과 닮은 면이 상당히 많다. 그래서 기존 Python을 사용하던 프로그래머라면 다른 언어 경험자보다 더 빨리 익힐 수가 있다고 생각한다. 자료 구조의 종류도 거의 비슷하다. 또 
개인적으로 Python에서 불편했던 들여쓰기 부분은 Ruby와 같이 end를 명시하여 끝나는 곳을 명시적으로 알 수 있게 하여 Python보다 편리하게 되었다 라는 생각이 든다. LISP이나 Ruby처럼 굳이 return이라고 명시하지 않아도 함수 내에서 마지막으로 evaluate한 결과가 자동으로 return되는 점은 익숙해지면, 코드를 좀 더 간략히 표현할 수 있어 편리한 점이라 생각된다. 그리고 함수의 정의는 Bash 스크립트와 유사하다. def 라고 이름을 주는 것보다 function이라고 명시하는 것이 더 의미가 분명하다고 생각한 것으로 보인다. 그렇지만, Julia는 class 구문이 명시적으로 존재하지 않는다. Python, Ruby와 같은 스크립트 언어들에서 제공하는 class가 왜 존재하지 않는지에 대해서는 아직 이유를 잘 모르겠다. 멀티 디스패치 기능을 이용해 일부 class가 제공하는 기능과 유사한 부분이 있지만, 그 외에는 class를 대체할 수 있는 지에 대해서는 잘 알 수 없다. 이 부분은 기존 프로그래머에게 있어, Julia를 선택할 지 말지를 결정하는 포인트 중 하나가 될 수 있다는 생각이 들었다.

본서는 앞에서 기술한 것처럼 초보자를 위한 책이라서, Julia의 고급 기능들에 대한 설명이 많지 않다는 생각이 든다. 다중 디스패치에 대한 내용도 간단하게 설명하고 있으며 그 외 초급자에게 어려울 수도 있다고 저자가 판단한 부분들은 한 두 챕터에 쭉 나열해 놓고 있다. 따라서 이러한 부분들에 대해 좀 더 공부하고 싶은 분들은 별도의 자료나 책을 참고해야할 것으로 생각되었다. 

책을 읽어 나가면서 Julia에 대해 성능이 어느정도 빠른지가 궁금하였다. 스크립트 언어를 선택할 때, 빠른 개발이나 쉬운 개발도 중요하지만, 성능이나 이식성 측면은 신경이 쓰이는 부분이기 때문이다. 특히 Python3와의 차이가 궁금했는데, 본서에는 그런 부분들에 대해 거의 설명이 없어서 구글링을 통해 자료를 찾아본 결과, 읽어본 자료에서는 눈에 띄게 차이가 있는 것처럼 소개가 되어 있다. 성능 비교 부분이 독자들의 필요 부분과 부합하는 지 좀 더 명확한 체크를 한 후, Julia의 사용 여부를 판단해보는 것도 괜찮을 것이라는 생각이 든다. 찾이본 페이지 중 한 페이지의 링크는 다음과 같다. 다음 페이지를 보면 Python3과의 비교가 그리고 페이지에 있는 링크를 쫓아가면 C, Fortran, LISP과의 성능 비교가 나와 있으니, Julia의 성능에 대해 관심이 있으신 분은 한 번 읽어보시는 것도 좋을 것 같다.

이 책을 통해 컴퓨터 프로그래밍을 처음 접하시는 분들은, 이 책이 초보자를 위한 책이라 할지라도, 쉽다고 생각하시지 않을 수 있다라는 생각이 든다. 이 책만을 반복해서 읽으면서 공부해나가도 되겠지만, 책을 읽으면서 어렵다는 생각이 드시는 분들이 있다면 다음과 같은 내용들을 함께 공부하면서 책을 보시는 것이 더 좋을 것이라는 생각이 든다.
  • 유닉스/리눅스 CLI 환경
  • 간단한 자료구조 (스택, 재귀, hash, list 등)
  • OOP 기초 (자료 추상화, 클래스, 캡슐화, 일반화, 다형성 등)
  • 그 외 어렵다고 느끼시는 많은 부분들


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
리팩터링 2판 (리팩토링 개정판) - 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기
마틴 파울러 지음, 개앞맵시 외 옮김 / 한빛미디어 / 2020년 4월
평점 :
장바구니담기



리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.

  

  경험상, 프로그램을 작성할 때, 느긋하게 충분한 일정을 가지고, 여러가지 고려해야 할 것들을 다 고려하면서 프로그램을 작성하는 경우는 사실 많지 않았다. 개발 일정을 영업과 기획 부서에서 사업자에 맞는 상품에 맞는 제품 기획 및 일정을 수립하게 되고, 여기에 개발 부서에서 여러 가지 논의를 통해, 언제까지 설계를 하고 코딩을 하며, 블럭테스트, 통합 테스트 및 검증 테스트 그리고 사업자와의 테스트 등등 일정이 세워지고 나면 그 일정에 맞춰 개발을 하게 된다. 하지만 사업자는 이런 저런 이유로 추가적인 기능 요구를 하게 되고, 최대한 사업자 요청 기능을 현재 개발 일정 안에 추가해야 하며, 사업자는 또 사업 일정상 전체 일정에서 1~2개월을 당겨달라는 요구를 하는 경우가 심심하게 발생한다.

  프로그램 작성하는 사람은 한정되어 있고, 일정안에 이런 기능 저런 기능을 다 구현하다 보면, 처음에는 코드를 잘 설계해서 중복 코드도 없고, 클래스, 메쏘드, 함수 이름도 보고 이해하기 쉽게 작성을 하려고 꼼꼼히 챙기려 노력하지만, 일정 마감이 가까워지면 그게 마음대로 잘 되지 않는다. 특히 일정에 쫓겨 기능 시험을 하면서 디버깅으로 넣는 코드의 경우는 더욱 더 그러하다.

  물론 사람마다의 차이가 있겠지만, 짧은 일정안에 프로그램을 개발해 본 사람들은 공감하는 이야기일 것이라 생각된다. 개인적인 생각일 수는 있겠지만, 그러한 상황에 자주 놓이는 프로그래머에게 이 책은 더욱 더 필요한 책이 아닐까 하는 생각이 든다. 책에서 제시하는 여러가지 패턴을 어떻게 사용할 지 반복해 고민하고 체득함으로써, 빠른 시간 안에 코드를 설계/작성해야할 때 좀 더 좋은 코드를 작성할 수 있도록 말이다.

  보통 어떠한 방법론과 같은 책이나, 어떤 이론을 설명해야 하는 책의 경우, 아무래도 좀 따분하고 지루한 면이 있다. 하지만 이 책은 리팩터링 과정을 하나 하나 단계별로 어떻게 리팩터링을 해 나가는 지 예제를 가지고 설명을 하고, 어떤 부분을 어떻게 바꾸는 것이 좋은 지, 상세하게 설명을 하고 있어 전혀 지루한 감이 없다. 처음 저자가 리팩터링을 하는 과정을 따라가다보면, 어느새 이해하기 쉽고, 수정하기 쉬운 코드로 바뀌어 있는 것을 볼 수 있다. 마치 나도 이렇게만 하면 금방 리팩터링을 잘 할 수 있을 것 같은 생각이 들 정도로 말이다.

  이 책은 처음부터 끝까지 기능을 하나씩 하나씩 나누어가며 이건 이렇고 저건 이렇고 저건 이렇고 하며 상세하게 설명하는 방식으로 설명하고 있지는 않다. 어떤 방식으로 리팩터링을 하는 지 설명하는 부분과 저자의 경험상 많이 사용하게 되는 패턴을 모아 둔 카탈로그 부분으로 구성이 되어있다. 독자가 내용을 읽어나가며, 이럴 때는 이런 패턴을 적용하고, 이럴 때는 저런 패턴을 적용하여 리팩터링을 해 나가면, 이러한 결과가 나올 수 있다는 것을 약 160페이지(챕터1~4)에 걸쳐 설명을 하고, 각 패턴들은 카탈로그 형태로 찾아볼 수 있도록 나머지에 주제별로 묶어 두었다. 물론 이런 구성이 매번 일일이 패턴을 찾아보는 것이 불편할 수도 있지만, 익숙한 부분은 그냥 넘어가고 필요한 부분만 이해가 안될 때 반복적으로 찾아볼 수 있도록 배려한 것이라는 생각이 들었다. 또 패턴들에 대해 왜 해야하는 지 이유와 어떤 식으로 하면 된다는 간단한 예를 모아둘 수도 있으나, 저자는 각 패턴을 적용할 때, 어떤 절차를 거쳐서 어떻게 적용하면 되는지 설명을 하며, 예제에서 절차별로 어떻게 코드가 바뀌는 지 상세히 설명을 해 두었다. 이러한 구성 덕에, 이 책은 단순히 책을 한 두번 읽고 마는 것이 아닌, 코드를 작성하면서 reference로 언제든 찾아볼 때 유용하게 사용될 수 있다.

  저자가 영미권 사람이라 예제 코드나 설명에서 국내 독자들에게 익숙치 않은 표현을 써 둔 부분들이 있는 데, 역자분들이 이 부분에 대해 추가적인 설명 및 유튜브 등에서 찾아 볼 수 있는 링크도 함께 역주로 설명해 주고 있는 부분도 이 책의 장점이라 생각된다.

  혹여 이 책에 사용된 예제가 javascript라서  이 책을 이해하는데 어려움이 있지 않을까 생각하는 사람도 있을 수 있다. 하지만, 요즘 자주 사용되는 언어 중 하나라도 익숙한 사람이라면 누구나 이해하는데 문제가 없을 것이라 생각한다.

  이 책에 나오는 내용은 한번 보고 이해하는 것으로도 도움이 되기는 하지만, 어떤 패턴을 어떻게 적용할 지 이 책을 참고하면서 많이 고민해가면서 패턴들을 체득해야 더 큰 도움이 될 것이라 생각이 된다. 만약 단계별로 하나씩 따라하는 형태의 책을 원한다면 이 책은 그런 독자가 원하는 책이 아닐 수 있다.


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
예제로 배우는 블록체인 - 비트코인, 이더리움 및 하이퍼레저를 이용한 블록체인 프로젝트 구축
벨라이 바드르 외 지음, 류광 옮김, 카르티케얀 수크마란 외 감수 / 한빛미디어 / 2019년 9월
평점 :
장바구니담기


리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 “나는 리뷰어다” 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.

처음 비트코인이 나왔을 때, 이런 저런 이야기들이 많았으나, 신뢰할 만한 이야기는 사실 별로 없었던 것으로 기억한다. 당시 어떤 사이트를 가입하면, 어떤 정보를 제공하면 1 비트코인을 받을 수 있다는 사이트도 있었는데, 당시에 이걸 어떤용도로 쓸 수 있지 라는 생각을 하면서, 그냥 무시 했었다. 하지만 이제는 좀 달려졌다. 특히나 3년전쯤? 으로 기억하는데, 비트코인 광풍이 잠시 불었고, 많은 사람들이 돈을 벌기도 잃기도 하면서 블록체인은 모르지만 비트코인이라는 이름은 알게된 것으로 생각된다.

  리뷰를 하기 된, 이 책은, 예제로 배우는 책이기 때문에 쉽다고 느낄 수 있지만 생각보다 많은 지식의 허들이 있다는 생각이 든다. 물론 이 책을 읽는 분들이라면 프로그래밍 경력이나 여러가지 OS 관련 지식은 가지고 계시겠지만, 그렇지 않은 분들이라면, 이 책을 보면서 너무 급하게 모두 다 이해하려고 하지 않았으면 하는 생각이 들었다. 
  번역서인 만큼, 책을 읽을 때, 잘 읽히는 지가 중요할 수 밖에 없는데, 사실 이 부분은 번역자인 ‘류광’님의 이름을 보고 크게 우려하지 않았었다. 그리고 내 생각과 크게 다르지 않았다. 책은 읽기에 전혀 불편함이 없고, 적절한 위치에 쉼표도 잘 있어서, 간혹가다 책을 읽다 느끼는 숨막힘? 이런 것은 없었다. 
  
  이 책은 블록코인이 적용된 비트코인, 이더리움, 하이퍼레져와 같은 프로젝트를 클론해서 여러가지 예제를 적용하면서, 보다 쉽게 개념들을 읽힐 수 있도록 설명해 두었다. 이 책의 목적은 블록 체인을 사용자와 응용자 단에서 빠르게 어떤 것인지 이해하고, 이를 어떻게 적용하여 사용할 것인지를 설명하는데 중점을 둔 것으로 보인다. 블록 체인에 사용되는 내부 기술을 설명하자면, 한권의 책으로는 다 설명할 수 없을 뿐 아니라, 한번에 다 익힌다는 것도 무리이기 때문이다. 또 블록체인을 어떻게 사용하는지에 따라 어떻게 응용하면 좋을 지에 대해 프로젝트의 실습을 통해 빨리 감을 잡을 수 있도록 해 두었다.
  
  Java 프로그래머와 Javascript 프로그래머가 각각 선택해 내용을 살펴볼 수 있도록, 두 가지 언어를 통해 예제를 설명하고 있다. 어쩔 수 없이 기존 코드의 수정을 위해서 C++코드를 수정하는 부분에 대해서는 관련해서 설명하고 있어서, Java나 Javascript 프로그래머가 어렵지 않게 이해할 수 있도록 하고 있다. 또 예제를 수행하기 위해, 환경 설정을 어떻게 해야하는지, 어떤 버전을 써야하는 지 등 상세하게 설명이 잘 되어 있어, 따라하면서 예제를 실습하기에 큰 무리가 없다.
  
  이러한 책의 장점뿐만 아니라, 많은 내용을 한꺼번에 예제를 통해 설명을 하고 있다보니, 세세한 툴 사용법, 언어 사용법, 기본 네트워크 개념 및 보안 관련 툴 사용법이나 기본 개념에 대해서는 언급하지 않고 이미 알고 있다고 가정을 하고 설명을 하고 있다. 이 책에서 설명하는 프로그래밍 언어는 기본적으로 솔리디티와 같은 전용 언어를 제외하고, C++, Java, Javascript, Python, Go 를 다루고 있다. 그리고 Linux OS(Ubuntu 16.04 버전)를 기준으로 설명들이 나오므로 VM상에 Linux OS를 설치하고, apt를 이용하여 패키지를 설치해야 한다. 물론 VM을 사용하지 않아도 되지만, VM을 이용하는 편이 더 쉽게 책의 내용을 실습하기에 좋을 것이다.  그리고 container 사용을 위해, docker가 무엇인지 어떻게 사용하는지도 알고 있으면 좋다. 기본적으로 사용되는 find, sed, grep, curl과 같은 툴 사용법 및 regex 패턴 사용법에 대해서 이해하고 있으면 더 좋다. 또 책에서 설명하는 nano에디터(오래전 pico에디터의 확장판인 것 같다)나 vim, emacs 와 같은 Linux 에서 사용하는 command line editor도 간단하게 나마 사용법을 알고는 있는 편이 좋다. git, github, npm(Node.js), pip(Python)와 같은 툴이 어떤 것인지 간단히 어떻게 사용하는 것인지도 알고 있으면 더 좋다. 물론 책의 내용을 그대로 타이핑하면서 예제를 따라할 수는 있겠지만, 집중해야할 예제 이외에 다른 툴 때문에 허비하는 시간이 많을 수도 있다. 오래전에 vim을 들어갔다가 어떻게 빠져나오는지, 저장하는지 조차 몰라서 PC 전원을 껐다 켠 기억이… ^^;;
  
  책을 단 시간내에 리뷰를 하려다보니, 예제 확인해보고, 책 내용 읽어보는데, 시간이 꽤 걸린 책이다. 하지만, 이를 통해 기존에 어렴풋이 알고 있던 내용을 좀 더 명확히 알게 되었다. 이 책을 선택해 공부하시는 분들도 그러리라 생각된다. 좋은 책을 리뷰할 기회를 준 한빛 출판 미디어에 감사드리며 리뷰를 마칩니다.



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
Head First Agile - 개념부터 시험 대비까지, 가장 애자일다운 안내서 Head First 시리즈
앤드류 스텔만.제니퍼 그린 지음, 박현철 옮김 / 한빛미디어 / 2019년 8월
평점 :
장바구니담기


  리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.

  

  프로그램을 작성하는 규모에 따라 다르겠지만, 프로그램을 작성하는 프로세스는 상당히 복잡한 프로세스를 따른다. 신규로 시작하는 프로젝트도 그렇고, 고객의 추가 요구 사항에 맞춰 여러 가지 feature들을 추가하는 경우도 이러한 프로세스를 따르지 않고 진행되지는 않는다. 이렇게 프로세스를 따르면서 개발을 해 나갈 때 늘 프로젝트 마감에 맞춰 일을 진행하지만, 항상 여러가지 이슈로 인해 프로젝트 지연은 자주 발생하기 마련이다. 예전에 경험한 프로젝트들을 생각해보면, 프로젝트의 업무 프로세스가 agile 방식이 아니었던 경우, agile 방식이 아니기 때문에 기민하게 이슈에 대응하지 못했다라는 자책들만 오고갔던 것으로 기억한다. 또 이미 agile 기법을 도입한 프로젝트의 경우, 우리가 제대로된 방식으로 agile 방법으로 업무 진행을 하지 않으니 죽도 밥도 안 된 것 같다는 의견이 있었으나 이에 대해 딱히 돌파구를 찾지 못하고 프로젝트가 drop된 경우도 있었다.

  이런 경우마다 생각했던 것이, agile 방법을 이용하면 모든 개발 진행 시 발생하는 이슈가 금방 해결되는 건가? 그런 것이라면 왜 아직 agile 방법을 도입해서 제대로 이용하지 못하고 있는 것일까? agile 방법론도 Scrum, XP, Lean/Kanban 등의 방법들이 있다고 들었는데 어떤 것을 이용해야 하지? 라는 의문들이 들어 몇몇 책들이나 자료들을 살펴보았으나 딱히 어느 것이 좋은지 아직까지 개인적으로 답을 찾지는 못했었다.

  이번에 한빛미디어에서 출간된 Head First Agile을 리뷰하면서, 이 책에 주어진 예시들을 보면서, 책의 저자들이 겪었던 경험과 고민이 내가 고민했었던 부분과 크게 다르지 않음을 알 수 있었다. 책에 주어진 예시들은 Scrum, XP 그리고 Lean/Kanban을 사용하기 전과 사용하면서 발생할 수 있는 이슈들에 대해 어떠한 방식으로 이에 대처하면서 방법을 적용하는 지에 대해 이야기를 전개해 나간다. 프로젝트에서 이슈가 발생할 때 늘 이야기되는 R&R 문제라던지, 개발자들이 가질 수 있는 불평사항 또 관리자가 겪게 이슈들에 대해 몇 명의 프로젝트 담당자들이 이야기를 하게 되고, 이럴 때 어떤 식으로 문제를 풀어 나가는 지에 대한 예시를 제시한다. 그러면서 중요한 용어들에 대해 반복해서 볼드체로 강조하면서 설명을 해 주고, 중간중간에 당연하지만 누구나 왜? 라는 의문을 가질만 한 부분에 대해 상세한 설명을 하고 있다. 이러한 부분은 책을 읽어가면서 나라면 어떤식으로 적용해야하지? 하고 생각할 때, 많은 도움을 준다고 생각한다. 충분히 공감가는 내용들이 예시로 나오고 있어, 나의 경우에 빗대어 생각하면서 책을 읽어나가기 수월했다. 하지만 책의 목적이, 개념을 쉽게 설명하는 안내서의 역할이기에, 적용한 방법이 실패하는 최악의 경우에 대한 예시는 나오지 않는다.

  이 책의 다른 장점은 한 권의 책에 Scrum, XP, TDD, Lean/Kanban 과 같은 방법들을 소개하면서 각자의 차이에 대해서 설명을 해 주기 때문에, 각 방법론들 간의 차이에 대해 깊지는 않지만 어느 정도 알 수 있다. 각각의 방법론들에 대해 좀 더 다양한 적용 방법과 예시 등에 대해서는 별도로 출간된 책들을 좀 더 읽어봐야 하겠지만, agile 방법론의 전반적인 개념과 적용방법을 빠른 시간에 익히는 데에는 좋은 책이라 생각된다.

  그리고 이 책에은 PMI-ACP 시험 대비 문제들이 수록되어 있다. 마치 수험서처럼, 앞에서 개념과 예제를 통해 이해를 한 후, 시험 문제를 풀어보면서 중요한 부분을 한번 더 체크해볼 수 있는 부분은, 이 책이 다른 책들에 비해 가지는 장점으로 생각된다.

  이 책뿐만 아니라 Head First 라는 title을 달고 있는 책들을 읽으면서 드는 생각은, 머릿 속에 개념을 쉽게 넣어주기 위해 많은 설명이 깨알같이 적혀있어서, 지루하다는 생각이 드는 부분이다. 책을 읽을 때 요점들을 위주로 설명하되, 상세한 설명은 별도로 설명하는 식으로 나눠두는 것도 좋을 것 같은데, 이 책이 제시하는 과학적인 방법과는 방향이 좀 다른 것 같다. 따라서 이 책을 고를 때 그러한 부분은 독자가 감안하고 선택할 필요가 있다고 생각된다.

  당연한 이야기지만, 이 책에서 설명하는 방법들에 대해 책에 제시된 원리나 원칙들을 이용해 개발 현장에 그대로 적용하는 데에는 무리가 있다. 하지만 어떤 부분들을 더 고려해야하고 더 체크해야할 지 고민하는 시작점이 되기에 좋은 책이라 생각된다. 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo