본문으로 건너뛰기

"book" 태그로 연결된 34개 게시물개의 게시물이 있습니다.

모든 태그 보기

· 약 3분
karais89

book image

기간

2주

목적

에세이 형태의 글. 리더라는 단어가 눈에 띄어 구입하게 되었다. 다른 개발자들은 어떻게 살고 있고, 무슨 생각을 가지고 있을지 궁금하던 시기에 마침 관련 서적을 발견하여 바로 구입하게 되었습니다.

리뷰

이 저자의 책은 조금 더 구입해서 읽어볼 예정입니다. <NHN은 이렇게 한다 소프트웨어 품질관리>, <프로그래머로 산다는 것>, <프로그래머 철학을 만나다>를 집필했습니다.

개발자인데 자신의 생각을 잘 정리하여 글을 잘 쓰는 것 같습니다.

글은 총 4부로 나누어져 있습니다.

  • 1부. 지속적인 성장
  • 2부. 리더십
  • 3부. 협업
  • 4부. 소프트웨어 개발

책은 4개의 큰 주제와 1~2장 분량의 짧게 읽을 수 있는 소 주제로 나뉘어져있습니다. 책을 읽다보면 개발자로서 중요하다고 생각했던 내 생각들을 다시 정리 할 수 있었고, 놓쳤던 부분들이 있어서 반성하게 되었던 글들도 있었습니다. 중간 중간 중요한 자료들은 QR 코드 등으로 확인 할 수 있도록 기재해 놓았던 부분들도 좋았습니다.

책 자체는 짧게 짧게 읽어서 길게 보았지만, 한번 나중에 다시 정독해 볼 가치가 있을 것 같은 책이었습니다.

평점 및 한줄평

나 이외에 개발자가 무슨 생각을 하는지 엿 볼 수 있는 책이었다.

4/5

· 약 13분
karais89

📝 10단계 학습법

  • 1~6 단계 반복없이 한 번만 진행
    1. 자신이 모르는 부분이 어딘지 파악 할 수 있을 정도로 기본부터 이해
    2. 어느 범위, 어떤 수준까지 학습할지 정한다.
    3. 학습에 도움이 될 자료를 찾는다
    4. 학습 계획을 세우고 목표를 이루는 데 실제 도움이 될만한 자료를 선별한다.
  • 7~10 단계 모듈별로 반복한다.
    • 배우고, 실습하고 배우고 가르친다 (LDLT: learn, do, learn, teach)

🌳 1단계: 큰 그림을 보라

배울 주제의 큰 그림을 보는 단계이다.

시야를 넓혀서 전체적으로 주제를 바라보라. 무엇을 모르는지, 주제의 범위가 얼마나 넓은지 이해되는가?

디지털 사진을 공부하기로 했다고 가정해보자. 우선 인터넷으로 디지털 사진을 검색하여 블로그 글이나 기사를 훑어보기 시작할 것이다. 아마 몇 시간 정도 조사하면 디지털 사진이라는 주제의 범위가 어느 정도인지, 하위 주제로는 무엇이 있는지 알 수 있을 것이다.

주제애 관한 기본 조사가 완료되면 1단계가 마무리 된다.

전체적인 내용을 훑어 보라. 하지만 시간을 너무 많이 쓰지 않도록 주의 하라.

📊 2단계: 범위를 정하라

집중적으로 학습할 영역을 명확히 정하자

어떤 영역에 집중해서 어느 정도 범위까지 배울지 미리 정해야 한다.

방대한 주제 나누는 예

  • C# 배우기 → 간단한 콘솔 응용 프로그램 제작에 필요한 C# 언어 기초 배우기
  • 사진 배우기 → 인물 사진 촬영용 디지털 사진 기술 배우기
  • 리눅스 배우기 → 우분투 리눅스 설치 및 설정 방법과 기본 기능 배우기

범위를 정하기 어려울 때는 시간부터 제한하자.

🎉 3단계: 성공을 정의하라

좋은 기준은 모호하지 않고 명확하다.

성취하고자 하는 바를 애매모호하게 정의하지 말고 목표를 성취했을 때 이룰 결과 혹은 결과물을 명시하라.


나쁜예

  1. 디지털 카메라로 좋은 사진을 찍겠다.
  2. C# 기초를 배우겠다.
  3. HTML로 웹페이지를 만드는 법을 익히겠다.

좋은예

  1. 내 디지털카메라의 모든 기능이 각각 어디에 있는지, 각 기능을 어떤 상황에서 어떤 이유로 쓰는지 익히겠다.
  2. C#의 주요 기능을 활용해서 간단한 응용 프로그램을 만들겠다.
  3. HTML5를 활용해서 이력서와 포트폴리오를 담은 내 홈페이지를 만들겠다.

성공 기준은 학습을 통해 달성한 목표에 따라 정해야 한다.

모든 단계를 마쳤을 때 목표를 이루었는지 확인할 수 있게 하라.

📥 4단계: 자료를 찾아라

선택한 주제에 대해 최대한 다양한 자료를 찾아보도록 노력하라.

