처음 처음 | 이전 이전 | 1 | 2 | 3 |다음 다음 | 마지막 마지막
데이터 삽질 끝에 UX가 보였다 - 스타트업 전문 프로덕트 디자이너가 들려주는 현실 데이터 드리븐, 제12회 브런치북 출판 프로젝트 대상 수상작
이미진(란란) 지음 / 한빛미디어 / 2025년 7월
평점 :
장바구니담기


> 한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.


1. 이 책을 선택한 동기

저는 프로덕트 디자이너로 커리어를 시작했습니다. 당시 저는 제가 디자인한 결과물이 실제 사용자에게 실질적 가치를 전달하는지 늘 불안감이 있었어요. 이론을 바탕으로 사용자를 분석한 토대가 있긴 하였어도 어쩐지 근거가 부족한 느낌이었죠. 그러다 점차 “데이터 드리븐” 역량의 중요성이 대두되었습니다. 실제 우리 서비스의 사용자에게 유용한 UI/UX를 제공할 수 있는지 해소할 수 있는 방법은 이것이라 생각되었죠! 그때부터 데이터 드리븐에 대해 다방면으로 공부하기 시작했습니다.


당시 재직 중인 스타트업은 주도적으로 디자인을 개진할 수 있는 환경이라는 점에서 너무나 만족도가 높았지만 아쉬운 것은, ‘데이터’를 요청할 수 있는 환경은 아니었다는 것입니다. 0에서부터 빠르게 만들어가는 조직이었기 때문이죠. 때문에 다음 스텝으로는 데이터 분석을 할 수 있는 환경이 갖춰진 조직에서 디자인을 해보자는 목표가 있었어요.


현재는 프론트엔드 개발자로 커리어를 전향하여 어떻게 보면 ‘데이터 드리븐’은 제 포지션 상, 주 업무와는 관련 없을 수 있습니다. 하지만 저는 프로덕트 디자이너로 커리어를 시작한 영향으로 인해, 제품 주도 개발을 지향하고 있어요. 개발자라는 포지션을 떠나 프로덕트 메이커로서 데이터 기반으로 사용자 경험을 만드는 열망은 여전히 있었습니다. 그런 저에게 ‘데이터 삽질 끝에 UX가 보였다’라는 책은 너무나 구미가 당기는 책이었어요.


2. 어떤 책인지

‘데이터 삽질 끝에 UX가 보였다’는 스타트업 프로덕트 디자이너로 7번의 스타트업을 거치며, 데이터가 없는 환경에서도 어떻게 데이터를 활용한 디자인을 할 수 있는지 생생한 실무 경험을 토대로 풀어낸 진정한 데이터 드리븐 디자인의 교과서입니다. 데이터 드리븐 디자인에 대한 a to z가 아닙니다. 사용할 수 있는 데이터가 빼곡하고, 요청 관계가 확실한 이상적인 환경이 아닌, 빠르게 변화하는 실제 스타트업의 현업에서 어떻게 디자이너가 데이터를 기반으로 디자인을 할 수 있는지를 다루었어요. 마치 산전수전을 다 겪은 든든한 디자이너 사수님이 독자의 관점에 맞추어 차근차근 지도해주는 기분을 느꼈습니다.


3. 특히 인상적이었던 점

데이터 드리븐 디자인에 대해 이론적인 내용을 나열한 것이 아니라 사용할 수 있는 데이터 기반이 미리 마련되지 않은 스타트업 기준의 실무 환경에서 풀어나가는 내용이기 때문에 더욱 몰입되었습니다.

챕터 별로 정보를 다룰 뿐만 아니라 가상 인물을 만들어 일종의 소설의 형태로 해당 파트의 내용을 전개하는 구성이 무척 몰입도를 높여주었어요. 이야기의 형태는 언제나 기억을 선명하게 만들어줍니다. 또한 그 내용은 만들어진 이야기지만 실제로 너무나 실무 환경에서 흔히 겪을 만한 상황 설정이기 때문에 빠져들지 않을 수 없었어요.

4. 덕분에 무엇을 배웠는가

재직 중인 회사는 개발자로만 구성된 조직이지만, 모든 팀원들은 제네럴리스트로서 프로덕트 메이킹을 하고 있습니다. 디자이너였던 시절에는 ‘필요한 데이터는 어떻게 구상하고, 어떻게 구해야하지?’가 고민이었는데 현재는 필요한 데이터는 스스로 취합하고 가공할 수 있는 상황입니다. 이 책을 읽은 이상, 데이터가 없어서 데이터 드리븐을 못한다는 것은 핑계일 뿐이겠죠. 필요한 것은 프로젝트의 목적, 목표에 맞추어 어떤 데이터를 사용해야하는가를 찾아내는 역량입니다.

1인 개발에 대한 욕구가 강하고, 실제로 이것저것 메이킹을 하고 있습니다. 런칭에서 끝이 아니라, 실제로 사용자들에게 쓰이는 프로덕트가 되기 위해서는 직관에만 의존한 개발로서는 무용지물입니다. 사용자가 무엇을 원하는지, 내가 만들고 있는 프로덕트가 실제로 시장의 문제를 해결하기 위해서는 어떻게 공략해나갈지에 대해서는 방향을 잡아줄 데이터가 필요하다고 생각해요. 이 책을 읽기 전에는, 런칭하고 사용자가 생기고 어느 정도 데이터가 쌓여야만 그것을 활용한 다음 방향서을 잡을 수 있을 것이라 생각했어요. 그런데 책에서는 초기 스타트업, 첫 프로덕트를 위한 상황에서도 어떻게 데이터를 활용할 수 있는지 다루었습니다. ‘데이터가 없기 때문에…’라는 것은 핑계일 뿐이고 먼저 프로덕트가 타겟하는 시장으로부터 필요한 데이터를 어떻게 도출해낼 수 있을지에 대해 배울 수 있었습니다.

7. 이 책을 읽은 덕분에 기대되는 변화

