1년에 10억 버는 방구석 비즈니스 - 29세에 자본도 직원도 없이 매출 10억을 달성한 사업 천재의 월급 독립 프로젝트
라이언 대니얼 모런 지음, 신솔잎 옮김 / 비즈니스북스 / 2021년 6월
평점 :
장바구니담기


10억 만드는 공식 = 3만원 * 3~5가지 제품 * 25개 * 365일

위 공식을 1년 안에 현실로 만드는 방법을 다룬 책으로 마이크로 및 온라인에 특화된 비즈니스 경영 방법과 성공에 안착하기 위한 저자 개인의 경험과 커뮤니티 사업가들의 지혜를 모은 책이다.

이 책의 핵심은 11장 329p “1년에 10억 버는 3G 프로세스”에 응축되어 있다. 크게 그라인드, 그로스, 골드의 3단계 프로세스를 제시하는데 각 프로세스를 요약하면 다음과 같다.


  • 1단계 : 그라인드(0 ~ 4개월)
    • 1.핵심 고객을 정하라.
      • 고객이 어떤 집단에 속해있는지, 고객 스스로 자신을 어떻게 규정하는지에 주목해야 한다.
    • 2.핵심 고객이 구매할 3 ~ 5가지 제품을 정하라.
    • 3.첫 제품을 선택하라.
      • 다른 제품의 구매를 유도하는 게이트웨이 상품이어야 한다.
    • 4.당신의 여정을 기록할 곳을 정하라.
      • 오디언스가 형성되어 있는 곳을 택해 기록을 시작하라.
    • 5.시제품을 주문하고 제조사에 첫 주문을 하라.
      • 재고를 충분히 하는 일이 가장 중요하다.
    • 6.판을 유리하게 만들어라.
      • 하루에 10달러면 가능하다.
    • 7.주문을 받아라.
  • 2단계 : 그로스(5 ~ 8개월)
    • 1.오디언스가 정말로 당신의 제품을 원하는가?
    • 2.작게 생각하라.
      • 하루 25개 판매를 위해 후기 하나를 받고 고객 한 명을 행복하게 만들면 된다.
    • 3.핵심 구매 고객을 양성하라.
      • 첫 고객 리스트를 만들고, 신제품이 출시되면 선착순으로 가장 먼저 제공한다.
    • 4.클릭당 지불 광고와 영상 광고를 활용하라.
  • 3단계 : 골드(9 ~ 12개월)
    • 1.승수효과를 내는 제품들만 출시하라.
    • 2.인플루언서나 오디언스를 통해 광고하라.
    • 3.거래가 아닌 관계를 형성하라.
    • 4.자신에게 수입을 지급하라.
    • 5.전략적 리스크를 감행하라.

리뷰의 제약상 위 요약 전략은 언급하긴 했지만 책에서 다루는 구체적인 사례와 전략을 불과 몇페이지로 압축한 것에 지나지 않기에 책 전체를 읽어보기 전까지 핵심 문구가 전달하고자 하는 핵심을 파악하기는 어려울 것이다. 가급적 책을 완독할 것을 권유하며 특히 각 챕터마다 등장하는 네모 박스 안의 내용은 필독과 정독을 권하는 바이다.

총체적으로 평가해 볼 때 이 책이 그간 다른 비즈니스 분야의 책과 차별점이 있다면 실행 가능한 플랜에 초점을 맞추고 있다는 점을 들 수 있겠다. 다른 비즈니스 서적들이 경영의 원론을 다루고 있거나 연구적인 특성에 초점을 맞추고 있다면 이 책은 직접 수익을 얻기 위한 마이크로 비즈니스에 집중한다.

서두에 밝힌 10억을 만들기 위한 구체적인 공식을 제시하는 것 부터 사업의 첫 출발선에 리스크를 최소화 할 수 있는 일종의 최소 제품 출시(MVP)를 강조하는 부분이 그렇다. 장기적인 관점에서 Exit 전략을 다루고 있다는 점은 지속가능한 경영을 목표로 하기에 독자로 하여금 신뢰를 준다.

가장 눈여겨 볼 만한 부분은 저자의 경험에서 비롯된 타이밍인데 위 3G 프로세스를 눈여겨 보면 3단계의 마지막에 이르러서야 전략적 리스크를 감행해도 좋다는 싸인을 보내고 있다. 마이크로 비즈니스 단계에서 무리한 투자와 추정에 무리하게 투기하는 것을 금하고 있다.

이렇듯 많은 장점을 담고 있어 사업가 - 특히, 자영업자나 스타트업 - 에게 많은 도움이 되는 책이지만 개인적으로 가장 마음에 들었던 점은 아이템을 선정하는 아이디어를 끄집어 내주는 일련의 과정이었다. 스스로의 불편함에서 시작하여 찾을 수 없다면 직접 물어볼 수 있는 주위 친한 이들의 불편함에서 스스로 뛰어들 아이템의 선정 범위를 축소해 볼 수 있다.

나 역시 책을 읽으며 10가지 이상의 해봄직한 아이템을 얻어낼 수 있었다. 그저 아이템을 찾는데 그치지 않고 이를 어떻게 매출로 연결시키는지 초기 스텝 과정을 구체적인 예시와 경험을 통해 설명하고 있어 따라해볼만한 자신감이 생기기도 했다.