선택한 주제에 관해 가능한 한 많은 자료를 찾아라. 이때 자료의 수준은 크게 신경 쓰지 마라.

  • 자료의 종류
    • 블로그 글
    • 온라인 동영상
    • 해당 주제의 전문가
    • 팟캐스트
    • 소스 코드
    • 프로젝트 사례
    • 온라인 콘텐츠

⌛️ 5단계: 학습 계획을 세워라

자신만의 학습 순서를 찾아라.

선정한 주제로 책의 목차를 잡는다고 생각해보자.

실제로 학습 순서는 책의 목차와 매우 비슷하다. 최종 목표에 도달하기까지 한 단계식 학습해나갈 일련의 모듈을 만든다고 생각하라.

예를들어 책 여러 권을 뒤적이며 목차를 살펴본다. 만약 저자가 다른 책 다섯 권이 똑같은 컨텐츠 모듈을 같은 순서로 정리 해두었다면 이와 비슷한 학습 계획을 세우는 게 좋다.

📤 6단계: 자료를 선별하라

4단계에서 주제와 관련된 자료를 최대한 많이 모았다.

5단계에서는 이를 활용해 학습 계획을 세웠다.

이제 자료 중에 목표 달성에 도움이 될 만한 가치 있는 자료만 고를 시간이다.

설정한 목표를 이루는 데 가장 도움이 되는 자료만 골라라.

자료의 품질도 검증하라. 예를들어 아마존 후기를 참고 해 가장 가격 대비 만족도가 높으리라 예상되는 책 한두 권만 추려내라.

🧑‍💻 7단계: 대충 사용할 수준까지 배워라

알맞은 시점에 실전으로 돌입해야 학습 효과가 가장 크다.

7단계의 목표는 8단계에서 그 기술을 놀듯이 다뤄볼 수 있는 수준의 정보를 얻는 것이다.

프로그래밍 언어에 예를 들면 'Hello, world!' 같은 기본 프로그램 만들기나 개발 환경을 설정하는 단계이다. 만약 사진을 배운다면 다양한 광원과 각 광원이 내는 효과를 실험해보는 정도의 단계에 해당한다.

이 단계에서 너무 깊은 내용까지 파고들지 않도록 주의하라. 실제로 그 기술을 사용하는 데 꼭 필요한 최소한의 내용만 배워라.

🎢 8단계: 놀아라

규칙이 없으므로 마음대로 하면 된다. 원하는 것은 무엇이든 해보라.

책이나 동영상 등의 정보를 답습하는 방법으로는 중요한 부분을 파악하기 어렵다.

디지털 사진에서 빛의 효과를 배우는 사람에 빗대어 보면, 빛을 바꾸어가며 사진이 어떻게 달라지는지 실험해본다거나 야외에서 빛이나 환경을 바꾸면서 사진을 찍어보는 단계이다. 실혐 결과는 실험이 끝나기 전에는 알 수 없다. 이런 방법으로 대상을 직접 탐구하면 다양한 질문이 떠오를 것이다.

내가 추천하는 방법은 모든 자료를 꼼꼼히 보기 전에 이처럼 먼저 대상을 가지고 놀며 실험해 보는 방법이다. 이 방법을 쓰면 대상을 실제로 경험하면서 배운다. 가지고 놀다보면 자연스럽게 궁금증이 생긴다. 어떻게 작동되나? 이렇게 하면 어떤 결과가 나올까? 이 문제는 어떻게 풀어야 할까? 이런 궁금증을 따라가면 어떤 부분이 정말 중요한지 자연히 알게 된다. 자료를 확인한다는 것은 질문에 대한 답을 찾는 과정이나 다름없으므로 큰 보람을 느낄 뿐 아니라 중요한 부분을 잘 인지하고 있기 때문에 찾은 내용을 더 잘 기억하게 된다.

실제 행동하는 단계이다. 결과를 걱정하지 말고 편하게 탐색하라. 새로운 기술이나 프로그래밍 언어를 배우는 중이라면 이 단계에서 작은 프로젝트를 만들어서 어떤 결과가 나오는지 확인해보는 것도 좋다. 답을 찾지 못한 질문은 따로 적어두라. 그에 대한 답은 9단계에서 찾으면 된다.

🧑‍🎓 9단계: 유용한 일을 할 정도까지 배워라

목표는 잃어버린 호기심을 되찾는 것이다.

8단계에서 대상을 가지고 놀면서 스스로 답을 찾지 못한 질문에 대해 찾을 차례이다.

이 단계에서는 모든 자료를 찾아보며 학습 대상을 깊이 있게 이해해야 한다.

디지털 사진의 예를 다시 들어보겠다. 8단계에서 빛 조절 실험을 하며 궁금했던 점에 대한 답을 이제 찾아야 한다. 빛을 비롯해 디지털카메라를 가지고 노는 도중에 떠오른 질문을 모두 자료에서 찾아보라.

독서, 동영상 시청, 다른 이에게 묻기 등의 다양한 방법으로 선별한 자료를 모두 활용하여 8단계에서 궁금했던 질문의 답을 찾아라. 이때가 자료에 깊게 파고들어 가능한 한 많이 배우는 시기이다.

언제든 8단계로 돌아가서 새로운 질문을 찾아보아도 좋다.