당장 현업 프로젝트에서 런칭한 프로덕트의 핵심 지표를 개선하는 다음 과업이 주어졌는데, 막연한 직관으로 방향성을 설정하지 않을 수 있게 되었습니다. 책 속 등장인물 ‘아홉’이 그러했듯, 우선 우리 프로젝트의 시장과 비즈니스를 정확히 이해하고 프로젝트의 배경, 목적, 목표, 할일을 정확히 정의해야겠어요. 그것을 통해 필요한 데이터를 설정하여 이번에는 데이터 기반 지표 개선을 이뤄볼 예정입니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
코드 너머, 회사보다 오래 남을 개발자 - 소프트 스킬·개발문화·퍼스널 브랜딩으로 확보하는 결정적 경쟁력
김상기 외 지음 / 한빛미디어 / 2025년 6월
평점 :
장바구니담기


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

 

1. 이 책을 선택한 동기

퍼스널 브랜딩에 대한 주제는 여럿 읽어왔지만, ‘개발자’라는 맥락에서의 브랜딩에 대해 상세하게 다룬 책은 처음이었습니다. 이 책은 소프트 스킬, 개발 문화, 퍼스널 브랜딩을 개발자 도메인 속에서 풀어낸다는 점이 마음을 끌었어요. 특히 이름이 오래 남는 개발자라는 화두가 인상적이었습니다.

저는 양질의 기술 글, 컨퍼런스 무대에서 깊이 있는 이야기를 전하거나, 혹은 멘토링과 유튜브 채널로 후배에게 도움을 주시는 개발자분들을 동경해왔어요. 하지만 막상 그 목표에 도달하는 구체적인 방법을 설계해본 적은 없었습니다. 이 책은 바로 그 공백을 채워주며, “어떻게”를 세밀하게 다뤄주는 책이었습니다.


 

2. 어떤 책인지

『코드 너머, 회사보다 오래 남을 개발자』는 단순한 자기계발서가 아니었어요.
국내 주요 기업에서 DevRel을 경험하거나 주도하고 있는 실무진이 집필에 참여해, 개발자가 코드 밖에서 오래 살아남는 경쟁력을 세 축(소프트 스킬·개발 문화·퍼스널 브랜딩)으로 풀어냅니다.

회의에서의 대화법건강한 갈등 다루기사내 개발 문화를 만들어가는 방법대외 활동과 개인 브랜딩 전략까지 이어지는 구성이 특징이에요. “코드를 잘 짜는데 왜 선택받지 못할까?”라는 질문에, 개발자가 다음 스텝으로 성장할 수 있는 실천법을 제시합니다.


 

3. 특히 인상적이었던 점

상어 같은 대화 vs 고래 같은 대화

공격적이고 자기 주장만 내세우는 상어형 대화와, 경청과 배려로 생태계를 풍요롭게 하는 고래형 대화를 대비한 설명이 인상적이었어요. 회의와 코드 리뷰에서 제 태도를 돌아보게 되었고, “경청–정리–확장”의 흐름을 습관화해야겠다고 다짐했습니다.

건강한 갈등의 가치

다름은 불편할 수 있지만, 오히려 신뢰와 성장의 기회가 될 수 있다는 메시지가 공감됐습니다. 갈등을 “옳고 그름”의 싸움이 아니라 “문제 명세를 다듬는 과정”으로 바라보면, 팀워크가 단단해진다는 점을 배웠습니다.

실무 인터뷰와 조직 사례

사내 DevRel을 운영하며 겪은 변화, 내부 개발 문화의 의사소통 구조 같은 구체적 경험이 담겨 있어 생생했습니다. 특히 개인 브랜딩과 회사 PR 방향성을 정렬시키면 서로에게 가속도가 붙는다는 점이 설득력 있었어요.

How 중심의 구성

단순히 “~해야 한다”는 조언이 아니라, 회의 발언, 글쓰기, 발표 준비, 멘토링을 작은 루틴으로 경험이 없고 막막한 개인도 어떻게 쪼개어 실행할 수 있을지에 대해 안내한 점이 돋보였습니다. 실질적으로 행동에 옮길 수 있도록 실마리르 제공해주었어요!


 

4. 덕분에 무엇을 배웠는가

1. 대화의 태도 리팩터링

회의와 코드 리뷰에서 고래형 대화를 실천하려고 노력하고 있습니다! 동료의 말을 끝까지 경청하고 요약·재진술한 뒤 의견을 얹는 방식을 반복 훈련하고 있죠. 이를 통해 단순히 의견을 교환하는 차원을 넘어 대화 자체가 협업의 촉매제가 될 수 있음을 체감하고 있습니다.


 

2. 갈등을 다루는 프레임

합의를 이루는 것보다 이해의 진전을 목표로 두는 태도를 배웠습니다. 불편한 다름을 회피하기보다 성장의 계기로 삼을 수 있도록, 갈등 상황을 문제 명세를 개선하는 기회로 바라보는 관점이 생겼습니다. 이 덕분에 토론과 코드 리뷰가 더 생산적인 장으로 바뀌었습니다.


 

3. 사내 개발 문화를 어떻게 만들어갈 수 있을지

책을 통해 좋은 문화는 위에서 내려오는 것이 아니라, 각 개인이 실천하는 작은 행동으로 시작된다는 점을 배웠습니다.

멘토링으로 신입을 돕거나, 팀 전체의 시간을 줄여주는 자동화 도구를 만들어 공유하거나, 사내 스터디·기술 세션에 자발적으로 참여하는 등의 구체적인 가이드를 얻었어요.

이 작은 실천들이 쌓여 동료들에게 긍정적인 파급 효과를 일으키고, 결국 건강한 개발 문화를 형성할 수 있다는 확신을 갖게 되었습니다.


 

4. 회사와의 정렬

퍼스널 브랜딩을 하고 싶은 방향과 회사의 테크 브랜딩 방향과 맞추면, 개인과 조직 모두 시너지를 얻을 수 있다는 점을 배웠습니다!

개인의 브랜딩이 곧 조직의 가치와 연결될 수 있고, 반대로 조직이 제공하는 기회와 리소스가 개인의 성장을 가속할 수 있다는 선순환 구조를 이해하게 되었습니다.


 

5. 좋았던 점

1. 자기 효능감과 자기 결정력을 일깨우는 흐름

한 개발자로서 자기 효능감자기 결정력을 찾는 것에서 시작해, 대외적으로 자신을 알리는 구체적 방법까지 이어진 전 흐름이 한 권에 담겼습니다.