다만 이러한 온라인 마이크로 비즈니스는 현 시점 미국 시장을 기반으로 한 전략이라는 점에 유의할 필요가 있을 듯 하다. 한국과 미국은 영토와 SNS 등 온라인 사용 행태가 다르며 비즈니스 모델에도 차이점이 있을 것이다.

나는 이 분야의 전문가가 아니므로 책을 읽으며 주의를 기울이긴 했지만 명확한 차이점을 정리하기엔 경험이 부족하다. 다만, 적어도 타이밍 상 미국이 성공한 모델을 한국이 뒤늦게 따르는 경향이 있으므로 아직까지는 책에서 제시한 비즈니스 모델이 수익을 안겨주기에 상당히 괜찮은 방법이 아닐까 하는 생각이 들었다.

창업에 관심이 많아 수백권의 책을 읽은 나로써 이만큼 현실과 실전에 가까운 책도 찾기 어렵다 평하고 싶다. 특별한 투자금없이 그리고 뛰어난 전문성 없이 작은 규모로 시작하여 본인의 시간적, 경제적 자유를 목표로 하는 이라면 한 번쯤은 책에서 추천하는 형태의 비즈니스에 도전해 볼 것을 권하고 싶다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
만화로 배우는 공룡의 생태 한빛비즈 교양툰 3
갈로아 지음 / 한빛비즈 / 2019년 6월
평점 :
장바구니담기


공룡의 진화 과정, 새와의 비교를 통한 생물학적 분류, 그리고 공룡이 살았던 시대의 지구와 생태계를 다룬 교양 만화이다. 어렵게만 느껴지는 생물학과 공룡의 세계를 작가 특유의 유머 감각과 재미있는 그림으로 소개하고 있어 공룡의 생태를 재미있게 배울 수 있다는 점이 매력이다.공룡의계통

이 책은 교양툰 시리즈 중 하나이다. 교양툰 시리즈는 나와 아들이 좋아하는 시리즈인지라 예전부터 관련 도서의 리뷰를 블로그로 소개해 왔다. 그 어려운 양자역학조차 알기 쉽게 설명할 정도로 방대한 지식을 부담없이 빠르게 배울 수 있다는 점과 흥미를 바탕으로 자연스럽게 과학에 빠져들 수 있다는 구성이 장점이다. 참고로 다른 교양툰 시리즈 리뷰를 확인하고 싶다면 아래 링크들을 참조하기 바란다.

흔히 - 특히, 남자들의 경우 - 공룡에 대해 호기심을 갖고 알게되는 지식의 집중 범위는 이렇다. 암기식으로 공룡의 종에만 관심을 가지거나 드래곤볼식(?) 전투력 측정 비교로 가장 강력한 티라노 사우르스에 관심을 가지는 편식이 생긴다.

이 책을 읽음으로써 얻게 되는 다양한 관점은 다음과 같다. 먼저 다양한 질문거리를 던지고 이에 대한 답을 찾는 과정에서 자연스럽게 과학적 접근법을 배울 수 있다.

예를 들면 공룡 이전에도 거대한 육식 동물이 존재했음에도 공룡이 지구 위 생물 중 대부분의 포션을 차지하게 된 진화적 성공 요인이라던가 판게아와 5번에 걸친 지구 대멸종과의 관계, 나아가 다리가 길어짐으로써 폐에 압박이 덜해 활동에 유리해졌다는 생물학적 요인까지 많은 질문에 대한 답을 찾음으로써 생태계가 보여주는 인과관계를 유추해볼 수 있다.생태계

이런 능력은 과학에서 흔히 새로운 지식의 영역을 넓힐 때 주로 활용하는 방법론의 시작을 가능하게 해준다. 즉, 남다른 시각과 통찰로 그동안 찾아내지 못한 자연에서의 법칙을 포착해내고 나름의 가설을 세우며 실험을 설계하여 입증해가는 과정을 거치면 자연스럽게 과학자에 한발 다가서게 되는 것이다.

이른 나이에 이런 과학적 사고 방식을 얻을 수 있다는 점이 이 책을 통해 얻을 수 있는 최고의 장점이라 할 수 있겠다. 과학적 접근 방식 그 자체를 학습하여 얻는 것이 아닌 흥미롭고 재미있는 책을 접하며 자연스럽게 내재화할 수 있다는 것은 추후 성장해가며 본인도 모르는 사이에 공부가 아닌 취미 혹은 흥미로 인식하게 되기에 - 노력하는 자는 좋아하는 자를 이길 수 없으므로 - 인식하지 못한 사이에 얻을 수 있는 큰 선물이 될 것이다.

흥미로웠던 몇가지 주제를 이어 설명하자면 공룡과 새의 관계를 다룬점이다. 그동안 공룡은 파충류로 알고 있었고 파충류는 변온 동물이라는 특성을 갖고 있다. 그런데 공룡 화석에 깃털의 흔적이 발견되고 있고 새는 조류로 분류되며 내온성 항온동물이다.동물분류

도대체 공룡이 파충류가 맞긴 한건가?

이 단순한 질문에 대한 답을 찾는 과정은 매우 복잡하며, 답을 찾는 과정도 흥미롭지만 그 과정에서 위에서 언급한 과학적 사고 방식과 접근법을 배울 수 있다.공룡의위치