하지만 모은 자료를 전부 봐야 한다는 책임감을 갖지 않아도 좋다. 궁금했던 답을 찾는 데 집중하라.

3단계에서 정의한 성공 기준도 기억하라. 학습 내용이 최종 목표와 어떤 관련이 있는지 항상 떠올려라. 배우고 익히는 모든 모듈은 최종 목적지에 이르는 여정의 일부여야 의미가 있다.

🚌 10단계: 가르쳐라

배운 것을 다른사람에게 가르쳐라

  • 가르치는 방법
    • 블로그 글 작성하기
    • 유튜브 동영상이나 튜토리얼 만들기
    • 발표하기
    • 친구나 가족과 대화하기
    • 온라인 포럼에 올라온 질문에 답하기

결론

  • 소프트 스킬의 10단계 학습법
  • 위 내용은 노션 템플릿으로 만들어두고, 새로운 언어를 배울때 사용하려고 정리해둔 내용을 블로그에 기재 하였다.

· 약 8분
karais89

book image

기간

7일

목적

이전에 구매해서 한번 읽었던 책. 최근에 읽은 서적 중에 클린 애자일에서 애자일에 가장 근접한 방법론 중 XP를 소개해서 이전에 구매했던 것들이 생각나서 한번 다시 펼쳐서 읽어봄.

리뷰

익스트림 프로그래밍 (Extreme Programming, XP)의 목표는 뛰어난 소프트웨어 개발이다.

책은 총 2부로 나누어져 있다. 1부에서는 XP에 대해 설명하고, 2부에서는 XP의 철학을 다룬다.

책 자체는 개발 방법론이고, XP의 개념에 충실한 책인 것 같다. 실무에 XP를 어떻게 적용하고 사용할 수 있는지에 대한 부분은 다루지 않는다. 완전한 개념에 대한 부분을 설명하는 책이라, 조금 지루한 부분이 없지 않아 있고, 책 자체도 두꺼운 편으로 보인다. 예전에 읽었을 때. 약간 실망했던 책인데, 다시 읽어도 그 느낌은 지울 수 없다.

사실 켄트 벡은 TDD 및 XP로 너무 유명한 분이긴 하다. XP에서도 TDD를 굉장히 강조하기 때문에. TDD에 대해서는 다시 한번 읽어보고 실제 프로젝트에 적용 가능 한지 테스트를 해보긴 해봐야 될 것 같다. 사실 개발 방법론들은 처음 접해보면 너무 좋다 라는 생각이 들긴 하지만, 실제 적용해 봤을 때 적용하기 힘든 부분들이 분명히 존재하고, 어느 정도는 프로젝트에 맞게 그리고 상황에 맞게 적용을 해야 되는 부분들이 존재 하는 것 같다. 만약 XP를 적용한다고 해도 모든 실천 방법들을 적용하는게 아닌 상황에 맞는 몇가지 방법만 적용해도 충분히 프로젝트가 잘 굴려갈 수 있다고 생각한다.

XP의 5가지 가치: 의사소통, 단순성, 피드백, 용기, 존중

XP의 13가지 기본 실천방법: 함께 앉기, 전체 팀, 정보를 제공하는 작업 공간, 활기찬 작업, 짝 프로그래밍, 스토리, 일주일별 주기, 분기별 주기, 여유, 10분 빌드, 지속적 통합, 테스트 우선 프로그래밍, 점진적 설계

책 자체가 좀 더 얇고 핵심 내용들만 있으면 더 좋았을 것 같다는 생각은 지울 수 없다. 너무 사족이 많은 느낌이다. 그래도 XP 자체를 만든 창시자이기 때문에 이 책을 읽어볼만한 것 같다.

이 책을 읽고, 바로 XP를 적용하기는 힘들지만, XP에 대한 철학이나 개념등을 접할 수 있는 책인 것 같다.

추후에 애자일 관련 내용들을 한번 더 읽어보면 생각이 달라질 수도 있기 때문에 한번은 더 읽을 법한 책인 것 같다.

평점 및 한줄평

애자일 및 XP에 대해 궁금하다면 읽어볼 만 한 책.

한줄평

3.5/5

XP 관련 정리