자기 효능감

  • 작은 성공 경험을 쌓기
  • 롤모델을 관찰하고 따라 하기
  • 긍정적인 피드백 주기

자기 결정력

내가 내린 선택의 이유를 스스로 명확히 이해하고, 그 결과에 책임질 수 있는 능력

자기 결정력을 키울 수 있는 방법

  • 자신만의 기준 세우기
  • 작은 결정부터 연습하기
  • 결정의 이유를 기록하기
  • 피드백 받아들이기
  • 조언을 참고하되 결정의 중심은 나에게 두기


 

2. 실행 가능한 행동 단서 제시

추상적인 조언이 아니라, 회의·문서화·발표·네트워킹 등 개발자가 일상에서 바로 적용할 수 있는 행동 단서들을 구체적으로 제시해주어 실천 가능성이 높았습니다.

덕분에 책을 읽고 난 뒤 실제 업무와 커뮤니케이션 상황에서 어떤 행동을 취해야 하는지 선명하게 그릴 수 있었습니다.


 

3. 사내 개발 문화를 만들어가기 위한 구체적 가이드

책이 특히 좋았던 점은 좋은 개발 문화는 위에서 주어지는 것이 아니라, 개인의 작은 실천에서 출발한다는 관점을 구체적으로 제시했다는 것입니다. 단순히 “건강한 문화가 필요하다”는 원론이 아니라, 어떤 행동을 하면 조직 문화에 기여할 수 있는지 실행 가능한 가이드라인을 담고 있었어요.

(1) 멘토링으로 동료의 성장을 돕기

신입이나 후배 개발자가 조직에 적응하도록 작은 멘토 역할을 맡아주는 것. 커피챗이나 코드 리뷰를 통해 자연스럽게 지식을 나누는 것만으로도 큰 힘이 됩니다.

(2) 업무 효율을 높이는 자동화 도구 만들기

회의 알림, 반복적인 메시지 자동화 등 사소하지만 팀 전체의 시간을 절약할 수 있는 작은 자동화 도구를 만들어 공유하는 것도 좋은 문화의 시작점이 될 수 있습니다.

(3) 사내 문화 개선 활동에 참여하기

사내 스터디, 기술 공유 세션, 동호회 같은 활동에 자발적으로 참여하고, 필요하다면 직접 기획하는 것도 문화 형성에 기여하는 방법입니다.

(4) 사내·외 발표 기회 잡기

작은 규모의 사내 테크톡부터 시작해 외부 컨퍼런스에 발표자로 나서는 경험까지, 지식을 공유하는 자리에 나서는 행동이 곧 개발 문화의 토양을 풍성하게 만듭니다.

(5) 문서화와 지식 공유 습관

알고 있는 특정 프로세스나 도구 사용법을 문서화하여 남기면, 개인의 성취를 넘어 팀 전체의 자산이 됩니다.

책은 이를 “작은 선한 영향력”이라고 표현하며, 각자의 위치에서 이런 행동을 실천하는 것만으로도 동료들에게 긍정적인 파급 효과가 일어난다는 점을 강조합니다. 결국 “좋은 문화는 거창한 혁신에서 오는 게 아니라, 작은 기여와 반복적인 실천에서 온다”는 메시지가 강하게 다가왔습니다.


 

6. 아쉬운 점

현재 실제로 많은 분들이 익히 알고 있는 개발자분들의 커리어 스토리(주제 선택, 실패 경험, 전환점)가 더 담겨 있었다면 벤치마킹하기에 더 풍부했을 것 같습니다.

주니어, 미드, 시니어 레벨별 로드맵이 있었다면 독자 스스로 단계에 맞는 전략을 선택하기 더 수월했을 것 같습니다.


 

7. 이 책을 읽은 덕분에 기대되는 변화

1. 콘텐츠 파이프라인 고도화

짧은 글–사내 공유–외부 발표–후속 글로 이어지는 순환 구조를 실험해볼 계획입니다. 다행히 저는 매일 링크드인에 짧은 글을 작성하여 업로드하는 것은 익숙한 중이에요. 2번의 도전을 통해 외부 발표까지 이어지는 경험도 두 차례 있었죠.

이 경험이 단발성으로 그치지 않도록 순환되는 파이프라인을 구축해야겠어요!


 

2. 커뮤니케이션 습관 전환

회의와 코드 리뷰에서 “경청–정리–확장”의 기본 순서를 습관화하고, 갈등을 성장의 계기로 삼으려 해요.

가족부터 친구, 연인만 해도 완전히 똑같은 사람은 존재할 수 없다는 것을 알게됩니다. 하지만 그렇다고 해서 불편한 사이이지 않다는 것도 알죠. 각자가 다르다는 점 덕분에 오히려 서로로부터 본받고 싶은 점을 알게 모르게 흡수하게 됩니다. 그러면서 관계는 더 깊어지죠.

동료도 마찬가지입니다. 개개인이 선택한 관계는 아니지만 같은 목표를 달성하기 위한다는 공통점이 있으며, 그것을 더 잘하고싶다는 니즈는 공유가 가능합니다. 그렇다면 서로가 달라 발생하는 의견 차이는 오히려 서로를 이해하고, 나에게는 없는 것을 배워 함께 더 성장할 수 있는 기회를 제공한다고 발상을 전환시킬 수 있어요. 이 책이 그 막연한 느낌을 문장화하여 새길 수 있게 해주었습니다.


 

3. 회사와 나의 목표 얼라인

개인 브랜딩과 회사 테크 PR을 맞추어, 개인 영향력과 조직 임팩트를 함께 확장하는 선순환을 만들어보려해요. 현재 재직 중인 회사는 사실 PR에 비중을 두고 있지는 않습니다.

하지만 이 책을 읽고, 회사 측에서는 더 멋진 인재들과 함께 하기 위한 니즈, 그리고 저 개인의 브랜딩을 얼라인 시켜 양측 모두 도움을 얻을 수 있도록 방향 설정을 할 수 있다는 힌트를 얻었습니다!


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
실무에서 SQL을 다루는 기술 - PostgreSQL부터 MySQL, SQLite까지
마크 사이먼 지음, 조은옥 옮김 / 한빛미디어 / 2025년 6월
평점 :
장바구니담기