더불어 공룡의 진화를 다룬 부분도 매력적이다. 곤충의 진화편 리뷰에서도 언급했지만 진화에는 목적이 없다. 그저 환경속에서 가장 살아남기 유리한 개체와 종이 자손을 이어갔고 그 형질이 전승되었을 뿐이다. 진화의 본 모습을 이해하기에 좋은 책이다.

또 개인적으로 AI를 연구하면서 그동안 진화와 관련있는 인공지능은 유전학습 정도로 인식하고 있었다. 그런데 읽다보니 진화론에서 나온 AI의 아이디어가 한두가지가 아니다. 이렇게 또 기초 과학의 소중함을 새삼 깨달았고 더불어 자라나는 우리 세대 아이들이 이런 책을 통해 호기심을 얻고 기초 과학에서 옥석을 가려 응용분야에 접목했으면 좋겠다는 생각이 들었다.

이는 알파고를 만들 수 있었던 핵심 기법 강화학습에 대한 아이디어도 진화론과 유사하다. 강화학습은 크게 환경, 에이전트, 액션으로 이루어지는데 진화론에서도 마찬가지로 환경에서 생존하기 위한 개체가 살아남아 진화가 됨을 설명하고 있다. 강화학습은 생존대신 보상을 많이 받고자 하는 매커니즘으로 이루어져 있으며 매우 흡사하다. 역시 AI를 만드는데 제일 좋은 방법은 창조주가 자연을 만드는 과정을 모방하는 것이 아닐까 싶다.

본 도서는 독특하고 보기 드문 저자 특유의 유머 감각도 엿볼 수 있다. 김성모 만화 짤로 유명한 새가 왱알왱알하고 우는 짤부터, “내가 고자라니”로 유명한 짤 등 인터넷에서 누구나 봤을 법한 재밌는 소재들이 등장하기에 읽는 것만으로 꽤 즐거움을 준다.

다만 14 ~ 15화는 공룡의 성생활을 다루고 있기에 너무 어린 자녀와 읽을 땐 부모가 함께하는 것이 좋을 듯 하다. 그나마 다행인 것은 분량이 짧고 곤충의 진화편과는 달리 크게 적나라하진 않다.

곤충의 진화편과 마찬가지로 읽는 내내 너무 재미있어서 손에서 놓을 수 없었다. 읽어보면 알 것이다. 쉽사리 손 뗄 수 없다. 자라나는 청소년과 공룡 및 과학에 관심이 많은 이들에게 강력하게 추천하고 싶다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
코딩 테스트를 위한 자료 구조와 알고리즘 with C++ - 67개 문제 풀이로 익히자!
존 캐리.셰리안 도시.파야스 라잔 지음, 황선규 옮김 / 길벗 / 2020년 12월
평점 :
장바구니담기