XP Process

  • 구조적 스파이크: 팀원이 공통적으로 사용할 용어, 즉 System Metaphor를 만들어내기 위한 시스템
  • 사용자 스토리: 요구사항 수집, 의사소통 도구, 기능단위 필요한 내용을 간단하게 기재
    • 작성법
      • [사용자 역할][행위/목표]를 수행하여 [이유]를 한다.
      • 사용자 역할으로서, 효과를 받기 위해 목표를 원합니다.
      • <사용자>는 <목적>을 위해 <기능>을 할 수 있어야 한다.
    • 사용자 스토리 예
      • 사용자는 특정 입찰에 대한 문의를 할 수 있어야 한다.
      • 사용자는 아이디를 찾을 수 있다.
      • 사용자는 OTP를 통해 로그인할 수 있다.
      • 관리자는 입찰 정보를 삭제할 수 있어야 한다.
      • 사용자는 게시판에서 리스트를 확인할 수 있어야 한다.
      • 사용자는 게시물을 삭제할 수 있어야 한다.
      • 사용자는 특정 입찰에 참여할 수 있어야 한다.
      • 사용자는 자기가 작성한 글을 사이트에 등록할 수 있다.
      • 사용자는 도서 정보를 조회할 수 있다.
      • 동일한 응답 시간에 다섯 배의 통신량을 감당한다.
      • 사용자가 자주 사용하는 번호는 두 번 클릭만으로 사용할 수 있게 한다.
      • 최종 고객으로서, 프로필 사진을 변경하기 위해 수정 버튼이 있었으면 좋겠습니다.
      • 누가, 무엇을, 왜
        • 고객은 요청서를 쉽게 보내기 위해 필요한 정보를 한눈에 확인할 수 있다.
        • 고객은 자연스러운 UX를 위해 프로필 페이지를 웹뷰가 아닌 네이티브로 사용할 수 있다.
        • 클라이언트 개발자는 소셜 로그인 기능 개발을 위해 관련 API 엔드포인트를 사용할 수 있다.
        • 고객은 채팅 내에서 여러 장의 사진을 쉽게 보내기 위해 멀티 셀렉트 기능을 사용할 수 있다.
  • 스파이크: 어려운 요구사항 혹은 잠재 솔루션을 고려한 간단한 프로그램, 사용자 스토리의 신뢰성을 증대, 기술 문제의 위험 감소 목적
  • 릴리즈 계획: 전체 프로젝트에 대한 배포 계획. 하나의 반복을 1 ~ 3주로 나누고 반복들을 균일하게 유지
  • 승인 테스트: 릴리즈 전 인수 테스트 고객이 수행
  • 소규모 릴리즈: 작은 배포는 XP 주기의 마지막 단계, 소규모로 빈번하게 배포하면 고객에게 여러 이득을 조기 제공

참고

· 약 4분
karais89

조금 늦었지만 2020년에 읽었던 책들에 대해 간단한 감상 및 리스트 기록용도를 위해 포스트를 작성함.

2020년 총 20권의 책을 읽음. 1권은 어떤 걸 읽었는지 기록을 못 함.

대부분 도서 구독 서비스를 사용하여 읽은 책이다. 추리 소설을 좋아해서 추리 소설 위주로 읽었다.

2021년에는 조금 더 다양한 장르의 서적을 읽어야 겠다.

전반기

  • OKR 전설적인 벤처투자자: OKR에 관심을 가졌을 때 봤던 책. OKR 관련 서적중 추천.
  • 쏟아지는 일 완벽하게 해내는 법: GTD 방식에 대한 관심을 가졌을 때 봤던 책. OKR을 안 이후 해당 방식을 사용하지는 않지만. 책 내용 자체는 좋다.
  • 아주 작은 습관의 힘: 습관에 관한 이야기. 내용은 좋지만 별로 기억에 남지는 않았던 책.
  • OKR 실천편: 일본 사람이 쓴 책인데. 그다지 좋지는 않았다.
  • 호숫가 살인 사건: 히가시노 게이고 추리 소설. 재미있게 읽었다.
  • 살인자의 기억법: 김영하 장편소설. 워낙 유명한 책이기도 하고, 영화.로 까지 나온 책.
  • 언니 내가 남자를 죽였어: 소재가 좀 독특해서 기억에 남음. 동생이 연쇄 살인마인데 언니가 뒤치다꺼리를 함.
  • 화랑정 살인사건: 히가시노 게이고 추리 소설. 재미있게 읽었다.
  • 범인 없는 살인의 밤: 히가시노 게이고 추리 소설. 단편이라 부담없이 재미있게 읽었다.
  • 죽음을 보는 재능: 이거도 뭔가 재미있게 봤던 것 같은데 정확히 기억이 안남.

후반기

  • 이니미니: 약간 쏘우 느낌
  • 하쿠바산장 살인사건: 히가시노 게이고 추리 소설은 언제나 잼있다..
  • 살인자의 사랑법: 살인마 이야기. 소재가 좀 독특했던 것 같다.
  • 여름 어디선가 시체가: 한국에서 유명한 작가가 썻다는 소설이다.
  • 모든 것을 기억하는 남자: 이건 시리즈 물로 나왔는데. 조금 내용이 길어서 다음 시리즈에 손이 안가는 중.
  • [함께 자라기]({% post_url 2020-11-19-Growing-together %}): 유일하게 포스팅 했던 책. 애자일 관련 이야기.
  • 방과 후: 히가시노 게이고 추리 소설. 재미있게 읽었다.
  • 작열: 반전이 좀 신기했다.
  • 동급생: 히가시노 게이고 추리 소설. 재미있게 읽었다.

· 약 7분
karais89

book image

기간

7일

목적

우선 온라인에서 종이책으로 구입 함. 조금 할인을 많이 하여, 살만한 책이 없나 찾아보다가 객체지향 이란 제목에 끌려 바로 구입을 함. 개발을 하다보면 이게 맞는 개발 방법인가? 라는 생각이 계속해서 드는 시점이 왔는데.. 조금은 도움이 되지 않을까 싶어 구입을 하게 됨.

리뷰

책이 좀 여러 챕터로 구성되어 있다.