한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.


1. 이 책을 선택한 동기

프론트엔드 개발자로써 DB를 직접 다룰 일이 없어 SQL을 잘 몰랐었어요. 그럼에도 백엔드를 잘알고 싶은 욕구도 있었고, 특히 사이드 프로젝트를 할 때 supabase를 주로 사용하기 때문에 SQL를 익히고 싶었죠. SQL을 몰라도 테이블 에디터를 이용해서 만들 수도 있었지만, 결국은 SQL로 구성되기 때문에 더 효율적으로 테이블을 관리하기 위해서는 역시 SQL을 알아야겠다는 생각이 들었어요.

cursor를 쓸 때 SQL로 알려주기도 하고, supabase mcp를 사용할 때도 역시 SQL로 작성합니다. 답변에 대해서 옳고 그름을 판단하기 위해서는 SQL 문법에 익숙해질 필요가 있었고, 질문을 다시 할 때도 역시 SQL을 잘알아야 필요한 답변을 얻어낼 수 있겠다는 생각도 들었습니다. 때문에 이번 기회에 제대로 SQL을 익히기 위해 '실무에서 SQL을 다루는 기술'을 읽기 시작했어요.


2. 어떤 책인지

'실무에서 SQL을 다루는 기술'은 조재연 저자가 쓴 실무 중심의 SQL 가이드북입니다. 이 책은 단순한 SQL 입문서가 아니라, 실제 업무에서 마주치는 복잡한 데이터 문제들을 SQL로 해결하는 방법을 체계적으로 다루고 있어요. SELECT, INSERT, UPDATE, DELETE 같은 기본 문법은 이미 안다고 가정하고, 그 위에서 실무에서 진짜 필요한 고급 SQL 기법들을 단계별로 설명합니다.


책의 구성을 보면 윈도우 함수, 서브쿼리, 조인 최적화, 집계 함수 활용법 같은 고급 문법부터 시작해서, 실제 비즈니스 시나리오에서 자주 등장하는 데이터 분석 패턴들(순위 매기기, 이동평균, 전년 동기 대비 등)을 다뤄요. 마지막에는 쿼리 성능 최적화와 실행 계획 분석 같은 실무에서 꼭 필요한 내용까지 포함되어 있습니다.


특히 PostgreSQL, MySQL, SQL Server, Oracle 등 주요 DBMS별 문법 차이와 특화 기능들을 함께 설명해주는 점이 인상적이었어요. supabase(PostgreSQL)를 사용하는 저에게는 PostgreSQL 관련 내용을 바로 실습해볼 수 있어서 더욱 유용했습니다.


3. 특히 인상적이었던 점

가장 인상깊었던 건 윈도우 함수를 설명하는 방식이었어요. ROW_NUMBER(), RANK(), LAG(), LEAD() 같은 함수들을 단순히 문법으로만 설명하는 게 아니라, "월별 매출 순위를 구해보자", "전월 대비 증감율을 계산해보자" 같은 실제 비즈니스 상황과 함께 제시해주니까 '아, 이럴 때 이걸 쓰는구나!'라는 게 바로 이해되었어요.


또 하나 인상적이었던 건 복잡한 조인 쿼리를 단계별로 분해해서 설명하는 방식이었습니다. 처음에는 간단한 INNER JOIN부터 시작해서, 점점 복잡한 다중 테이블 조인과 서브쿼리가 결합된 형태까지 차근차근 빌드업해가는 과정이 정말 체계적이었어요.


그리고 CTE(Common Table Expression, WITH 절)를 활용한 복잡한 쿼리 구조화 방법도 눈에 띄었습니다. 기존에는 하나의 긴 쿼리로 모든 걸 처리하려고 했는데, CTE를 사용해서 단계별로 데이터를 가공하고 최종적으로 결합하는 방식을 보니까 훨씬 가독성 있고 유지보수하기 쉬운 코드를 작성할 수 있겠다는 생각이 들었어요.

4. 덕분에 무엇을 배웠는가

첫째, supabase에서 복잡한 쿼리를 직접 작성할 수 있게 됐습니다. 이전에는 테이블 에디터로만 데이터를 다뤘는데, 이제는 SQL 에디터에서 직접 복잡한 집계 쿼리나 조인 쿼리를 작성할 수 있게 되었어요. 특히 사용자 행동 데이터를 분석할 때 윈도우 함수를 활용해서 세션별 첫 방문 시간, 마지막 액션 등을 한 번의 쿼리로 구할 수 있겠다는 생각이 들었어요.


둘째, cursor나 AI 도구들이 생성해주는 SQL 쿼리를 이해하고 수정할 수 있게 되었어요. 이전에는 AI가 작성해준 쿼리를 그대로 복사해서 사용했는데, 이제는 쿼리의 의도를 파악하고 필요에 따라 수정하거나 최적화할 수 있을 것 같아요. 특히 WHERE 절의 조건을 바꾸거나 ORDER BY를 추가하는 정도는 자신있게 할 수 있게 되었습니다.


셋째, 데이터베이스 설계에 대한 이해도가 높아졌습니다. SQL을 제대로 배우다 보니 정규화, 인덱스, 외래키 같은 개념들도 자연스럽게 이해하게 되었어요. 테이블을 설계할 때 단순히 필드만 추가하는 게 아니라, 쿼리 성능을 고려해서 인덱스를 설정하거나 적절한 데이터 타입을 선택할 수 있게 되었죠.


5. 좋았던 점

1. 실무 시나리오 중심의 설명

각 개념을 설명할 때 추상적인 문법 설명에 그치지 않고, 실제 업무에서 마주칠 수 있는 구체적인 상황을 제시해준 점이 정말 좋았어요. "이달의 상위 10% 고객을 찾아라", "전년 동월 대비 매출 증감율을 구해라" 같은 현실적인 요구사항을 SQL로 어떻게 해결하는지 보여줘서 학습 동기가 계속 유지됐습니다.

2. 점진적 학습 구조

간단한 개념부터 시작해서 점점 복잡한 내용으로 넘어가는 구성이 정말 체계적이었어요. 예를 들어 집계 함수를 설명할 때도 단순한 COUNT, SUM부터 시작해서 GROUP BY, HAVING, 그리고 윈도우 함수와의 조합까지 자연스럽게 연결되는 흐름이 좋았습니다.