C++을 C++ 답게 십분 활용할 수 있는 노하우를 얻을 수 있으며, 실무에 중요하게 활용되는 알고리즘을 구현하는 방법을 배울 수 있는 책이다. 장점과 단점을 중심으로 소개해보겠다.


  • 소개하고 싶은 장점 두가지
    크게 두가지의 장점을 언급하고 싶다. 우선 STL의 자료 구조 컨테이너 혹은 템플릿 메타프로그래밍과 같은 C++에 종속적인 기법들을 각 알고리즘 별로 자세히 설명하고 있어 C++의 특성을 잘 전달하고 있다는 점을 들 수 있다.

    C++은 활용 방식에 따라 C언어의 무한에 가까운 자유도와 Python 같은 고수준 언어의 편리함 사이의 미묘한 줄타기 매력을 느낄 수 있다. C언어의 포인터로 고차원 언어들이 지원하지 않는 자유도를 만끽하면서도, Struct와 함수 포인터로 객체지향을 흉내내며 땀 흘린적이 있다면 이 말의 의미를 알 것이다.

    반면 Python으로 어떻게 이 코드가 돌아가냐고 놀랄 때도 있는가 하면 가끔 포인터로 한방에 끝낼 수 있는 것을 빙빙 돌아갈 때 답답함을 느끼기도 한다. 그 적절한 중간 지점의 합리성을 찾는 C++의 매력은 STL이나 템플릿 등을 상황에 따라 잘 다룰 수 있어야 하는데 이 책은 C++14 표준에 맞춰 C++의 매력과 장점을 잘 전달하고 있다.

    또 하나의 장점은 실습 문제와 연습 문제의 질이다. 코딩 테스트용 알고리즘 문제는 알고리즘을 훈련하고 원하는 회사에 취업하기엔 적당하지만 제한된 시간 내 변별력을 목적으로 하고 있어 깊이 있는 문제 혹은 실전에 유용하게 활용될 만한 문제 그리고 큰 숲을 이룰만한 체계성을 가진 문제들이 적은 편이다. 단지 취업의 목적이 아니라 한 단계 넘어선 보다 큰 프로젝트를 다루고 싶다거나 자신의 주체할 수 없는 창의 욕구를 실현하기에 부족한 면이 없지 않다.

    만약 나와 같은 생각을 한 독자 분이라면 본 도서의 예제들이 그런 불만들을 상당 부분 해소시켜 줄 것이다. 책 소개에는 무려 67개의 문제가 등장한다고 하는데 이를 모두 다룰 순 없으므로 소개할 만한 몇가지를 압축하여 보았다.

    첫번째로 소개하고 싶은 문제는 아래 그림과 같이 맵리듀스를 구현하는 문제이다. 맵리듀스는 데이터 과학 분야에서 자주 활용되는 알고리즘으로 하둡 등의 플랫폼에서 자주 활용되는 기술이다.맵리듀스

    분할 정복 알고리즘의 몇몇 코딩 테스트 알고리즘을 풀어보면 문제의 질 때문에 한숨 나온적이 많았다. 적어도 이 예제처럼 분할 정복을 병렬 처리를 위한 목적으로 활용하는 수준의 문제를 풀어야 실무에서 빛을 발휘하지 않을까?

    알고리즘을 설명하고 알고리즘을 구현하는 수준의 문제는 수학으로 따지면 사칙연산의 응용 정도 레벨에 지나지 않는다고 생각한다. 이런 부분이 이 책의 가장 큰 장점이라고 할 수 있겠는데 저자들의 다양한 경험이 축적되어 현업에서 빛을 발할 수 있는 실전적인 문제가 많다는 점을 강조하고 싶다.

    개인적으로는 데이터 과학 분야에 도움이 되는 예제들이 많이 수록되어 있다는 점도 인상깊었다. 이 책의 예제 중 특히 2장 트리, 그래프 파트나 5 ~ 8장에서 다룬 그리디, 그래프, DP 알고리즘의 경우 AI 분야 강화학습 및 데이터 과학 분야에 자주 활용되는 기본 알고리즘이기에 AI를 공부하는 나로써는 많은 도움을 받을 수 있었다.

    두번째 예제는 멜로디 순열 문제이다. 음악 집합 이론을 활용하는데 프로그래밍의 최고 매력은 이렇게 다른 학문과의 접점에서 가장 빛나는 것 같다. 나는 책을 고르기전 반드시 저자의 약력을 살펴보는 편인데 책의 저자 중 한 명인 존캐리의 작곡자이자 피아니스트 경력이 특히 눈에 띄였다. 아마도 이 문제는 존캐리가 낸 문제가 아닐까 싶다.멜로디

    프로그래밍은 현실을 대변하기도 하고 현실의 문제를 풀어주는데 그 가치가 있다. 즉, 어느 실무 분야에 접목되더라도 그 분야의 도메인 지식을 정확하고 빠르게 이해하여 사람을 돕는 프로그램을 만들줄 알아야 프로그래머로써의 가치가 빛날 것이기에 이런 신선한 문제에 많은 고마움을 느낄 수 있었다. 풀어보면 음악의 깊은 세계를 IT로 느낄 수 있다는 것에 놀라게 될 것이다.

    세번째 예제도 두번째 예제와 맥락이 같다. 최대한 저렴하게 도로를 설계하는 문제인데 그래프의 가중치나 최단 거리를 찾는 알고리즘을 적용하다보면 알고리즘을 어떻게 써야 유용한지 문제 중심의 감각을 익힐 수 있다. 이 역시 네이게이션 최단 경로 안내와 같은 업무 도메인과 결합했을 때 유용하게 활용할 수 있는 예제이다.도로설계

    알고리즘을 모두 잘 이해하고 구현할 수 있다고 해도 현실의 문제를 풀 수 없다면 무슨 소용이겠는가? 이 책은 이런 알고리즘과 현실의 가교 역할을 톡톡히 해낸다는 점이 매력이라 할 수 있다.


  • 주의해야 할 점과 단점

    여느 책이 그렇듯 이 책 또한 주의할 점과 단점이 있다. 먼저 주의할 점으로 난이도를 언급하고 싶다. 이 책은 위에서 설명했듯 알고리즘의 실전 예제가 매우 수준이 높다. 취업을 목적으로 코딩테스트 통과를 목적으로 하는 수험생이라면 이 책이 적합하지 않을 수 있다. 각 예제들은 때로는 날밤새며 고요한 새벽에 깊은 집중을 필요로 하는 문제도 있다.

    그렇기에 알고리즘의 기본에 충실하지 않은 독자는 먼저 다른 책으로 알고리즘의 기초 정도는 충실히 학습한 후 보는 편이 나을 것이다. 아래 그림처럼 특정 알고리즘은 각 단계를 친절하게 도식화하여 설명하기도 하지만 이런 친절한 그림이 자주 등장하는 것은 아니다. 그림으로 익히는 알고리즘 유형의 책들이 시중에 많기 때문에 굳이 초보자가 난이도 높은 책으로 끙끙댈 필요는 없을 것 같다.뻐꾸기해싱

    더불어 Python이나 Java 등 어느 특정 언어로 알고리즘의 기본 구현 정도는 해 본 사람에게 적합한 책이다. 그렇지 않으면 이 책에 숨은 C++의 장점을 십분 살리기 어려울 것이다. 알고리즘과 C++ 모두 이해하지 못한다면 이 책을 어렵게 완독한다고 해도 반쪽짜리 지식만 얻게 될 가능성이 크다.

    적어도 하나의 언어에 빠삭한 사람이 알고리즘도 구현해보고 이 책으로 C++을 활용한 알고리즘과 비교한다면 C++의 매력이 무엇인지 어떨 때 쓰면 좋을지 언어 간 어떤 차이가 있는지 폭넓게 학습할 수 있을 것이다.

    단점으로는 책의 친절함(?)이 부족하다는 점을 지적하고 싶다. 일단 도식화 자료가 너무 적은 편이다. 더불어 시간 복잡도를 설명한 부분은 암기식으로 결론만 정리할 것이 아니라 멋진 예제에 시간복잡도 계산하는 방법과 절차를 다뤘다면 이 책은 어디서도 보기 힘든 역작이 되지 않았을까 하는 아쉬움도 있다.

    더불어 제목이 조금 마음에 안든다. 이 책은 코딩 테스트를 목적으로 하는 책이 아니다. 한 차원 더 높은 곳을 지향하는 사람들을 위한 책으로 코딩 테스트 통과를 목적으로 하는 사람에게는 되려 시간 낭비가 될 수 있다. 대신 여기 있는 문제들을 모두 풀 줄 안다면 코딩 테스트 따위는 뭐가 나와도 씹어 먹을 수준으로 변모해 있겠지만..