12챕터 까지 구성되어 있고, 기본적인 객체지향 개념. 클래스 설계 지침. 상속과 합성 관련된 내용. 프레임워크에 대한 내용등. 좀 얇고 넓게 전체적인 내용을 다룬것으로 보인다.

보통 책의 번역에 대해 얘기를 잘 안하는 편인데. 이 책의 역자는 좀 번역 자체에 신경을 많이 쓴걸로 보인다. 베타 리더의 의견도 많이 참고하고, 기존 소스들도 조금 더 보기 쉽게 수정한 부분들이 있고 번역 관련된 단어에 신경을 많이 쓴걸로 보여 책 자체를 읽기에 부담이 없었다.

5판 까지 나온 책이라. 오랫동안 계속 사랑 받아 온 것으로 보인다.

이 책의 저자는 객체지향 프로그래밍을 기술 수준이 아닌 개념 수준, 더 나아가서는 철학 수준에서부터 고찰하고 있다.

책에서 다루는 내용

  • 이 책은 객체지향적으로 생각하는 방법을 다루고 있다. 객체지향 개발을 한마디로 말한다면 생각하는 방식이다.
  • 독자가 객체지향적으로 생각하게 하는 데 초점을 맞추었다.

주요 내용

  • 객체지향 개념은 크게 캡슐화, 상속, 다형성, 합성으로 이루어진다고 보면 된다.
  • 객체는 속성과 행위라는 두 가지 성분으로 정의된다.
  • 객체지향 방식에는 데이터와 행위를 훌륭하고 완전한 패키지인 객체로 결합함으로써 데이터 제어 문제를 해결할 수 있다.
  • 일반적으로 객체는 다른 객체의 내부 데이터를 조작해서는 안된다.
  • 일반적으로 큰 객체를 만들어 많은 작업을 하기보다는 작은 객체를 만들어 특정 작업만 감당하게 하는게 좋다.
  • 메서드는 다른 객체에서 호출된 행위(메시지)를 구현하거나 클래스의 기본 내부 행위를 제공할 수 있다.
  • 메시지는 객체 간의 소통 메커니즘이다.
  • 인터페이스가 올바르게 설계된 경우에는 구현부가 변경되어도 사용자 코드를 변경하지 않아도 된다.
  • 행위를 직접 상속하기보다는 인터페이스를 상속하는 편이 더 일반적이다(전자는 상속이고 후자는 구현에 해당한다). 데이터/모델을 주로 상속받고, 행위를 주로 구현하는 경향이 있다.
  • 상속은 is-a 관계, 합성은 has-a 관계.

결론

챕터는 여러개이긴 한데 결국 같은 내용의 반복이라는 생각은 지울 수 없는 것 같긴 하다.

디자인 패턴및 SOLID는 간단히 맛만 보는 정도로 보여주고 있다.

계속 반복되는 코드(동물, 자동차 등)를 예로 들어 설명하는 부분이 오히려 좋았던 부분 인 것 같다.

결국 저자가 강조하는 부분은 상속 보다는 합성을 사용하자로 정리할 수 있다.

아래 간단히 책에 나오는 주요 예제 코드를 정리하였다. 실제 동작하지 않는 수도 코드라는 점은 참고 하자.

상속을 사용하지 않고, 합성을 사용한 예제

// 상속을 사용하지 않고, 합성을 사용한 예
class Mammal {
public void eat() { print("I am Eating"); };
}
class Walkable {
public void walk() { print("I am walking"); };
}
class Flyable {
public void fly() { print("I am flying"); };
}
class Dog {
Mammal dog = new Mammal();
Walkable walker = new Walkable();

// 위임
public void eat() { dog.eat(); }
public void walk() { walker.walk(); }
}
class Bat {
Mammal bat = new Mammal();
Flyable flyer = new Flyable();

// 위임
public void eat() { bat.eat(); }
public void fly() { flyer.fly(); }
}

void main() {
Dog fido = new Dog();
fido.dog.eat();
fido.walker.walk();

Bat brown = new bat();
brown.eat();
brown.fly();
}

의존성 주입 예제

class Mammal {
public void eat() { print("I am Eating"); };
}

class Walkable implements IWalkable {
public void walk() { print("I am walking"); };
}

interface IWalkable {
public void walk();
}

// mammal은 상속받고 IWalkable은 구현으로 처리
class Dog extends Mammal implements IWalkable {
IWalkable walker;

public Dog(IWalkable w) {
this.walker = w;
}

public void walk() {
walker.walk();
}
}

void main() {
Dog fido = new Dog(new Walkable()); // 의존성 주입
fido.walk();
fido.eat();
}

의존성 주입 예제 2

void main() {
Mammal cat = new Mammal(new CatNoise());
Mammal dog = new Mammal(new DogNoise());

cat.makeNoise();
dog.makeNoise();
}

class Mammal {
MakingNoise speaker;

public Mammal(MakingNoise sb) {
speaker = sb;
}

public string makeNoise() {
return speaker.makeNoise();
}
}

interface MakingNoise { public string makeNoise(); }
class CatNoise implements MakingNoise { public string makeNoise() { return "Meow"; } }
class DogNoise implements MakingNoise { public string makeNoise() { return "Bark"; } }
  • Cat, Dog 클래스를 만들지 않고 mammal 에서 해당 처리를 함.