3. DBMS별 문법 차이 설명

PostgreSQL, MySQL, SQL Server, Oracle 등 주요 DBMS별로 문법 차이를 함께 설명해준 점도 큰 장점이었어요. 현재 저는 사이드 프로젝트를 위해 supabase(PostgreSQL)를 주로 사용하는데, PostgreSQL 특화 기능들도 별도로 설명되어 있어서 바로 실습해볼 수 있었어요.

4. 성능 관점에서의 접근

단순히 결과를 얻는 방법만 알려주는 게 아니라, 같은 결과를 얻는 여러 가지 방법 중에서 어떤 게 더 효율적인지, 실행 계획은 어떻게 다른지까지 설명해줘서 실무에서 바로 적용할 수 있는 지식을 얻을 수 있었습니다. 특히 인덱스 활용 전략이나 조인 순서 최적화 같은 내용이 유용했어요.


6. 아쉬운 점

1. 기초 문법에 대한 설명 부족

책 제목에 '실무에서'라고 되어 있어서 어느 정도 예상했지만, 정말 기본적인 SQL 문법은 안다고 가정하고 시작합니다. SELECT, FROM, WHERE 같은 기본 문법부터 차근차근 배우고 싶은 완전 초보자에게는 진입장벽이 있을 수 있습니다. 처음 몇 장은 따라가기가 좀 버거웠습니다.

2. 실습 환경 구축 가이드 부족

각 DBMS별 설치나 실습 환경 구축에 대한 가이드가 부족했어요. Github 저장소를 예제로 제공해주긴 했지만, SQL에 익숙하지 않다면 어떻게 구축을 해서 어떻게 테이블을 생성하고 DB를 만들어갈 수 있는지 막막할 수 있습니다.

3. 최신 SQL 표준 반영 부족

책에서 다루는 내용은 대부분 안정적이고 검증된 기법들이지만, 최근에 추가된 SQL 표준이나 각 DBMS의 최신 기능들에 대한 언급은 상대적으로 적었어요. 특히 JSON 데이터 처리나 새로운 윈도우 함수들 같은 최신 기능들도 다뤘다면 더 완성도 높은 책이 되었을 것 같습니다.


7. 이 책을 읽은 덕분에 기대되는 변화

이 책을 읽고 나서 데이터를 바라보는 관점이 많이 달라졌습니다. 앞으로는 사이드 프로젝트에서 supabase를 훨씬 활용도 높게 사용할 수 있을 것 같습니다. 복잡한 대시보드나 통계 페이지를 만들 때 프론트엔드에서 모든 계산을 처리하는 게 아니라, SQL로 필요한 데이터를 미리 집계해서 받아올 수 있게 될 것 같았어요.


또한 백엔드 개발자와의 협업에서도 더 구체적이고 정확한 소통이 가능해질 것 같습니다. "~한 데이터가 필요해요"라고 막연하게 요청하는 게 아니라, "~ 조건으로 조인해서 이런 집계 결과를 주세요"라고 구체적으로 요청할 수 있게 되었어요. 심지어 간단한 쿼리는 직접 작성해서 제안할 수도 있을 것 같아요.


특히 실질적으로 활용할 수 있는 것은 cursor나 AI를 사용할 때 데이터 설계 관련 질의를 할 때 더 효과적으로 활용할 수 있게 된 점입니다. 이제는 AI가 생성한 SQL 쿼리를 이해하고 검증할 수 있으니까, 더 정확한 질문을 하고 더 좋은 결과를 얻을 수 있을 것이라 생각해요. SQL을 모를 때는 AI가 작성해준 쿼리가 맞는지 틀렸는지도 몰랐는데, 이제는 어느 정도 판단할 수 있게 되었으니까요!


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
러닝 랭체인 - 랭체인과 랭그래프로 구현하는 RAG, 에이전트, 인지 아키텍처 | MCP 개념부터 서버 구축 및 활용법 특별 수록
메이오 오신.누노 캄포스 지음, 강민혁 옮김 / 한빛미디어 / 2025년 5월
평점 :
장바구니담기


한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.


1. 이 책을 선택한 동기


일전에 GPT API를 활용한 인공지능 앱 개발을 읽어봤지만, `OpenAI API`에만 의존해야 한다는 제약과 실제 구현하기에는 깊이 있는 지식이 부족하다는 걸 느꼈어요.


그러던 중 랭체인이라는 프레임워크를 알게 되었습니다. LLM을 단순히 API로 호출하는 차원을 넘어서, 복잡한 워크플로우를 구성하고 다양한 LLM 모델을 조합해서 사용할 수 있다는 점이 매력적이었어요. 


더욱이 실제 운영 환경에서 돌아가는 LLM 애플리케이션을 만들려면 단순한 질의응답 기능을 넘어서, `RAG`(검색 증강 생성)나 `에이전트` 같은 고급 개념들을 이해해야 한다는 걸 깨달았어요. 이론만 아는 게 아니라 실제로 구현할 수 있는 실력을 기르고 싶어서 러닝 랭체인을 읽기 시작했습니다.



2. 어떤 책인지


러닝 랭체인은 단순한 랭체인 매뉴얼이 아니었어요. LLM을 활용한 실용적인 애플리케이션 개발의 전체 여정을 다루는 종합 가이드였습니다. 책은 크게 세 부분으로 나뉩니다.


첫 번째는 LLM과 랭체인의 기초 개념 설명입니다. AI나 머신러닝 배경지식이 없어도 이해할 수 있도록 트랜스포머 아키텍처부터 프롬프트 엔지니어링까지 친절하게 설명해줘요. 


두 번째는 랭체인의 핵심 기능들을 하나씩 파헤치는 부분입니다. 체인, 메모리, 에이전트, RAG 시스템 구축 방법을 실습 위주로 다룹니다. 


마지막은 랭그래프를 활용한 고급 워크플로우 설계인데, 이 부분이 특히 인상적이었어요.