여담으로 온라인 서점에서 어떤 이의 평을 읽었는데 기가 찬다. 때로 본인의 목적에 맞지 않는 내용을 다룬다는 이유로, 혹은 난이도가 본인의 입맛에 맞지 않는다는 이유로 책에 혹평을 하는 이들이 있다. 이는 또 다른 목적으로 양서를 찾는 독자를 방해하는 행위라 생각한다.

왜 어려운 책은 늘 그 따위의 평점을 받아야 하고, 베스트 셀러같이 하위 90% 수준의 입맛에 맞춘 책은 칭송을 받아야 하는 건지 책을 사랑하고 리뷰를 즐기는 사람으로써 늘 불만이다. 독자의 목적에 충실한 책을 고르는데 있어 그런 서평은 무시하길 바란다.

끝으로 본 도서의 특징을 정리하며 리뷰를 마칠까 한다. 단순히 기초 알고리즘을 익히기 위한 사람이거나 C++을 배우고 싶은 사람에게 이 책은 적합하지 않다. 하지만 C++도 알고리즘도 어느 정도 알고있는 사람이 C++을 C++답게 활용하고 싶다면, 아울러 유치한 코딩 테스트 알고리즘을 뛰어넘어 현실의 문제를 알고리즘으로 해결해 보고 싶다면 이 책은 좋은 선택이 될 것이다.




댓글(2) 먼댓글(0) 좋아요(3)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
novdov 2021-06-19 22:09   좋아요 1 | 댓글달기 | URL
질 높은 서평 감사합니다 :)

nanhmjjang 2021-12-12 16:43   좋아요 0 | URL
부족한 서평인데도 애써 읽어주시고 좋은 평을 해주셔서 감사합니다!!
 
실전 시계열 분석 - 통계와 머신러닝을 활용한 예측 기법
에일린 닐슨 지음, 박찬성 옮김 / 한빛미디어 / 2021년 4월
평점 :
장바구니담기


본 도서는 업무 도메인 측면(의료-금융-공공-물리학 등)에서 기술적인 측면(통계-상태공간-머신러닝-딥러닝)에 이르기까지 시계열을 집대성한 책이다.

책에서 다루는 내용을 크게 나눠보면 다음과 같다.

  • 발견, 전처리, EDA, 시뮬레이션, 저장 및 처리, 피처 엔지니어링
  • 모델링 : 통계, 상태공간, 머신러닝, 딥러닝
  • 오차 측정, 배포, 성능
  • 사례연구 : 의료, 금융, 정부(공공데이터)
  • 그 외 기본 지식 : 시계열의 역사, 대규모 예측을 위한 패키지, 전망

내용에서 알 수 있듯 이 책은 폭넓은 도메인 영역과 기술을 다루고 있다. 이 점은 책의 큰 장점이자 단점이 될 수도 있는 부분이다. 눈에 띄는 장점은 일단 거의 전 분야에서 활용되는 시계열의 지식이 잘 정리되어 있다는 점이다.

시계열을 활용할 때 항상 어려웠던 부분은 지식이 분야별로 흩어져 있다는 것이다. 혹시라도 다른 진영 혹은 다른 도메인에서 유용하게 활용할 수 있는 기법이나 아이디어를 찾아보려 하면 그 영역까지 진입하기에 너무 오랜 시간이 걸린다.

또 R을 써야할지 Python을 써야할지 자주 고민이 생긴다. 세월이 흐르며 상호 보완되고 있긴 하지만 여전히 둘의 교집합에 제외된 어느 한 영역에만 속하는 독립적인 집합의 영역이 항상 존재한다. 예를 들면 롤링 조인과 같은 기술의 경우 Python에 비해 훨씬 사용하기 쉽고 직관적이다. 시계열 데이터를 처리할 때는 시점간의 연결 작업이 빈번한데 딱 맞게 매칭하는 작업이 너무 어려운 일이기 때문이다.롤링조인

또 R은 단 한 줄의 코드로 계절성, 추세, 잔차 등으로 분해가 가능하다. 왕초보 시절 이 기능을 Python으로 구현해보려고 덤벼들었다가 좌절 한 적이 있는데 찾아보면 언제나 유용한 기법들이 있다.