평점 및 한줄평

기초 적인 내용 위주였지만, 다시 한번 객체 지향에 대해 생각해 볼 수 있었던 것 같다.

4/5

· 약 6분
karais89

book image

기간

7일

목적

클린씨리즈.. (클린코드, 클린코더, 클린 소프트웨어)를 만든 로버트 C 마틴이 작성한 책이라 별 고민없이 주문. 심지어 요즘에 거의 모든 IT 회사에서 적용하는 애자일에 관한 이야기를 다룬 책이다. 애자일에 직접적인 관계를 가진 (애자일 선언문을 만든) 당사자 이기 때문에 더 고민 없이 구매했던 것 같다.

리뷰

애자일을 다룬 책이므로 우선 애자일 선언문 부터 살펴 보자.

책의 서문에 나와 있는데로 이 책은 애자일의 근본적인 내용을 다룬다.

애자일은 무엇이고, 무엇이었고, 앞으로도 영원히 무엇일지를 다룬다.

애자일 선언문

우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을
도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고
있다. 이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다:

- 공정과 도구보다 개인과 상호작용을
- 포괄적인 문서보다 작동하는 소프트웨어를
- 계약 협상보다 고객과의 협력을
- 계획을 따르기보다 변화에 대응하기를

가치 있게 여긴다. 이 말은, 왼쪽에 있는 것들도 가치가 있지만,
우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다.

마감 기한은 바뀌지 않지만, 요구 사항은 계속해서 바뀐다.

반복주기에 대한 설명

  • 스크럼이랑 조금 다른 개념인것으로 보인다.
  • 프로젝트 일정을 일정한 크기로 더 작게 나눈다.
  • 이것을 반복주기 혹은 스프린트라고 한다. 반복주기의 기간은 1~2주가 적당하다.
  • 첫번째 반복 주기는 반복주기 0이라고 부르고 스토리(짧은 기능 목록)를 만든다.
  • 반복주기 1은 스토리를 몇개나 완료할 수 있을지 추산한다.
  • 반복주기 1이 끝나면 반복 주기 하나 동안 스토리를 얼마나 완료할 수 있는지 측정 가능한 수치를 처음으로 얻는다.
  • 아래는 스크럼 프로세스 스크럼 프로세스

애자일의 핵심

  • 애자일은 프로젝트를 더 작은 반복 주기로 나누는 프로세스다
  • 각 반복 주기의 결과물을 측정하여 지속적으로 일정을 평가하는 데 사용한다.
  • 기능은 비즈니스 가치 순서대로 구현하므로 가장 중요한 것이 먼저 구현된다.
  • 품질은 가능한 높게 유지한다. 일정은 주로 범위(구현 해야되는 기능)를 조절하여 관리한다.

XP

  • 모든 애자일 프로세스 중에서 XP가 가장 잘 정의되어 있고, 가장 완전하며, 가장 덜 혼란스럽다.
  • 애자일이 무엇인지 이해하고 싶다면 XP를 공부하는 것이 최선의 방법
  • XP 삶의 순환 도표 xp 삶의 순환 도표

책을 읽으면서, 평소 회사에서 이미 진행하고 있는 애자일에 대해 다시 생각해보았다. 애자일 자체의 개념은 간단하지만, 실천하기는 힘들다. 이러한 부분에 대해 실천하기 위해서는 많은 노력이 필요할 것으로 보인다.

반복주기 관련해서는 현재 개인적으로 진행하고 있는 개인 OKR과도 흡사한 부분이 보인다. 3개월 단위의 목표를 세우고 매 주마다 목표에 대한 할일을 세우고 매 주마다 그것에 대한 피드백을 받는다.

애자일은 1주일의 스프린트를 정한다고 생각하면 매 주 스토리 보드를 만들고(할일). 매주 해당 스토리 보드에 포인트를 계산하고(피드백). 모든 스토리 보드가 완료될 때까지 프로젝트를 진행한다(목표).

애자일을 개인적인 프로젝트에도 적용 가능한지와 활용 가능한지에 대한 부분은 추가로 확인을 해봐야 될 것 같다. (지라, 트렐로 등 도구)

평점 및 한줄평

애자일에 대한 고민. 혹은 궁금한 분은 한번 쯤 읽어 볼 책. 믿고 보는 로버트 C 마틴

5/5

· 약 4분
karais89

book image

기간

7일

목적

OKR에 대해 전사에서 도입 계획이 있어, 좀 더 실용적인 OKR 도입 방법이 있나 찾아봄. 개인적인 OKR을 도입 고려 용도

리뷰

국내에서 처음 나온 OKR 관련 서적

애자일, 스프린트, OKR을 하나의 개념으로 보고 작성한 책

OKR은 보통 분기 단위(3개월)로 세우게 되는데 이 3개월을 12주의 스프린트로 생각하고, 기존의 MBO 방식(1년)과 달리 3개월의 목표 관리를 하여 기민하게(애자일) 빠르게 대처 가능한 목표 관리 방법 이라고 책은 소개 한다.