가장 큰 특징은 `Python`과 `JavaScript` 두 언어로 모든 예제를 제공한다는 점입니다. JavaScript가 주력인 저에게는 특히 좋았던 점입니다. 또한 단순한 코드 나열이 아니라, 복잡한 설계적인 부분은 시각적 다이어그램으로 설명해서 복잡한 AI 개념들을 직관적으로 이해할 수 있게 도와줍니다.



3. 특히 인상적이었던 점


가장 인상깊었던 건 랭체인의 `체인` 개념을 설명하는 방식이었어요. 처음에는 단순히 여러 LLM 호출을 연결하는 정도로만 이해했는데, 책을 읽으면서 이게 얼마나 강력한 패러다임인지 깨달았습니다.


예를 들어, 사용자 질문을 받아서 → 관련 문서를 검색하고 → 검색 결과를 요약한 뒤 → 최종 답변을 생성하는 과정을 하나의 체인으로 구성할 수 있어요. 이 과정에서 각 단계마다 다른 프롬프트와 모델을 사용할 수 있고, 중간 결과를 메모리에 저장해서 다음 단계에 활용할 수도 있습니다.


이걸 보면서 React의 `컴포넌트 합성` 개념과 매우 유사하다는 걸 느꼈어요. 작은 기능들을 조합해서 복잡한 애플리케이션을 만드는 방식에서 닮은 점이 느껴졌습니다. 특히 `LCEL`(LangChain Expression Language) 문법을 보면서는 함수형 프로그래밍의 파이프라인 연산자와 비슷하다는 생각이 들었습니다.


또 하나 인상적이었던 건 **RAG 시스템 구축 과정을 단계별로 상세히 설명**한 부분이에요. `벡터 데이터베이스`, `임베딩`, `문서 분할`, `유사도 검색` 같은 개념들이 처음에는 추상적으로 느껴졌는데, 실제 구현 예제를 따라하면서 '아, 이렇게 동작하는구나!'라는 순간이 여러 번 있었어요.



4. 덕분에 무엇을 배웠는가


첫째, 프롬프트 엔지니어링의 실제 적용법이에요. 단순히 "좋은 프롬프트를 작성하라"는 추상적인 조언이 아니라, Few-shot 프롬프트, Chain-of-Thought, 역할 기반 프롬프트 등 구체적인 기법들을 실습할 수 있었습니다.


둘째, RAG 시스템 구축을 통해 벡터 데이터베이스의 작동 원리를 이해했어요. 문서를 어떻게 임베딩으로 변환하고, 유사도 검색을 통해 관련 정보를 찾아내는지, 그리고 이를 LLM의 컨텍스트로 활용하는 전체 파이프라인을 손으로 구현해볼 수 있었습니다.


셋째, 랭그래프를 통한 상태 기반 대화 시스템 구축법을 익혔어요. 단순한 일회성 질답이 아니라, 이전 대화 내용을 기억하고 복잡한 워크플로우를 처리할 수 있는 에이전트를 만드는 방법을 배웠습니다.


마지막으로, LLM 애플리케이션의 성능 최적화와 비용 관리에 대한 실용적인 지식도 얻었어요. `토큰 사용량 최적화`, `캐싱 전략`, `스트리밍 응답` 등 실제 운영 환경에서 고려해야 할 요소들을 알 수 있었습니다.



5. 좋았던 점


5.1 Python과 JavaScript 예제 동시 제공의 장점


모든 예제를 `Python`과 `JavaScript` 두 버전으로 제공한다는 점이에요. JavaScript가 주력 언어인 저에게는 정말 큰 도움이 되었습니다. 기본적으로는 JS 코드를 따라했지만, Python 코드도 함께 보면서 두 언어 간의 문법적 차이점을 자연스럽게 학습할 수 있었어요.


특히 비동기 처리 방식의 차이가 흥미로웠습니다. JavaScript의 `async/await`와 Python의 `asyncio`가 어떻게 다르게 구현되는지, `Promise`와 `Coroutine`의 차이점 등을 코드로 직접 비교해볼 수 있었거든요. 한 번에 두 언어의 지식을 얻는 효과가 있었습니다.


5.2 체계적인 기초 지식 제공


0장에서 LLM 기초 지식을 충실히 다룬 점도 좋았어요. `트랜스포머 아키텍처`, `어텐션 메커니즘`, `토큰화`, `프롬프트 엔지니어링`, `파인튜닝` 등 AI 배경지식이 전혀 없어도 이후 랭체인 학습에 필요한 필수 개념들을 빠르게 습득할 수 있도록 구성되어 있었습니다.


특히 각 개념을 설명할 때 단순한 정의가 아니라, 실제 사용 사례와 함께 설명해주는 점이 인상적이었어요. 예를 들어 `Few-shot` 프롬프트를 설명할 때도 "몇 개의 예시를 제공하는 것"이라는 추상적 설명에 그치지 않고, 실제로 어떤 상황에서 효과적인지, 어떻게 예시를 구성해야 하는지까지 구체적으로 알려줬습니다.


5.3 시각적 이해를 돕는 다이어그램


복잡한 AI 개념들을 다이어그램으로 시각화해서 설명한 점도 큰 장점이었어요. 특히 `RAG` 파이프라인을 설명할 때 문서 입력부터 최종 응답 생성까지의 전체 과정을 플로우차트로 보여준 건 정말 도움이 되었습니다. `벡터 데이터베이스`의 작동 원리도 단순히 "유사도 검색을 한다"는 설명보다는, 실제로 문서가 어떻게 벡터로 변환되고, 쿼리 벡터와 어떻게 비교되는지를 그림으로 보여줘서 직관적으로 이해할 수 있었어요.



6. 아쉬운 점


6.1 LLM 애플리케이션 a to z 개발 내용 부재


가장 아쉬웠던 점은 처음부터 끝까지 하나의 완성된 **LLM 애플리케이션을 개발하는 내용이 없었다는 점입니다.** 각 장마다 해당 개념을 설명하는 예제는 충실하지만, 실제로 배포 가능한 수준의 애플리케이션을 단계별로 구축해보는 경험은 제공되지 않았습니다.


예를 들어, "문서 기반 Q&A 시스템 만들기" 같은 프로젝트를 통해 요구사항 분석부터 시작해서 데이터 준비, RAG 시스템 구축, UI 개발, 배포, 모니터링까지 전체 개발 사이클을 경험해볼 수 있었다면 더 좋았을 것 같아요.