거인의 어깨 위에 올라가야 할 필요가 있는데 문제는 거인의 어깨에 어떤 것이 있는지 없는지 조차 몰라 검색 자체를 못하기 쉽상이다. 그런 측면에서 이 책은 각 언어별로 자주 활용되는 기술들의 핵심들이 잘 정리되어 있고, 각 도메인들이 잘 정리되어 있어 잘 모르는 분야의 아이디어의 메타 지식을 정리하기에 좋다.시계열분해

또 다른 장점으로는 초반 1 ~ 5장에 해당하는 부분이 마음에 들었다. 시계열은 전처리나 시뮬레이션이 꽤나 까다롭다. 책에서도 볼 수 있듯 결측치의 개념이 시간축에 의존한다. 그냥 일반 Tabular 데이터에서 빈값을 찾는 정도로 넘어갔다간 엉망이 된다. 전체 자료의 시간축을 살펴봐야 한다. 이런 사소한 부분부터 시뮬레이션이나 피처 엔지니어링에 이르기까지 모델링 이전에 필요한 작업들이 일목 요연하게 정리되어 있다.


반면 이런 장점을 수용하기 위한 트레이드 오프로 단점도 상당하다. 일단 너무 폭넓은 영역의 지식을 책 한 권에 담으려다 보니 그 깊이가 얕다. 난이도의 깊이가 얇은 것은 아니지만 한정된 지면에 너무 많은 지식을 다루다보니 추상적인 관점에서 바라봐야 하는 경우가 흔하다.

하지만 통계에서 활용되는 MA, AR, ARIMA 등의 모형만 예로 들어도 깊이 있게 알기 위해선 상당량한 학습이 필요하다. 책에서는 코어 부분에 해당하는 코드만 다루고 있으며, 수학도 추상적인 수준으로 설명이 되어 있고, 이론은 상당히 축약 설명되어 있어 이해하기 어려운 영역이 많다. 아무리 뛰어난 사람도 머신러닝, 딥러닝, 통계, 상태공간 등의 정보를 모두 깊이 있게 알고 있는 사람은 드물 것이다.

취약한 부분이 있게 마련일텐데 그런 파트를 만나면 진땀 빼며 읽어야 한다는 단점이 있다. 그렇기 때문인지 번역 수준 또한 어느 파트는 매우 매끄러운데, 어느 파트는 난해하기 그지 없다.

또 하나의 단점으로는 R과 Python의 코드가 왔다갔다 한다. 이것은 저자를 탓할 문제는 아니다. 앞서 언급했듯 각 언어별 제공하는 기능이나 편의성에 차이가 현격한 부분도 존재하기 때문이다. 더불어 이를 완벽하게 정리, 파악할 수 있는 사람은 매우 드물 것이다. 사람의 수명에 한계가 있는데 어떻게 수 많은 API나 기능을 다 정리할 수 있을까? 그래서 십분 이해가는 부분이긴 하지만 독자의 입장에서는 영 불편한 것이 사실이다. 그래서 R과 Python의 연동에 관한 경험에서 우러나온 Tip도 수록되어 있었다면 어땠을까 하는 아쉬움도 있다.

코드 역시 실전 중심적이진 않다. 만약 구현 과정을 따라하며 배우고 싶은 독자는 이 책이 적합하지는 않을 것이다. 상당히 추상화 된 레벨에서 큰 그림을 그려 나가야 하는 책이기 때문이다. 연구 중심의 서적이라고나 할까? 대부분의 예제 코드는 실전 데이터 셋을 활용하기 보다는 각 이론을 설명하기 쉬운 형태의 가상 데이터를 가공하여 활용한다.

덕분에 모델을 이해하는데 도움이 상당하지만 실전에서 봉착할 수 있는 다양한 케이스에는 취약하다고 할 수 있다. 그래도 사례연구 파트에서 실전과 유사한 데이터를 활용하여 감을 잡는데 조금은 도움이 되었다.시계열분해

그럼에도 이 책을 추천하고 싶은 이유는 시계열과 관련된 메타 지식이 체계적으로 정리되어 있다는 매력을 떨치기 어렵기 때문이다. 타 도메인 혹은 기술 분야에는 어떤 해법들이 숨겨져 있는지 전체적인 시야로 조망해보고 필요할 때 쉽게 참조할 수 있다는 장점은 무시 못할 매력이라 생각한다.

각 장 말미에 굵직한 획을 그은 유용한 시계열 논문이 잘 정리되어 있는 것도 장점 중 하나이다. 기존 책들이 시계열을 어느 특정 기술의 부분집합으로 다뤘다면 이 책은 시계열을 중심으로 전반적인 기술들을 엮어 보는 횡적 관점에서 접근한다. 타 분야의 유용한 아이디어를 빠르게 살펴보고 싶다면 본 도서를 살펴보길 권유한다.


한빛미디어 “나는 리뷰어다” 활동을 위해서 책을 제공받아 작성된 서평입니다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
파이썬 챌린지 - 150개의 코딩 과제로 배운다
니콜라 레이시 지음, 황반석 옮김 / 제이펍 / 2021년 5월
평점 :
절판