OKR은 사실 개념 자체는 어렵지 않지만, 실제 적용하기가 어려운 것 같다. 실제 인텔에서도 OKR을 도입하고 1년 반이 지나서 제대로 적응했다고 한다.

이 책을 만든 저자는 실제 여러 회사에 OKR 도입을 적용하면서 자신만의 OKR 적용 방법을 정리 하였다.

목차는 다음과 같다

  • 파트1. 왜 지금은 OKR인가
  • 파트2. OKR, 제대로 알고 시작합시다
  • 파트3. OKR 제목 작성이 실행의 반이다.
  • 파트4. 12번의 파도, 12주의 도전
  • 파트5. OKR, 문화로 정착시켜라
  • OKR 파워 부록

국내에서 처음 OKR 관련에 대해 나온 책이라 기대를 많이 한것에 비해 실속이 없는 느낌이다.

이미 나온 OKR 책에 대한 내용을 정리한 것으로 밖에 볼 수 없다.

아래 2개의 책을 보는걸 추천한다.

  • OKR 전설적인 벤처투자자가 구글에 전해준 성공 방식
  • 구글이 목표를 달성하는 방식 OKR

평점 및 한줄평

OKR 다른 서적을 보는 것을 추천

2/5

책 내용 중 참고 사항

OKR 체크 리스트

  1. 어느 레벨까지 OKR 제목을 세팅할지 결정하였는가?
    1. 전사 - 팀 - 개인 (처음 도입시 팀 단위까지 추천)
  2. OKR 파일럿 진행 여부를 결정하였는가?
    1. 부서별 OKR 세팅 추천
  3. OKR 제목 개수를 결정하였는가?
    1. 3개 이내 추천
  4. OKR 운영 주기를 결정하였는가?
    1. 통상 3개월. 더 짧아도 문제 없음
  5. KR 측정 방법을 결정하였는가?
    1. 구글의 방법 0.0~1.0
  6. OKR 미팅 운영 방법을 세팅하였는가?
    1. 주1회 실행 계획 점검. 월1회 진척사항점검.
  7. OKR 공유 시스템을 세팅하였는가?
    1. 구글시트, 노션, 트렐로등 투명하게 모든 OKR 공개

3-3-3의 원리

구글은 3-3-3의 원리를 강조한다.

OKR은 최대 3개월 단위의 달성 가능한 목표. 3개의 O, 갹 O 별로 3개의 KR을 세운다.

· 약 2분
karais89

book image

기간

2주일

목적

문득 도서 검색을 하다 눈에 띄는 책이라 구입

리뷰

책에 대한 내용은 전체적으로 너무 좋은 평가라 조금 조심스럽다.

책은 총 3부로 구성되어 있다.

1부. 자라기

2부. 함께

3부. 애자일

1부와 2부의 내용은 통계적인 내용 및 연구 결과에 대해 다룬것으로 보인다.

3부는 매우 짧은 내용이고, 애자일에 대해 다룬다. 내 생각엔 3부에 대한 설명을 위한 1부, 2부 였던것으로 보인다.

결국 자기 계발을 계속해서 진행하고, 코더가 아닌 소프트웨어 아키텍쳐를 목표로 하고, 의도적 수련을 하자. 그리고 함께 일을 할때 중요한 부분에 대한 설명.이고 결국 이것이 애자일로 가는 길이다.

애자일은 함께 성장하고, 짧은 주기 동안 지속적인 피드백을 받는 기법이다.

고객에게 날마다 가치를 전하자

이 책의 저자가 말한 애자일에 대한 설명이다.

평점 및 한줄평

3부의 경우 흥미 있게 읽을만한 주제 였지만, 나머지 1~2부는 글쎄..

3/5

· 약 2분
karais89

book image

기간

한달

목적

go 언어에 대한 이해를 이해 구입

리뷰

Go 언어를 익히는 가장 확실하고 효율적인 방법

Go 관련 책이 잘 나오지 않는 상황에서 Go 관련 서적이 출간되어 바로 구입 하였다.

1~16장으로 구성되어 있으며, 기본적인 Go 언어의 특징 및 문법에 대해 설명하고 간단한 예제 프로그램을 만들고, 마지막엔 간단한 웹앱을 만든다.

거의 모든 프로그래밍 서적이 그렇지만 조금은 더 깊게 파고드는 부분은 없는 것 같아 좀 아쉽긴 하다.

처음 Go에 대해서 알아보고 어떤 언어 인지 파악하고 싶은 분들 이라면 한번 쯤은 읽어볼 만 할 수도 있겠다.

Go를 이미 접해본 분이라면 딱히 추천하고 싶지는 않다.

평점 및 한줄평

go를 처음 접하시는 분이라면 읽어볼 만한 책

3.5/5

· 약 7분
karais89

book image

기간

2일

목적

게임 프로그래머로 산다는 것.

게임 프로그래머의 5인의 이야기를 책으로 만날 수 있다.

현업에 종사하는 사람으로써 이 책을 안 보고 넘어 갈 수 없었다.

리뷰

게임을 만드는 사람들의 이야기다. "나는 이렇게 살고 있는데, 여러분은 어떻습니까?"라고 동료로서 선배로서 그들의 진솔한 이야기를 들려준다.