6.2 최신 모델 반영 할 수 없는 한계


책이 출간된 시점(2025년 5월 14일)이 얼마 되지 않았음에도 벌써 각 LLM 모델의 업그레이드 버전이 많이 나와버렸죠. 책의 예제에서는 `gpt-3.5-turbo-instruct`를 사용하지만, 예를 들어 GPT-4o, Claude 4 같은 새로운 모델들이나, 최신 랭체인 버전의 변경사항들이 반영되지 않은 점은 어쩔 수 없는 한계인 것 같습니다. 


다만 어떤 모델을 선택하느냐는 “랭체인을 통해 LLM을 구현한다”는 점을 익히는 과정에서는 크게 영향을 끼치지는 않기 때문에 학습에 지장이 생기지는 않습니다.



7. 이 책을 읽은 덕분에 기대되는 변화


1. 당장 시도해보고 싶은 프로젝트들이 생겼어요. 예를 들어, 회사에서 사용할 수 있는 내부 문서 검색 시스템입니다. 개발팀에서 누적된 기술 문서, 회의록, 가이드 등을 RAG 시스템으로 구축해서 자연어로 검색할 수 있게 만들어보고 싶어요.

2. 랭체인을 통해 배운 개념들이 다른 개발 영역에도 도움이 될 것 같아요. 특히 파이프라인 설계, 상태 관리, 비동기 처리 등의 개념은 일반적인 웹 애플리케이션 개발에도 적용할 수 있을 것 같습니다.

3. 또한 AI 기술의 발전 속도를 고려하면, 지금 배운 기초가 앞으로 더 고급 기술을 학습할 때 탄탄한 토대가 될 거라고 생각해요. 랭체인 생태계 자체도 계속 발전하고 있으니, 이 책으로 기초를 다진 상태에서 새로운 기능들을 추가로 학습해나갈 수 있을 것 같습니다.


앞으로는 AI 도구를 단순히 사용하는 차원을 넘어서, 실제 비즈니스 문제를 해결하는 맞춤형 솔루션을 만들 수 있을 것 같아요.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
멀티패러다임 프로그래밍 - 객체지향, 함수형, 명령형의 통합적 사고로 구현하는 소프트웨어 설계와 구현
유인동 지음 / 한빛미디어 / 2025년 4월
평점 :
장바구니담기


 "한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다."


이 책을 선택한 동기
개발 커뮤니티에서 '객체지향 vs 함수형' 주제를 의논하는 글을 많이봐왔습니다. 객체지향은 Flutter 개발을 하게되면서 차츰 이해할 수 있었지만, 함수형은 여전히 잘 모르는 영역이었어요.


그러던 중 멀티패러다임 프로그래밍이라는 책 제목을 보게 되었어요. 밸런스 게임처럼 '이것 아니면 저것'의 이분법적 사고에서 벗어나, 상황에 따라 필요한 패러다임을 조합해서 사용할 수 있다는 접근법이 신선했습니다. 함수형, 객체지향, 절차적 프로그래밍을 한 번에 조화롭게 이해할 수 있다는 기대감에 이 책을 선택할 수밖에 없었어요.

 

어떤 책인지
이 책은 제목 그대로 '멀티패러다임'에 대한 종합적인 가이드입니다. 총 7장으로 구성되어 있으며, 각 패러다임을 단순히 나열하는 것이 아니라 실제로 어떻게 조합해서 사용하는지에 중점을 두고 있어요.

 

1-3장에서는 이론적 기반을 다집니다. 객체지향의 반복자 패턴과 함수형의 일급 함수가 어떻게 만나는지, 자바스크립트의 이터레이션 프로토콜을 통해 실제 언어에서 어떻게 구현되는지 보여줍니다. 특히 LISP와 하스켈 같은 순수 함수형 언어의 개념들을 자바스크립트로 어떻게 가져올 수 있는지 설명해요.

 

4-5장에서는 실전으로 들어갑니다. 비동기 프로그래밍과 실제 데이터 처리 사례들을 다루면서, 함수형 프로그래밍이 단순한 이론이 아니라 실무에서 어떻게 활용되는지 보여줍니다. 특히 백엔드 비동기 처리나 커머스 데이터 다루기 같은 현실적인 예제들이 인상적이었어요.

 

6-7장은 종합편입니다. HTML 템플릿 엔진을 만들면서 객체지향과 함수형을 실제로 조합하고, Todo 앱과 Setting 앱을 통해 프런트엔드 개발에서의 멀티패러다임 적용법을 보여줍니다.

 

저자 유인동님의 접근 방식이 특히 좋았던 것은, 각 패러다임의 장단점을 이론적으로만 설명하는 게 아니라 '언제, 왜, 어떻게' 조합해야 하는지 구체적인 코드와 함께 보여준다는 점이었어요.

 

특히 인상적이었던 점
첫 챕터부터 머리를 한 대 맞은 기분이었습니다. '이터러블, 이터레이터, 제네레이터'를 통해 타입스크립트를 다양한 프로그래밍 방식으로 작성할 수 있다는 구체적인 사례를 보여주는데, 그 순간 제가 그동안 얼마나 기본기를 놓치고 있었는지 깨달았어요.

 

부끄럽지만 그렇게 숱하게 사용하고 있던 forEach, map, filter에 대해 저는 아무것도 몰랐다는 것을 알게되어죠…! 이들이 이터러블 객체를 다루는 방식이라는 것도 제대로 이해하지 못했고, 제네레이터는 책에서나 슬쩍 봤지 실제 구현에 활용한다는 생각을 해본 적이 없었어요. 고차함수, 일급함수도 마찬가지였습니다.


또한 타입스크립트 활용법에서 인상적이었습니다. 저는 그동안  타입스크립트를 아주 기초적인 부분만 사용하고 있었고, 제네릭도 때때로 쓰긴 했지만 정말 얕게만 활용하고 있었습니다. 아이러니하게도 멀티패러다임 프로그래밍을 알고 싶어 펼치게 된 이 책에서 타입스크립트를 더 잘 알게 되는 계기가 되었어요.

 