본 도서는 최소한의 설명과 함께 150개의 코딩 문제를 직접 풀어보며 Python을 익히는 독특하고 재미있는 입문서이다. 각 챌린지가 다루는 문제는 굉장히 초급 수준이지만 파이썬의 문법에 익숙해지기에 적합한 문제들이기도 하다. 암기보다는 문제 해결 능력에 초점을 맞춘 점이 가장 큰 장점이다.

먼저 추천하고 싶은 대상 독자는 다음과 같다.

  • 코딩을 처음 접하는 학생, 비전공자 등 입문자(왕초보)
  • Python의 문법을 배웠지만 당장 구현에는 자신이 없는 이론에만 자신있는 사람
  • C, Java 등의 타 언어를 알고 있음에도 Python으로 전향을 원하는 사람

만약 이 유형에 해당하지 않는다면 본 도서는 너무 쉬워 큰 도움이 되지 않을 수도 있다. 물론 프로그래밍은 한 번이라도 더 구현할수록 새롭게 얻는 것이 생기기 때문에 심심풀이로 도전해봐도 재미있을 것이다. 하지만 본 리뷰를 읽을 필요는 없을 것 같다.

위 3가지 유형 해당자들을 위해 리뷰를 계속 진행하겠다. 우선 각 챌린지를 진행하기 앞서 이론이 고작 한 두 페이지 수준으로 짧게 설명되어 있다는 점이 인상적이었다.

개인적으로는 마음에 드는 구성이지만 이 정도 설명으로 과연 배울 수 있을까라는 의구심이 들었다. 하지만 이어지는 챌린지 문제들을 하나씩 풀어보니 충분히 가능한 구성이라는 생각이 들었다. 백견이 불여일타 식으로 철저히 실습을 통해 프로그래밍을 익히도록 구성된 점이 가장 큰 장점이다.

길게 설명할 것 없이 괜찮았던 예제 하나를 중심으로 책의 구성 방식을 설명해보겠다. 대상 예제는 어느 프로그래밍 언어에서나 가장 흔하게 쓰이는 문자열 파트의 마지막 문제로 골라보았다. 본문 59p에 등장하는 87번 챌린지이다.

어떤 느낌인지 확인하고 싶다면 아래 예시를 풀어보길 바란다. 참고로 이 문제는 책의 등장하는 문제 중 중간 난이도 정도 된다. 이 문제를 푸는데 쉽지 않았다면 이 책이 분명 도움이 될 것이다.


  • 개념
    먼저 문자열의 개념을 한 페이지로 간단하게 설명한다. Python에서 문자열을 다룰 때 흔히 사용하는 슬라이스를 위해 인덱스 개념을 알려준다.개념

  • 예제코드
    다음으로는 예제코드가 등장한다. 문자열 파트에 해당하는 80 ~ 87번 챌린지를 풀기위한 기초 문법으로 그대로 따라서 구현해보면 좋다. 기본 패턴 및 일종의 API를 배우는 과정이라고 생각하면 된다.예제코드

  • 챌린지
    본격적으로 챌린지 문제가 등장한다.챌린지

  • 답안
    마지막으로 정답이 등장한다. 프로그래밍 세계가 언제나 그렇듯 답은 여러가지가 존재하지만 책에는 가장 쉽게 구현할 수 있는 답안 하나만 제시한다.답안


위와 같은 4단계 방식(개념-예제-챌린지-답안)으로 전체 18개의 장 150개의 챌린지가 등장한다. 초보자라면 분명 훈련하는데 충분할 만한 양이며 다 끝내고 나면 상당히 자신감이 생길 것이다. 장마다 다루는 주제는 다음과 같다.

  • 기초, 문자열, random, 파일I/O
  • if, for, while, 함수
  • 수학 함수, 튜플, 딕셔너리, 리스트, 배열, 2차원,
  • 터틀그래픽, Tkinter, SQLite

Python에서 가장 쉽지만 가장 활용도가 높은 주제들로 구성되어 있다. 그 중 터틀그래픽, Tkinter, SQLite과 같은 요소는 Python에서 다루는 주력 기능들도 아니고 다른 언어에서 더 활용도가 높은 기술들이지만 포함시킨 것이 좋다고 본다.

이런 스킬들을 알아야 직접 눈으로 그림그리고 GUI 만들어보고 자신이 원하는 목적의 가시적인 프로그램 하나를 만들 수 있기 때문이다. 나도 대학 시절 전공으로 처음 언어를 접했을 때 내 일기장이나 혹은 가계부 같은 것을 만들면서 진도를 빨리 뗄 수 있었던 기억이 난다.

이런 스스로 원하는 목적을 달성할 수 있도록 동기부여가 되어야 프로그래밍 실력이 빨리 늘텐데 그저 목적없는 예제의 타이핑은 학습을 쉽게 지치게 만들 것이다. 그런 점에서 초보자들을 위한 완급 조절이 잘 된 책이라는 생각이 들었다.

다만 구성에서 몇 가지 아쉬운 점도 보였다. 위에서 소개한 4단계 방식 중 답안 부분이 조금 모호하다. 답안을 작성하기 위해 저자가 어떤 방식을 접근했는지 그리고 상세한 주석 등이 추가되었다면 학습자의 입장에서 복습도 되고 좋았을 텐데라는 생각도 들었다.