책의 특징

  • 게임 업계에 종사하는 5인의 이야기를 담고 있다.
  • 2016년 출판된 책이라 비교적 최신의 내용을 담고 있다.
  • 전문적인 내용 보다는 자신의 경험담 및 가치관에 대한 이야기라 쉽게 읽을 수 있다.
  • 업계에 오랫동안 종사하는 분들의 이야기라 앞으로의 나아갈 방향을 생각하게 만든다. (40~50대때의 나는 과연 어떤 모습일까?)
  • 각 챕터마다 수록되어 있는 각자의 인터뷰가 상당히 인상적이었다.

나의 결론

  • 나만의 게임을 만들자. (사이드 프로젝트, 토이 프로젝트, 펫 프로젝트 등등)
  • 수학, 영어는 매우 중요하다. (꾸준한 공부가 필요하다)
  • 자료구조, 알고리즘, 디자인 패턴, 소프트웨어 공학등의 기초가 중요하다.
  • 3D 그래픽스 개념 (DirectX, OpenGL)을 알면 개발이 쉬워진다.
  • 블로그는 꾸준히 하자.

책 내용 정리

김성완 (인디 개발자 인디라 운영)

  • 늙는것을 두려 하지 말고 매일매일 신나게 살았으면 한다.
  • 프로그래머는 절대로 꼰대가 되면 안 되는 것이다
  • 작은 것만 가지고도 용감하게 새로운 시도를 할 수 있고 그런 새로운 추구에 더 큰 박수를 보내는 이들이 바로 인디 게임 개발자들이다
  • 일주일에 하나씩 게임 만들기 http://goo.gl/POA5CA
  • 새로운 것을 두려워하지 않는 호기심과 나이에 상관없는 피터팬 정신이 필요합니다

정재원 (해외 취업 개발자)

  • 프로그래머를 움직이는 것은 최종 상품인 게임 보다도 기술에 대한 열정인 경우가 많다
  • 강요된 야근은 결국에는 더 큰 눈덩이가 되어 돌아오기 쉽다.
  • 프로그래밍의 근본이 수학이라고 믿는다
  • 프로그래밍 언어는 영어이다
  • 개발자로서 영어는 필수이다
  • 프로그래머 라도 사람들과의 의사소통이 중요하다
  • 글쓰기 실력을 늘리는 가장 효율적인 방법은 많은 글을 써 보는 것이다 블로그 글도 좋고 회사에서 요구하는 문서도 좋다
  • 읽기 쉽고 간결한 코드가 좋다
  • 실력 향상에는 의도적 공부가 필수다
    • 새로운 언어를 배우는 것
    • 개인 프로젝트를 하는 것
  • 지식 공유
    • 사내 컨퍼런스
    • 블로그
  • 오픈소스 라이브러리 제작
  • 프로는 자신의 결과물에 책임을지는 사람이다

이국현 (서버 개발자)

  • 연극의 화려한 무대는 클라이언트이고 무대뒤에 분주한 스텝들의 모습은 서버의 모습같이 느껴진다
  • 게임이라는 컨텐츠를 소비하는 사람이 되기 보다는 컨텐츠를 만드는 사람으로서의 역할에 더 충실해야 한다
  • 프로그래머는 몇 십만 원짜리 컴퓨터 한 대만 있으면 전 세계의 모든 기술을 습득할 수 있다

김상천 (50대 개발자)

  • 게임 엔진을 한 번 만들어 보라고 권하고 싶습니다 개발자로 성장하는데 많은 도움이 된다고 생각 합니다
  • 자기 관리에 대한 생각 프로젝트의 규모가 커지면서 소프트웨어 공학의 필요성을 느꼈다.
  • 외부의 많은 공개 소프트웨어를 열심히 분석했다.
  • 최신 OS에 대한 감각을 익힌다.

김용준 (해골책 저자)

  • 현재 국내에서는 대부분의 회사들이 상용엔진을 통해서 게임을 개발하고 있다.
  • 최근이 개발 추세는 엔진을 만드는 능력보다는 엔진을 잘 사용하는 쪽으로 초점이 맞춰지고 있다.
  • c언어는 해커를 위한 언어다. 컴퓨터에 대한 거의 무한대에 가까운 권한을 주면서, 프로그램에 문제가 생겼을 경우에 대한 무한대의 책임도 프로그래머에게 준다.
  • 3D 그래픽스의 기초 원리에 더 많은 이해가 필요한 것이다.
  • 수학(선형대수), 자료구조, 알고리즘

최영준 (강사)

  • 게임은 결국 수학 (삼각함수, 방정식에 대한 이해, 벡터, 행렬)
  • 엉덩이로 하는 공부 (기본적 물리 지식, 어느정도의 영어 독해 능력)
  • C/C++, API, 게임수학, DirectX, 엔진 프로그래밍에 순서로 골자를 잡고 디자인 패턴, 자료구조, 알고리즘 등의 살을 붙여나가는 공부 방식을 추천한다.

평점 및 한줄평

게임 프로그래머로서 게임 프로그래머의 이야기를 들을 수 있는 단비와 같은 책

4.5/5