특히 타입스크립트의 제네릭과 클래스를 조합하는 방법, map 등의 고차함수를 체이닝으로 연결해서 훨씬 간결하고 자연스러운 흐름으로 읽을 수 있게 만드는 기법들이 정말 놀라웠습니다. 이런 기본기를 정확히 이해하면 이렇게까지 활용할 수 있다는 점이 충격적이었어요.

 

덕분에 무엇을 배웠는가
가장 큰 수확은 제가 그동안 절차형으로만 작성해왔던 코드를 완전히 다른 관점에서 바라보게 되었다는 점입니다.

 

1. 이터레이터와 제네레이터를 실제로 활용할 수 있겠다는 확신이 생겼어요. 책에서 보여준 FxIterable 클래스처럼 제네릭과 이터러블을 조합해서 체이닝 가능한 데이터 처리 파이프라인을 만드는 방법이 정말 인상적이었습니다. 단순히 배열에 forEach, map, filter를 쓰는 게 아니라, 지연 평가를 통해 성능까지 최적화할 수 있다는 점이 놀라웠어요.

 

2. 타입스크립트의 제네릭 활용 방법을 제대로 익혔습니다. 이전에는 단순히 타입 안전성을 위해서만 사용했는데, 이제는 함수형 프로그래밍과 객체지향을 조합하는 핵심 도구라는 것을 알게 되었어요. `FxIterable<A>`처럼 타입 파라미터를 통해 체이닝하면서도 타입 안전성을 보장하는 방식이 정말 우아하더라고요.
 
3. 비즈니스 로직을 멀티패러다임으로 작성해볼 용기가 생겼습니다. 이토록 기발한 아이디어로 만들어진 효율적인 프로그래밍 방식이지만, 팀원과 함께 싱크를 맞춰야 실무에서 적용할 수 있을 것 같아요. 독단으로 갑자기 적용하기 시작하면 팀 컨벤션이 무너지고, 코드를 보는 팀원들이 받지 않아도 될 스트레스가 늘어나겠죠...! 하지만 같이 공부하면서 적용하면 분명 다 같이 행복해길 것이라 생각해요!

 

좋았던 점
1. 체계적이고 점진적인 학습 구조
각 패러다임을 따로 설명하는 것이 아니라, 어떻게 조합되는지에 중점을 둔 구성이 정말 좋았습니다. 1장에서 이터레이터 패턴과 일급 함수의 만남을 보여주고, 2-3장에서 LISP와 하스켈의 개념을 자바스크립트로 가져오는 과정이 자연스럽게 이어졌어요. 특히 제네레이터로 이터레이터를 만드는 과정에서 명령형과 함수형이 어떻게 연결되는지 보여준 부분이 인상적이었습니다.


2. 실무 중심의 실전 예제와 적용법
4-5장의 비동기 프로그래밍과 실전 데이터 처리 사례들이 특히 도움이 되었어요. 단순한 이론 설명이 아니라 '커머스 데이터 다루기', '결제 프로세스 문제', '백엔드 비동기 처리' 같은 현실적인 문제들을 멀티패러다임으로 해결하는 방법을 보여줬습니다. 6-7장의 HTML 템플릿 엔진과 Todo 앱 만들기도 실제로 적용해볼 수 있는 구체적인 사례여서 좋았어요.

 

3. 다양한 언어와의 비교를 통한 개념 이해
하스켈, LISP(클로저), 코틀린, 스위프트 등 다른 언어들의 예제를 통해 멀티패러다임이 단순히 자바스크립트만의 특징이 아니라는 점을 보여준 것이 좋았습니다. 특히 하스켈의 함수 합성 연산자나 클로저의 매크로 시스템을 자바스크립트로 어떻게 가져올 수 있는지 설명한 부분이 인상적이었어요.

 

이를 통해 언어를 넘어 적용 가능한 개념이라는 패러다임의 본질을 이해할 수 있었습니다. 프론트엔드 개발자로서 Flutter(Dart)도 사용하는 입장에서, 다른 언어에서도 이런 접근법을 적용해볼 수 있겠다는 영감을 얻었어요.

 

조금 아쉬웠던 점
초보자에게는 다소 학습 곡선이 가파를 수 있습니다. 사실 저는 예제들을 이해하기에 조금 버거웠어요..! 첫 챕터부터 이터레이터, 제네레이터, 고차함수 개념들이 한꺼번에 나오면서 제 기본기 부족을 절실히 느꼈어요.

하지만 이것이 책의 문제라기보다는, 오히려 제가 기본기가 아직 탄탄하지 않다는 것을 깨닫게 해준 계기가 되었습니다. 어떻게든 읽어내려고 노력하면서 오히려 기본기를 강화할 수 있었어요.

 

다행히 저자님께서 설명하는 문장 자체는 무척 이해하기 쉽게 작성해주셨습니다. 특히 복잡한 예제에는 넘버링을 통해 단계별로 쉬운 문장으로 풀이를 작성해주신 부분이 정말 도움이 되었어요. 결과적으로는 한 단계 레벨업할 수 있는 기회가 되었습니다!

 

이 책을 읽은 덕분에 기대되는 변화
서두에 작성한 것처럼, 객체지향과 함수형 코딩에 대해 아직 깊게 익히지 못했음에도 이미 어느 한쪽을 택해서 개발해야 하는 건가라는 이분법적 사고에 빠져있었습니다. 그런데 이 책을 읽고 유연하게 조합을 하면 된다고 사고를 넓힐 수 있었어요!

 

프레임워크에 사고를 제한하지 않고, 언어 레벨에 대해 포커스를 맞출 수 있게 되었습니다. 특히 다른 언어에서는 이걸 어떻게 구현할 수 있었는지를 보여주는 대목들 덕분이죠. 저의 경우 Flutter를 사용하게 되며 조금씩 그 점을 느꼈는데, 멀티패러다임 프로그래밍을 읽은 덕분에 더 뚜렷하게 그려졌습니다.

 

이제 아주 작은 부분부터 각 프로그래밍 방식의 장점을 활용하는 로직을 만들어보려 해요. 이 내용은 동료들에게도 공유하며 함께 시각을 넓히고자 합니다!


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
처음 처음 | 이전 이전 | 1 | 2 | 3 |다음 다음 | 마지막 마지막