하지만 또 달리 생각하면 아리송하다. 답안은 1개만 존재하지 않는다. C언어의 포인터 개념을 알고 있는 사람이라면 위 예제의 경우 다른 답안을 내놓았을 것이다. C언어의 포인터를 사용하듯 index를 이용하여 reverse 인덱스를 이용할 수도 있기 때문이다. 다음과 같이 말이다.

user_str = input('input:')
for i in range(-1, (len(user_str)+1)*-1,-1):
    print(user_str[i])

또 다른 방식으로는 시간복잡도 등 알고리즘 성능 면에서는 좋다고 볼 수 없겠지만 배우는 입장에서는 다양한 시도가 살이되고 피가 되므로 이런 방법도 있을 수 있겠다.

user_str = input('input:')
reverse_str = ''
for i in range(0, len(user_str)):
    reverse_str = user_str[i] + reverse_str
for i in reverse_str:
    print(i)

입력받은 문자열을 맨 뒤로 붙여나가는 방식이다. for문을 2번써서 실전에서는 좋지 않은 코드이지만 배울 때는 다양한 길을 갈 필요가 있다. 또 다른 방식의 코드도 얼마든지 더 있을 수 있다.

어쨌든 책에서 이런 다양한 경우와 접근법의 설명이 없는 것은 다소 아쉽지만 역으로 생각하면 쉽게 어떤 하나의 패턴을 외우는 식으로 접근할까 우려된 구성이 아닌가 싶기도 하다. 또한 내 방식대로 모두 분량에 포함된다면 양이 늘어 지레 겁먹고 원본의 구성 상 깔끔함을 유지하기 어려웠겠다는 생각도 든다.

추천하고 싶은 공부 방식은 끝까지 디른 레퍼런스를 참조하지 말고 될 때까지 삽질하며 구현했으면 좋겠다. 몇 시간이 지나도 구현이 어렵다면 예제 코드만 다시 보자. 그래도 어렵다면 Python의 공식 레퍼런스를 참조하자. 그래도 어렵다면 블로그 등 인터넷을 검색하자. 답안은 스스로 풀기 이전엔 절대 보지 않았으면 한다. 저자의 풀이와 다른 내 풀이를 비교하면서 배우는 과정도 필요하기 때문이다. 그 후에는 위에 내가 예시를 든 것 처럼 다른 접근법으로도 풀어봤으면 좋겠다.

이렇게 푸는 것이 시간이 오래 걸릴 수는 있을지 몰라도 넓게 바라보면 가장 빠른 지름길이다. 그리고 그런 과정을 거쳐야 사고의 깊이도 깊어지고 암기도 오래 지속된다. 삽질 끝에 달콤한 해결책은 쉽게 머리속을 떠나지 않기 때문이다.

느낌이 꼭 메모리 하이라키 개념 마냥 HDD에 있는 지식을 레지스트리에 옮기는 느낌이랄까? 삽질해서 외운 지식은 떠오르기도 매우 빠르게 떠오른다. 추후 실전에서 복잡하고 거대한 프로젝트를 진행할 때 이런 순식간에 가져다 쓸 수 있는 지식이 항시 준비하고 있어야 다른 모르는 영역에 집중할 수 있기 때문이다.

그리고 프로그래밍 연습에서만큼은 복잡한 Tree마냥 각 경우의 수를 다 경험해 보는 것이 좋다. 그래야 나중에 성능도 개선시킬 수 있기 때문이다. 마치 위 예제에서 시간복잡도가 불리한데도 한 번 구현해 보는 것 처럼 말이다.

파트2는 파트1의 150개 예제와는 다른 구성이다. 오직 문제와 필요한 자료만 주어진다. 총 5개의 챌린지가 등장하는데 일종의 작은 실전 프로젝트라고 보면 된다. 파트1을 익혔다면 능히 풀 수 있는 문제들인데 만약 못 풀었다면 마찬가지로 답안을 볼 것이 아니라 파트1을 다시 복습하기 바란다.답안

마지막으로 언급하고 싶은 것이 있다. 이 책은 Pythonic에 중점을 둔 책이 아니라 프로그래밍의 기초에 중점을 둔 책이다. 예를 들면 file I/O 파트에서 with 구문을 쓰지 않는다. 별도의 close() 구문을 구현하도록 안내한다. 이는 Pythonic 하지 않은 부분이지만 기초 프로그래밍 과정에서는 좋은 방법이다. 대신 본 책을 마치고 나면 이런 Pythonic에 대한 보완을 염두에 두어야 한다.

array의 경우나 math 라이브러리 부분도 마찬가지이다. python이 데이터 분석에 강점이 있는 언어인만큼 보다 많이 활용하는 Numpy 등을 다뤄야 한다. 성능 상 GPU를 이용하는 Vectorization의 개념 등이 존재하기 때문이다. 약간 문법이 달라지기도 한다는 점에 주의를 해야 한다. 하지만 기본 개념을 충실히 익히면 다른 라이브러리들에 적응하는데 큰 도움이 될 것이다.

프로그래밍을 처음 배우는 분들께 도움이 되고 싶어 간만에 리뷰가 길었다. 프로그래밍을 프로그래밍답게 익히고 싶다면 본 도서를 강력히 추천하고 싶다.




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