메모장

블로그 이미지

동팡

https://github.com/ehdvudee

'메모장'에 해당되는 글 73건

제목 날짜
  • [간단-책 리뷰] 기획은 2형식이다.2 2025.05.17
  • [간단-책 리뷰] 당신의 생각을 정리해드립니다. 2025.05.17
  • [간단-책리뷰] 내 문장이 그렇게 이상한가요? 2025.05.17
  • 이직 후, 이직 후의 회고(경력 개발자의 이직 시리즈-10(마지막))11 2025.01.01
  • [간단-책리뷰] 공부의 미래1 2023.05.21
  • [간단-책리뷰]테스트 주도 개발(By Example) 2023.05.21
  • [간단-책리뷰]나는 주니어 개발자다. 2022.06.24
  • [간단-책리뷰]오늘부터 개발자(비전공자를 위한 개발자 취업 입문 개론) 2022.06.24
  • [간단-책리뷰]프로젝트 성패를 결정짓는 데이터 모델링 이야기 2022.06.24
  • MySQL insert, Lock wait timeout exceeded 트러블슈팅 2022.02.22

[간단-책 리뷰] 기획은 2형식이다.

개발관련/책 리뷰 2025. 5. 17. 00:59

예전에 독서 후 정리했던 것이다. 이 책은 많은 예시로 문제에 어떻게 접근하는지 보여준다. 문제 파악이 75%이다. 문제 정의가 중요하다. 동료도 비슷하게 얘기했다. "기획은 문제 정의가 제일 중요하다." 지금은 책 내용이 거-의 기억이 나지 않지만, 문제 정의에 더 많은 노력과 생각을 해야한다는 것은 머릿속에 각인됐다.

---

독서 일자

  • 2024년 언제인지 기억아나;

개요, 기획은 무엇일까?

  • 기획의 본질은 문제를 해결하는 것 이다.
  • 기획은 심플해야 한다
    • 문제와 해결은 2형식으로 제시할 수 있어야 한다.
  • 기획은 문제의 해결보다 문제의 명확한 정의가 더 중요하다. 75%는 문제를 파악하고 정의해야한다. 링컨의 도끼가 비슷한 예가 될 수 있다.

P코드 - 그럼 문제는 무엇일까?

  • 문제는 이상과 현실의 괴리를 의미한다.
  • 그러나 진짜 문제는 이 현실(현상)의 원인이다. 현상의 본질을 문제라고 정의할 수 있다.
  • 문제는 3개의 요소가 있다
    • 현상: 문제로 인해 발생되는 가시적인 여려 결과 중 하나
    • 사실: 표면적인 문제
    • 본질: 문제가 발생하는 근본적인 문제(원인)
    • 예1) 농작물이 말라죽는 문제(현상)이 발생했습니다. 원인은 비가 오지 않기 때문입니다(문제의 사실). 여기서 사실을 문제로 정의하면 기우제를 지내는 우를 범할 수 있다. 본질은 물이 부족한 것이다(본질).
    • 예2) 클러스터 pod들이 불규칙하게 OOM Kill이 발생한다(현상). OOM Kill은 메모리가 부족해서 발생하는 문제이다(사실). 여기서 pod 메모리를 증설하는 우를 범할 수 있다. 본질은 특정 API의 함수가 메모리 누수를 발생시켰고, 해당 API를 일정횟수 실행시키면 OOM이 발생한다(본질).
    • 그래서 타인이 "문제가 뭐야?"라고 물을 때 본질을 답하는 연습을 해야한다.
  • 문제를 본질을 정의하기 위해서 필요한 것은 무엇일까?
    • 내 관점이 아닌, 상대 관점에서 문제를 해석한다.
    • 그냥 현상인지, 문제의 현상인지 문제의식을 계속 갖자.
    • 이게 맞나? 이게 최선일까? 생각해본다.
    • 현상에 대해 왜라는 질문을 계속하며, 본질의 범위를 좁히며, 찾아간다.
    • 현상과 사실을 보고 가설을 정의하고, 분석을 실시하여 상관관계 검증 실시한다. 분석결과가 진짜 맞는지 본인한테도 질문을 한다.
    • 왜 그런건지, 왜 해야하는지도 덤으로 생각해본다. (왜 이게 문제지, 왜 이걸 해야지)
    • 문제가 복잡/복합하여 정의가 되지 않으면 분할을 한다. 분할 기준은 여러가지 일 수 있다. 과제/코드/사람 기준으로 여러가지로 분할할 수 있다.
    • 근본적인 원인을 핵심문제를 파악, 핵심문제 해결을 하면 부수적인/연관된 문제도 같이해결될 수 있다. 문제, 사고를 구조화하여 분류하여 본질을 파악한다. 내가 제일 못 하는 것 같음
  • 문제의 종류
    • 발생형: 엎질러진 물이며, 눈에 보이는 수습이 필요한 문제이다.
    • 탐색형: 나빠 보이지 않지만 더 좋게 개선이 필요한 것
    • 설정형: 내일은 뭐 먹고 살지? 신규 사업 이슈의 해결
    • 개발자 관점에서 생각해보면 발생형 문제는 운영을 하면서 발생하는 운영 이슈라고 생각하며, 탐색형은 운영을 하면서 또는 모니터링 지표를 확인하여 더 좋게 개선하거나 신기술 도입을 하는 행위이고, 설정형은 미래 시점에 필요한, 사용자가 정말 필요한 것을 도출하여 개발하는 것일까? 설정형은 명시화하는게 쉽지 않다. 여러가지 유형이 있고 주관적이라 쉽지 않을 것 같다.
    • 본인은 최소 탐색형을 잘 소화해야 하는데.. 발생형도 어렵다;
  • 문제가 너무 많아요~ 구조화된 사고는 무엇일까?
    • 구조적 사고를 위한 방법론 MECE
      • https://yozm.wishket.com/magazine/detail/1481/
      • https://2zyo1011.tistory.com/12
  • 번외) 진짜 문제는 뭘까
    • 문제 자체를 인식하지 못 한다.
    • 문제가 뭔지 모른다.
    • 문제를 잘못 찾았다.
    • 문제를 두리뭉실하게 규정하였다.

S코드 - 해결

  • 해결
    • 느슨한 연상(탈카테고리화, 메타포?)으로 생각한다. 카테고리에 갇혀 생각하지말고, 넓게 생각한다. 느슨한 연상을 하여 연관된 듯 아닌 듯하게 생각한다.
    • 심플한 해결을 위해 은유를 적극적으로 활용한다. 은유는 내포된 의미가 깊어 간단한 메시지로 심도있는 메시지를 전달할 수 있다(예: 히트텍은 제 2의 피부다.)
    • 메타포는 닮은꼴 찾기로 쉽게 얘기할 수 있다.
  • 그래서 어떻게?
    • 창조적인 기획의 아이디어는 모방에서 시작한다. 모방으로 새로운 아이디어로 만드는 방법론은 다음과 같다.
    • 원천봉쇄: 가시적인 것을 모방하는 것이 아닌 원리, 구조, 패턴 등 내부에 있는 아이디어의 본질을 모방해야 한다.
    • 경계초월: 탁월한 기획/아이디어는 분야를 초월한 닮은 꼴의 향연이다. 다른 분야의 아이디어 골조를 갖고와 내 분야 문제 해결에 맞게 살을 붙인다.
    • 뒤섞기: 훔치고 뒤섞으면 원천은 더더욱 보이지 않는다. 물성과 현상을 결합하여 새로운 것을 만든다. 여러 아이디어를 적재적소에 맞게 조합하여 원천이 무엇인지 알 수 없도록 만든다.
    • 훔치고, 뒤섞고, 느슨한 연상으로 문제를 해결할 수 있다. 다만 주의사항은 S가 P의 문제를 적확하게 해결하는지 재점검이 꼭 필요하다.
    • IT도 비슷하다. 다른 곳의 해결방식을 내 문제의 해결방식으로 많이 차용할 수 있다?
    • 추가로.. 인문학은 연상사고인 연상, 비유(은유)의 집산지이다. 메타포 사고력을 키울 수 있다.

정리

  • 좋은 책이다. 기획자의 사고가 궁금했다. 기획을 어떤식으로 하는지..? 이는 분명 내게 도움이 될 것이라 믿었다. 
  • "일을 못 한다." P-S 코드 처럼 생각해보자
    • 문제 발췌
      • 일을 효과/효율적으로 진행하지 못 한다. 이는 문제의 현상이다.
      • 내 능력이 부족하기 때문에 이렇게 된 것이다. 이는 문제의 사실이다.
      • 문제를 명료하게 정리하지 않고 해결책이 모호하다. 이는 진짜 문제(본질)이다. 진짜 문제가 맞을까? 한번 더 접근해보자
    • 왜
      • 왜 문제를 명료하게 정리하지 못 하는가? -> 문제 파악이 잘 안되는가?: 아니다 -> 그러면 문제 요약이 가능한가?: 안된다. -> 그럼 왜 문제가 요약이 안되는가?: 진짜 문제 파악이 쉽지 않고 문제가 여러개이다. -> 그러면 문제 정리하는 방법이 잘못 된것 아닌가?
저작자표시 비영리 (새창열림)

'개발관련 > 책 리뷰' 카테고리의 다른 글

[간단-책 리뷰] 당신의 생각을 정리해드립니다.  (0) 2025.05.17
[간단-책리뷰] 내 문장이 그렇게 이상한가요?  (0) 2025.05.17
[간단-책리뷰]테스트 주도 개발(By Example)  (0) 2023.05.21
[간단-책리뷰]나는 주니어 개발자다.  (0) 2022.06.24
[간단-책리뷰]오늘부터 개발자(비전공자를 위한 개발자 취업 입문 개론)  (0) 2022.06.24
Posted by 동팡

[간단-책 리뷰] 당신의 생각을 정리해드립니다.

개발관련/책 리뷰 2025. 5. 17. 00:55

뭘 이리 열심히 작성했나;

독서 일자

  • 2024 언제였지 기억안나

느낀 점

  • 생각 정리는 마인드맵(로직트리) 사용을 적극 추천하며 우리의 일상에서 사용하여도 좋다. 요즘 마인드맵을 적극적으로 사용하고 있는데 괜찮은 것 같다. 효과적으로 정리하기 위해서는 로직트리, 질문 가지 같은 마인드맵 방법론을 더 공부해야할 것 같고.. 내 자신이 비판적 사고력, 사고의 구조화, 왜에 대한 질문을 끊임없이 해야할 것으로 생각한다. 
  • 이 서적은 SMART 목표 설정을 얘기한다. SMART 목표 설정만큼은 아니지만 예전에 구체적으로 목표설정 했던 것같은데.. 요즘은 목표 자체를 설정하지 않고 있는 자신을 보고 있다. 이번에 1년/5년 SMART 목표 설정을 해야겠다.
  • 이 책의 문제점 
    • "생각 정리" 주제에 대한 내용은 20~30%만 있고 그 외에는 주제를 벗어난 얘기를 한다.
    • 목적/목표/시간/문제에 대한 정리는 "생각 정리"와는 전혀 다른 주제라고 생각한다. 다음과 같이 느꼈다. "생각 정리 전에 목적과 목표가 있어야해", "시간을 효과/효율적으로 사용하면 생각 정리를 더 잘 할 수 있어!", "너의 문제가 뭔지 본질은 뭔지 이해를 잘 해야지 생각을 더 잘 할 수 있어!" 이런 느낌이다. 저자의 다른 서적 "생각 정리 스킬"의 목차를 확인해봤는데 비슷한 상황 같다...  
    • 그래서 내가 원했던 것은? 1)생각 정리 방법론은 무엇이 있는지? 2)어떻게 하면 효과/효율적으로 정리가 되는지? 3)근거는 무엇인지(뇌과학 논문/서적을 토대로 근거 제시) 4) 실제 여러 사용 예를 원했다. 그나마 마인드맵이 해당한다.
    • 생각 정리의 대명사 "일기"가 없다. 일기는 자신의 감정/생각을 효과적적으로 정리한다. 일기에 자기 감정을 서술하면 어느새 생각과 감정이 정리된다. 근데 없네? 뭐 ... 

 

 

옛날에 적었는데, 보지도 않네;

1. 개요

    1. 생각 정리 기본 원칙 - 나분배(나열, 분배, 배열) 원칙: 현재 생각이 필요한 모든 것을 "나열"한다. 나열된 것을 일련의 규칙/기준으로 분류(분배)한다. 분배된 것을 토대로 정리(배열)를 시작한다.
    1. 생각 정리 방법
      • 개요
        • 트리형: 마인드맵(+로직트리)과 같은 생각을 트리 형태로 펼칠 수 있느 ㄴ것
        • 메트릭스형: 만다라트, 우선순위 메트릭스와 같은 일정한 규칙이 있는 틀(표)에 정리하는 것
        • 이미지형: 몰라;
      • 상세 설명
        • 마인드맵(로직트리)
          • 규칙/형식에 얽히지 않고 생각을 정리하고 문제에 대한 해답을 얻기에는 최적의 도구는 마인드맵(로직트리)을 적극적으로 추천한다.
          • 추천 이유는 업무(프로젝트/과업/과제)를 할 때 문제/요구사항/해결을 구체화하기 좋은 수단이다. 또한 특정 기능을 개발할 때 다양한 문제와 해결방안이 뒤섞여 머리가 복잡할 때 마인드맵을 활용하여 "나분배"를 진행하면 문제/해결 파악이 좋다 <- ==문장 수정 필요==
          • 마인드맵은 로직트리의 What, Why 트리를 적극 추천한다. 마인드맵 작성에 정말 효과적이지 않을까 생각한다.
          • 형식이 없기 때문에 다양한 생각을 정리할 수 있는 장점이 있지만, 형식이 없기 때문에 복잡해지는 단점이 있다. 그래서 현재 정리가 필요한 주제가 메트릭스 모델에 있으면 활용하는 것도 좋은 방법이다(예: 미래 목표 설정, 업무 우선순위 정리).
        • 메트릭스
          • 만다라트: 추상적인 목표설정할 때 만다라트를 활용할 수 있다. 오타니 선수의 만다라트표를 참고할 수 있다. 그러나 목표설정은 SMART 목표 설정 법이 더 효율적이지 않나 생각한다.
          • 우선순위 2X2 메트릭스: 현재 자신이 문제가 뭔지 모르겠고, 뭘 해야할지 막막할 때 하는 것이 좋지 않을까 생각한다. 분류 후 이유와 기간, 책임 정보를 기재하면 생각을 좀 더 가시화할 수 있다.
        • 정리: 효과/효율적인 생각 정리 툴은 마인드맵(로직트리)이 원탑이다. 메트릭스는 내 문제가 뭔지 모를 때 사욯아면 효율적이라고 생각한다. 서적에서는 원페이지, 사명선언문을 더 소개하는데 원페이지는우선순위 메트릭스, TO-DO를 짬뽕하여 문제 발췌 및 해결까지 진행하는 것이다. 사명선언문은 ... SMART 목표설정법으로 대체한다.
    1. 정리된 생각을 효율적으로 해결하는 방법(Tasks/TO-DO)
      • 위에서 생각이 정리되면 자신이 무엇을 어떻게 할지 항목이 도출된다.
      • Task 구성 방법
        • 이유: Task를 왜 하는지
        • 분류: 특정 주제에 맞게 분류
        • 담당자 지정: 내가 하는 것인지 남이 하는 것인지 같이하는 것인지, 같이하는 경우 % 지정 필요
        • 우선순위: 상중하와 같이 Task의 시급도 설정
        • 예상 소요시간: 소요시간 파악하여 task의 stale 파악
        • 목표 완료시간: Task의 데드라인
      • 위와 같이 Tasks(TO-DO)를 구체화하면 Task의 상태관리를 효율적으로 할 수 있다.
      • 번외) Not-TO-DO-List: 내 문제점을 잘 알고 있으면 Not-To-do-List를 만들어서 내 상태 교정할 수 있다.
    1. 마인드맵 추가 정리(사용 방법론)
      • 마인드맵 작성 방법론 - 로직트리
        • 현황(What 트리): 내가 무엇을 생각해야하는지 뭐가 문제인지 문제를 발췌하는 것
        • 원인(Why 트리): 진짜 문제가 무엇인지? 왜 문제인지? 본질은 무엇인지? 원인은 무엇인지 등등.. 왜에 대한 트리(+5Why를 여기서 적용해보자)
        • 해결(How 트리): 문제를 해결하기 위한 방법을 표현하는 트리이다. 더 좋은 해결은 없을지, 이 해결방법이 최선인지?
      • 마인드맵 가지 주제
        • 연상가지: 주제와 연관된 것을 나열한다.
          • 느슨한 연상: 의식의 흐름으로 작성하며 아이디어를 발췌할 때 좋다.
          • 강한 연상: 논리적으로 그룹화된 주제를 연상
          • 유사/반대 연상: 직유, 은유 / 반대되는 개념을 연상
        • 분류 가지
          • 규칙/기준을 준용하여 주제를 그룹화
        • 질문 가지
          • 주어 + 육하원칙 + 동사 묶어서 질문을 만든다.
        • 정리
          • 질문 만들 때 질문가지를 적극적으로 활용하면 좋다고 생각한다.
저작자표시 비영리 (새창열림)

'개발관련 > 책 리뷰' 카테고리의 다른 글

[간단-책 리뷰] 기획은 2형식이다.  (2) 2025.05.17
[간단-책리뷰] 내 문장이 그렇게 이상한가요?  (0) 2025.05.17
[간단-책리뷰]테스트 주도 개발(By Example)  (0) 2023.05.21
[간단-책리뷰]나는 주니어 개발자다.  (0) 2022.06.24
[간단-책리뷰]오늘부터 개발자(비전공자를 위한 개발자 취업 입문 개론)  (0) 2022.06.24
Posted by 동팡

[간단-책리뷰] 내 문장이 그렇게 이상한가요?

개발관련/책 리뷰 2025. 5. 17. 00:37

독서 일자

  • 2023.12
  • 2025.05

내용

  • 저자는 책 교정자다. 작가의 글을 교정/교열하는 글 작성 전문가이다. 
  • 대체로 잘못된 접사/조사/단어는 어떻게 교정하는지 일목요연하게 설명한다. 
  • 책은 얇지만, 책의 가치는 정말 무겁다.

대상 독자

  • 문장을 깔끔하게 작성하고 싶은 사람

느낀 점

"이 사람 대단하다?" 2회독 후 확신했다. 글 쓰기의 기본/근본을 담고 있다. 문장에서 쓸데없고 어색한 접사/조사/단어는 무엇인지 예시와 함께 설명한다. 대체로 쉽게 잘 설명한다. 이해가 정말 잘 된다. 설명이 좋은 지, 글을 잘 작성했는지 모르겠지만 이해가 잘 됐다. 책이 끝날 즈음 명언이 있다. "문장은 왼쪽에서 오른쪽, 위에서 아래로 작성한(읽는) 다는 것이다. 더구나 한글 문장은 영어 문장과 달리 되감는 구조가 아닌 왼쪽에서 오른쪽으로 풀어가야 한다." 맞다. 글을 작성할 때 문맥 이해를 위해 여러번 빠꾸 하는 글을 작성하면 안 된다. 그런 글은 번역서에서 아주아주 많이 본 기억이 있다.

이 저자의 다른 서적도 보고싶다 ㅎㅎ

왜 두 번 읽었을까? 마지막을 제대로 못 보고 책을 덮은 것도 있지만, 트라우마와 하나의 기억이 남아, 1 회독하였다.
예전에 분노의 메일을 작성했던 기억이 있다. 식전이라, 분노 + 급하게 작성하였다. 1시간이 지났을까? 다시 읽어보니, 메일은 엉망이었다. 메일 참조자도 많았기 때문에 너무 부끄러웠다. 더 부끄러운 점은 선임이 나를 불러 메일을 교정해 줬다. 그 선임은 '메일도 교정해줘야 하나?', '메일을 이렇게 밖에 못 쓴다고?' 생각했겠지.. 그때 당시 나 또한 '나도 안다.. 알아..' 몇 백번 생각했다. 교정은 고맙게 생각하나, 그때 당시.. 내 정신이 제정신이 아닌지라.. ㅋㅋ 여하튼 그 상황과 분위기는 내 머릿속에 각인됐다. 그래서 1 회독했다.

아는데 왜 실수했냐? 

저작자표시 비영리 (새창열림)

'개발관련 > 책 리뷰' 카테고리의 다른 글

[간단-책 리뷰] 기획은 2형식이다.  (2) 2025.05.17
[간단-책 리뷰] 당신의 생각을 정리해드립니다.  (0) 2025.05.17
[간단-책리뷰]테스트 주도 개발(By Example)  (0) 2023.05.21
[간단-책리뷰]나는 주니어 개발자다.  (0) 2022.06.24
[간단-책리뷰]오늘부터 개발자(비전공자를 위한 개발자 취업 입문 개론)  (0) 2022.06.24
Posted by 동팡

이직 후, 이직 후의 회고(경력 개발자의 이직 시리즈-10(마지막))

개발관련/회고 2025. 1. 1. 02:34

경력 개발자의 이직 회고록(시리즈)

  • ...
  • 이직한 회사의 첫 출근(경력 개발자의 이직 시리즈-9)

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

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

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

목차

  • 개요(들어가기 앞서...)
  • 회사 생활(회고 - 1)
  • 다시 이직(회고 - 2)
  • 회고(회고 - 3)
  • 앞으로

개요(들어가기 앞서...)

하필 글 쓸 때 25년도 1월 1일이다. 의도하지는 않았지만 의도한 걸로 합시다;(뭐, 마무리는 1월 말에 했지만 ㅋㅋ)

이 시리즈를 작성할 때 굉장히 들뜬 마음에, 뿌듯한 마음에 작성했던 기억이 있다. 좋은 회사에 들어가서 내가 생각했던, 목표했던 개발자로 한 걸음 갔다는 생각이기 때문이다. 이 기분과 기운(정보)을 블로그로 공유하고 싶었다. 시리즈 9편 작성 후 어언 4년 가까이 흘렀다. 6개월 후 회사 생활에 대한 경험 및 생각을 작성하고 싶었다. 하지만 일과 사람에 치이다 보니 2년 반이 지났고, 다시 이직하고 1년이 지났다.

트라우마가 있었다. 자신감도 많이 잃었고, 주눅 들었다. 일상에는 크게 지장은 가지 않았지만 어색한 내 자신을 계속 보는 것이 너무 힘들었다. 괜찮다고 매번 내 자신에게 되새기지만, 나를 조이며 나는 내 자신을 계속 괴롭히고 있었다. 

 

회사 생활 (회고 - 1)

회사생활은 전반적으로 만족하지 못했다. 항상 불안감과 무력감이 동반했다. 무력감은 결국 내 자신을 무기력하게 하였다. 이 무기력은 정말 오래갔다. 최근 괜찮아졌지만, 아직 트라우마가 있다. 이 트라우마가 긍정적인 영향도 있지만, 결국 건강하지 못한 트라우마이다. 그때 나는 출근 중에 이등병 때 했던 생각을 똑같이 했다. 그냥 자빠져서 병원에 입원하고 싶네? 이런 생각 말이다. 그래도 버티면 나아질 수 있다고 생각했다. 버티다 보면 나도 발전하고, 주변에서도 인정을 해주기 때문이다. 과거 군대도 같았기 때문에 이런 생각을 했다. 일병 말호봉까지 개같이 일 하니, 결국은 인정받고 잘 적응했다. 버티면 나아지지 않을까 생각했다. 2년이 지나도 나아진 것은 없고, 목표도 잃어버린 무력한 내 자신 밖에 남지 않았다. 

 

크게 세 가지를 생각해본다. 

  • 기본기의 부재
    • 제일 큰 요인인 것 같다 ㅎㅎ 모든 문제의 시작이기 때문이다. 기술에 대한 기본기를 말하는 것이 아니다. 사람으로서의 기본기를 얘기하는 것이다. 의사소통 능력, 문제에 대한 정의 능력, 절충안/최적안을 판단하는 통찰 능력, 구조적인 사고, 전체 흐름 파악, 기민함, 임기응변 등 다양하다. 그냥 쉽게 얘기해서 일 센스가 많이 부족한 것이다. 이쯤 되면 내가 뭔 병신인가? 생각이 든다 ㅋㅋㅋ..
  • 나약한 마음가짐
    • 부드럽고 여유가 있는 사람을 보면 항상 부럽다. 행동이 아니라 마음을 얘기하는 것이다. 마음에 여유가 있는 사람은 외부와의 갈등이 있어도 갈대처럼 대응을 잘할 수 있다. 외부와의 갈등이 있을 때 자신은 꺾이지 않는다. 쓰러져도 다시 일어난다. 자기 회복능력이 정말 탁월하다. 필자는 외부와 갈등이 생겨 쓰러지면 잘 일어나지 못한다. 이미 이런 무력감에 학습되어 있어 그런 것 같다. 이 부분은 유년 시절, 학창 시절 영향도 있는 것 같다. 분명 성인이 돼서 잘 이겨내고, 강해진 줄 알았지만 전혀 아니었다 ㅎㅎ 정리하면 문제가 생겼을 때 회복탄력성이 좋지 못했다.
    • 갈등이 생겼을 때 외부에 도움을 제대로 청하지 않았다. 어차피 도움을 청해봤자, 얘기해 봤자 해결되는 것도 없고, 되려 이슈 인력으로 낙인이 되기 때문이다. 당사자와 얘기해도 해결되지 않는 문제를 제3자한테 얘기해서 해결이 될까? 이런 생각을 했기 때문이다.
    • 지속적인 갈등으로 인해 자존감(심) 다 하락했다. 내 성격이 원래 이랬나? 생각할 정도로 남 눈치를 보고, 내 자신을 계속 자책하는 모습이 있었다. 필자는 남에게 피해를 주기도/받기도 하기 싫어하는 사람인데, 계속 피해를 주는 사람이 됐기 때문이다. 
  • 환경의 문제
    • 도움 받을 수 있는 환경이 전혀 아니었다. 조직장은 파트장한테 업무와 인력 관리를 위임하였다. 파트장과 갈등은 계속됐기 때문에 필자는 고립의 연속이었다. 솔직히 할 말이 너-무 많다. 지금까지 업무를 진행하면서 억울한 것도, 불합리한 것도 정말 많았지만 결국 갈등을 해소하지 못했다. 애초에 이런 구조를 만든 조직장이나, 파트원이 제대로 일할 수 있는 환경을 제공하지 못한 파트장이나, 갈등을 해소하기 위해 주변에 적극적으로 도움을 구하지 못 한 본인이나 똑같다. 
    • 필자는 환경에 정말 취약한 동물이다. 아니 짐승이다. 환경을 조성하지 않으면 하지 않거나, 그 환경에 지배받는 / 영향을 제대로 받는 특징이 있다. 이를 장점으로 여태껏 활용했다. 공부를 해야 하기 때문에 집을 가지 않고 학교 도서관에 억지로 있거나, 일단 영어 공부를 해야 하니, 학원부터 등록하거나, 일단 환경에 나를 던져서 적응해 가는 식이다. 그리고 환경에 영향을 많이 받기 때문에 그 환경에서 벌어지는 모든 일을 학습하고, 모방을 한다. 지금까지의 생존방식이고 어떻게든 생존을 했다. 장점으로 잘 활용했던 것은 내가 환경을 바꾸거나, 내 자신을 던질 수 있었지만, 회사 환경은 그렇지 않았다.
  • 번외로 내 상황은 난국인데 조직의 비전 또한 공감이 되지 않았다.

다시 이직(회고 - 2)

"회고-1"의 이유로 이직한 것도 있지만, 평소에 관심 있던 조직에서 채용이 열린 것도 있다. 

 

만약 이직에 실패했으면 나는 바로 사표 내고 나올 예정이었다. 이미 와이프와 많이 얘기했고, 퇴사하고, 재충전하기로 마음먹었다. IT 이직 시장이 얼어붙었는데도, 그 마음을 먹었다. 

왜 퇴사 결심을 했을까? 심리가 굉장히 불안했다. 우울증 직전까지 간 것 같다(아니 이미 우울증이었을지도..). "저 사람이 나에 대해 안 좋은 생각을 하는 것 같다" 이런 생각과 휴일에 회사 메신저 알림이 오면 항상 놀라거나 집에 오면 유튜브만 쳐보다가 자기 일수였다. 왜 보냐고? 그냥 아무 생각도 하기 싫으니깐. 무력감에 지배됐으니깐. 무력감에 지배되기 때문에 나의 목표는 사라졌다. 아니 잊어버렸다. 그렇게 되니 독서/학습할 이유도 없고, 그냥 시간을 보냈다. 이 무력감은 불안감과 항상 동반됐고, 반강제로 하루 일과가 시작되는 듯한 느낌을 받았다. 심리 상담을 받아도 해결되는 것은 없었다 ㅎㅎ

 

그래도 다행히 이직은 성공했다. 계열 법인 이동은 잘 됐다. 

 

도망친 곳에, 낙원 없다. 필자는 지금도 이 말을 경계하고 있다. 이 꼴이 나지 않으려고 서서히 맨탈을 다시 잡고 있고, 목표도 다시 잘 다듬고 있다. 트라우마는 여전히 남아있어, 제 자신을 다듬기 위해 꽤 많은 시간을 사용하였다. 지금은 많이 좋아졌다. 

회고(회고 - 3)

많이 다쳤지만, 배운 것도 많다. 진짜 일을 하는 법을 배웠다. 왜와 이유를 항상 생각하고, 정말 이 방법이 좋을지? 최적의 판단을 하기 위해 노력하고 있다. 필자의 부족한 점을 인지하고 있기 때문에 이를 기반으로 어떤 목표를 잡아야 할지 갈피도 잡았다. 

아직 많이 부족하다. 지금도 일 하면서 이런 생각을 했겠지?(현재 팀의 일을 잘하는 사람이 있는데, 이 사람이라면 이렇게 생각할 수 있겠네? 혹은 이전 회사에 이 사람이라면 이렇게 업무 했을 때 왜 이렇게 했냐고 한 마디 했겠지?) 생각하며 일을 하고 있다. 

앞으로

앞으로의 목표는 다음과 같다..

다양한 사고가 있는 개발자

  • 다양한 사고가 있고 싶은 이유는 위의 배운 것을 실천하고 싶기 때문이다. 이를 위해서는 경험/기술뿐만 아니라 리더 혹은 기획자 같은 다른 차원/상위자의 시점 필요하다. 당장 생각나는 계획은 조직원 모방과 서적 학습이 있다.
  • 일 잘하는 조직원 모방을 위해서는 조직원의 이슈 코멘트, 행동, 작성 코드 등에 대해 탐구가 필요하다. 어떻게 탐구를 하면 좋을까? 탐구 방법 리스트업 후, 상대의 행적을 기록하고 평가하는 것이 좋을 것 같다. 그전에 나에 대한 객관화 지표도 만들어야 할 것 같다. 일단 모방하고 싶은 조직원은 1~2명 있다.
  • 서적 학습은 기획자 혹은 팀 리더의 사고를 간접적으로 알 수 있는 서적이 좋을 것 같다. 최근 기획 관련 서적을 완독 했는데, 기획의 주된 관점은 문제 정의를 75% 비중을 두고 진짜 문제를 찾기 위해 엄청난 노력을 한다는 것이다. 이와 같이 나의 사고력을 발전할 수 있는 서적을 찾는 것이 중요한 것 같다.
  • 마지막으로 나의 사고를 정리할 수 있는 능력이 필요하다. 내 사고를 구조화하여 적시에 효과적인 표현 및 효율적인 전달이 필요하다. 내 사고력을 어떻게 구조화할 수 있을지? 이는 아직 고민 중이다. 논증에 대한 서적도 보고, 구조적인 사고법을 어떻게 하는지 확인해보고 있다. 논증 서적은 보다 때려치웠는데... 계획을 다시 잡고 어떻게 구조적인 사고를 할지, 논증은 어떻게 업무에 녹일지 고민해 봐야겠다.

상대를 존중할 수 있는 사람

  • 나는 그 사람이 왜 열을 내며 일을 했는지 알고 있다. 그래도 그렇게 주변에 함부로 했으면 안 됐다. 사회는 뿌리는 대로 거두며, 인과 과는 돌고 돈다. 필자는 절대 그렇게 일을 하지 않을 것이다. 그렇게 하지 않아도 일은 진행되기 때문이다. 어떻게든 진행되는 것이 아닌 "좋게 / 잘" 진행될 수 있기 때문이다. 

기회를 줄 수 있는 사람

  • 스스로 의사소통, 의사결정할 수 있도록 기회를 줄 것이다. 모두에게 처음은 있고, 처음은 모두 서툴다. 당연한 것이다. 직접 경험해야지 다음에는 더 좋은 소통과 결정을 할 수 있다. 

갈등 회피

  • 필자는 갈등이 생길 때 절대 회피하는 성향이 아니다. 근데 회사는 달랐다. 다음에 이런 상황이 생기면 어떻게든 발악하고, 부딪칠 것이다. 이런 식으로 물러나는 것은 이번이 마지막이다. 

 

저작자표시 비영리 (새창열림)

'개발관련 > 회고' 카테고리의 다른 글

이직한 회사의 첫 출근(경력 개발자의 이직 시리즈-9)  (16) 2021.06.16
퇴사를 말하면서, 퇴사 준비(경력 개발자의 이직 시리즈-7)  (1) 2021.06.13
네이버 클라우드(구 NBP, 네이버 비즈니스 플랫폼) 면접 후기(경력 개발자의 이직 시리즈-6)  (48) 2021.06.11
카카오(카카오-또카오-마카오) 면접 후기(경력 개발자의 이직 시리즈-5)  (9) 2021.06.10
현대 오토에버 면접 후기(경력 개발자의 이직 시리즈-4)  (8) 2021.06.09
Posted by 동팡

[간단-책리뷰] 공부의 미래

일상/책 리뷰 2023. 5. 21. 16:30

게시글 날라가서 백업

 

초록... 

공부의 미래, 인문 서적 리뷰 첫 책으로 당선되었다. 이 책이 정말 높은 가치가 있어서 작성하기보다는 본인의 생각이 조금 바뀌어서 작성하였다. 지금 블로그 주제를 좀 더 확장하였다. 기존에는 개발과 관련된 사항만 기재하였지만, 내 일상의 생각, 인문서적 리뷰를 작성하기로 했다. 이유는 다음과 같다.

내 생각에 대해 V-Log를 남기기로 하였다. 먼저 생각을 글로 쓰고, 해당 내용을 기준으로 V-Log를 촬영하는 게 좋다고 생각한다. 
좋은 책을 꽤 봤던 것 같은데.. 정말 중요한 내용을 제외하고 다 기억이 안 난다... ㅠㅠㅠ "공부의 미래" 서적에서 필자가 읽었던 서적과 관련된 사항을 정말 많이 언급했는데... 간략하게 1 문단이라도 설명할 수 있으면 좋은데 그게 되지 않았다. 
독자 정
독서 일자
2023. 05
내용
현대 시대, 지식 습득의 방법이 어떻게 변했는지, 본인이 갖고 있는 지식의 가치가 어떻게 하락하는지
대학과 직업에서 지식의 가치관이 어떻게 변하고 있는지
효율/효과적으로 공부하기 위해서는 어떤 기초 능력이 필요한지, 어떤 마음가짐이 필요한지
대상 독자
요즘 시대에 어떻게 공부를 밀도 있게 할 수 있는지 방향을 알려주는 서적이다. 해당 서적 레퍼런스에서 또는 언급한 키워드를 토대로 심화 학습이 필요 
느낀 점
해당 서적은 네이버-Audioclip(오디오북)에서 처음 접하였다. 오디오 북에서 언급하는 1부 내용이 필자가 생각하는 가치관이 일치하였고, 저자가 설명하는 상황이 필자의 직장의 생태계와 너무 유사하였기 때문에 많이 흥미로웠다. 다만 거기까지였던 게 문제였다. 한 가지 내용 제외하고는 너무 예상했던 내용이었다.. 하하하.. ㅠㅠㅠ

 

[현대시대에서의 지식이란]

정보의 세계화로 인해 누구든지 고수준의 정보와 지식을 습득할 수 있다. 지식의 독점권이 희미해졌다. 지식을 얻기 위한 수단의 경계가 무너졌다. 고수준의 지식을 얻기 위해 더 이상 대학교에 가지 않아도 된다(그러나.. 고수준의 지식을 갖고 있는 인원은 대체로 고학력을 갖고 있고, 고학력을 갖고 있는 인원은 대체로 고수준의 지식을 갖고 있다 ㅋㅋㅋㅋ). 여기서 우리는 지식을 선별할 수 있는 능력만 있으면 된다. 잠깐..? 어떤 직업이라 상당히 유사하다. 개발자다... 지식은 인터넷 전역에 펼쳐있고, 해당 지식을 나누려고 안달 난 사람들이 많고, 대학교를 가지 않아도 컴퓨터공학, 소프트웨어 공학과 관련된 사항 그리고 개발하는 모든 방법을 "인터넷"으로 학습할 수 있다. 책에서 설명하는 이 상황이 필자의 상황을 얘기하는 것 같았고, 지식을 얻기 위한 수단의 경계가 무너짐으로써 제일 수혜 받은 직업이 개발자가 아닐까 생각이 들었다.

 

[브리태니커 vs 위키피디아]

브리태니커는 오프라인 백과사전의 최강자이며, 위키피디아는 누구나 수정할 수 있는 온라인 사전이다. 2005년 네이처 특집 기사에서 위의 사전들의 정확도를 과학 분야에 한해서 비교하였다. 결과는 당연 브리태니커의 승리, 브리태니커는 약 120건, 위키피디아는 약 160건 정도 잘못된 지식을 수록하였다. 우리의 시사점은 그다음이다. 위키피디아는 해당 오류들이 언급되자 수정되었다. 그러면 브리태니커는? 정확히 기억은 안 나지만.. 절판된다는 식으로 얘기하였다. 해당 내용을 토대로 위의 "현대시대에서의 지식이란"의 주장을 뒷받침할 수 있다. 

개발자 세계에서도 위키피디아와 비슷한 세계관이 존재한다. 오픈소스 소프트웨어이다. 예전의 오픈소스 소프트웨어는 안정성과 완성도에 대해 많은 의심을 하였지만, 지금은 상용 소프트웨어 그 이상의 수준을 보여주는.. 이제는 없으면 절대 안 될 존재가 되었다.  

 

 

이런 내용이 있고.. AI와 직업의 가소성을 소개하며, 1부에 제대로 낚여 책을 보게 되었다.

1부는 정말 흥미로운 주제를 얘기했다. 

그러나 2부, 3부는 이미 알고 있는 사항을 얘기하였다.

 

[공부에 필요한 요소]

해당 서적은 공부에 필요한 요소는 창의성, 비판적 사고력, 자기 통제력, 협업 능력, 메타인지를 설명하였다. 

신영준 박사님의 완벽한 공부법 서적으로 창의성, 자기 통제력, 메타인지에 대한 정보는 이미 알고 있는 정보였다. 협업 능력은 사회생활을 하면서 너무나 많이 필요한 능력으로 알고 있었다. 우리의 뇌 구조가 변해서 지식을 왜 얕게 습득하는지를 "생각하지 않는 사람들을" 서적을 통해 소개하였다(이 책 완전 추천). 서적에서 언급한 공부에 필요한 요소는 이미 인지하고 있는 사항이었고, 일부분은 실천하는 사항이다.

그러나 비판적 사고력은 어떻게 해야하는지, 숙달하기 위해서는 무엇을 해야하는지 잘 몰랐다. 해당 서적에서도 잘 설명해 주는데, 정확히 이해를 못 했다. 신영준 박사님의 완공 서적에서도 비판적 사고력을 언급하지만 필자는 제대로 이해를 제대로 못 했다.. 해당 서적에서 비판적 사고력에 대해 잘 얘기했는데 참조한 서적을 대여해서 읽어볼 예정이다. 공부에 필요한 요소에 대한 정보를 아직 습득하지 않은 독자는 해당 서적이 지표 역할을 할 것이다. 이 기점으로 어떤 책을 봐야 하는지, 어떤 능력을 키워야 하는지 이해를 하면 좋을 것 같다.

 

[향후 계획...] 

비판적 사고력 <- 이 주제를 생각하면서 필자의 어린 시절부터 지금까지 생각해 보았다. "나는 왜 이런 사고력 훈련을 하지 않았을까?/못 했을까?" 이런 생각을 더 한 이유는 우리 팀의 리더가 "생각", "고민", "비판적 사고력", "이유"를 제일 많이 언급한다. 일을 할 때 많은 고민과 생각을 많이 해야 하며, 뭘 (선택)하든 이유가 있어야 하고, 비판적인 관점에서 일을 바라보라고 하였다. 이 부분에 대해 고민을 하다 보니 서적의 "비판적 사고력" 항목이 더 눈에 띈 것 같다. 그래서 서적에서 참조한 "생각에 관한 생각" 서적을 볼 예정이다(근데 책이... 한 대 맞으면 즉사할 것 같은 전투력을 갖고 있네?;). 

 

현대시대에서 지식의 가치관이 변하고 있고, 습득하는 수단이 변하였다. 하지만 지식을 습득하기 위한 기초 요소는 예나 지금이나 같다는 것을 얘기해 줬다. 

 

마무리
이 짓을 하는 것도(인문 서적 리뷰) 공부에 한 축이다.. ㅋㅋㅋㅋ

뇌 관련 서적에서 얘기하기를... 단기 기억을 장기 기억으로 전환하기 위한 제일 좋은 방법은 해당 주제로 깊게 생각하고 토론을 하는 것이다. 필자가 하는 것은 깊은 생각은 아니지만 최소한 본인과의 토론은 아닐까 생각한다. 

저작자표시 비영리 (새창열림)
Posted by 동팡

[간단-책리뷰]테스트 주도 개발(By Example)

개발관련/책 리뷰 2023. 5. 21. 12:11

5월에 끝까지 본 기술 서적이 1권이라니... 이것저것 보다가 겨우 하나 다 봤다.. 

독자 정보

  • 5~10년 차 개발자

독서 일자

  • 2022. 05

내용

  • 실제 TDD를 어떻게 하는지 예제와 함께 설명
  • TDD에 대한 기술적인 설명보다 TDD 개념, 더 좋은 TDD 방법 등을 설명 

별점

  • 4.8 이상: 철학이 존재함, 추천++

대상 독자

  • 개발자

선행 도서

  • -

관련 도서(미디어)

  • [서적] 단위 테스트(생산성과 품질을 위한 단위 테스트 원칙과 패턴)
  • [인강] 이규원의 현실 세상의 TDD : 안정감을 주는 코드 설계 방법

느낀 점

 해당 방법론은 1990년 후반 켄트 백의 익스트림 프로그래밍의 일부이다(근데 왜 난 20년이 지나 공부하는가 ㅡㅡ ㅋㅋㅋㅋㅋ). 우리의 프로젝트에 TDD 방법론 적용은 오버 엔지니어링이라고 생각할 수 있지만, 단위 테스트 코드의 작성을 습관화하는 게 좋지 않을까 생각한다. 

 

해당 서적에서도 TDD 인강에서도 TDD는 불안, 두려움을 지루함으로 바꾸는 방법론이라고 다들 얘기한다. 필자 또한 전적으로 동의한다. 서비스 운영 및 배포를 하면 장애가 항상 수반하는데, 배포했을 때 "과연 장애가 없을까..?", "제대로 배포가 됐을까?"와 같은 불안을 최소화 시켜준다. 이와 같은 작업을 반복하면서 안전한 서비스를 만드는 것이다. TDD가 100% 모든 테스트를 대신하는 것이 아니며, 100% 안전한 서비스를 제공하는 수단이 아니지만 많은 비중을 차지하는 것은 서적과 필자의 경험으로 얘기할 수 있다. TDD에 회의감을 가지는 많은 개발자가 있지만 적당선의 타협을 하면 개발 리소스 감축할 수 있는 효과를 볼 수 있다. 

시간에 따른 변경 비용

간략하게 요약하면 기능 변경에 따른 회귀 테스트를 통해 회귀 버그를 최소화할 수 있다. 회귀 버그로 인해 개발 리소스 비용 증가는 모두가 아는 사실이다(저 보라색 비용을 다들 싫어하더라.. 그래프에는 보라색이 작게 표시 되었지만 실제는 더 크다.) 서스테이닝이 없는 단발성 프로젝트는 엄격한 테스트는 굳이 필요 없지만, 서스테이닝 요하는 서비스는 필수라고 생각한다. 현재 프로젝트는 통합 테스트, 기능 테스트만 제대로 적용됐다. 이 두 개의 테스트로도 효과는 많이 보고 있지만 단위 테스트를 "제대로" 적용하면 더할나위 없다고 본다. 몇 개 로직에 단위 테스트를 적용하여 효과를 봤기 때문에 확언할 수 있다. 

 

해당 서적에서 다독 부분은 다음과 같다.

  • 저자의 글
  • 25장 테스트 격리성 설명
  • 27장 테스트 패턴
  • 32장 TDD 마스터(+)

 

저작자표시 비영리 (새창열림)

'개발관련 > 책 리뷰' 카테고리의 다른 글

[간단-책 리뷰] 당신의 생각을 정리해드립니다.  (0) 2025.05.17
[간단-책리뷰] 내 문장이 그렇게 이상한가요?  (0) 2025.05.17
[간단-책리뷰]나는 주니어 개발자다.  (0) 2022.06.24
[간단-책리뷰]오늘부터 개발자(비전공자를 위한 개발자 취업 입문 개론)  (0) 2022.06.24
[간단-책리뷰]프로젝트 성패를 결정짓는 데이터 모델링 이야기  (0) 2022.06.24
Posted by 동팡

[간단-책리뷰]나는 주니어 개발자다.

개발관련/책 리뷰 2022. 6. 24. 01:02

독자 정보

  • 5 ~ 10년 차 개발자

 

독서 일자

  • 2022. 06

 

내용

  • 평범한 신입 개발자들의 좌충우돌 성장기 
  • 아직도 성장하는 개발자의 회고록

 

별점

  • 4.5/5.0(많이 배울 수 있음, 추천++)
  • 객관적으로는 3.8이지만 나사 몇개 빠진 필자의 주관에서는 4.5

 

대상 독자

  • 주니어 개발자
  • 미드레벨, 시니어 개발자(개구리, 당신들도 예외는 없습니다.)

 

선행 도서

  • -

 

관련 도서

  • 오늘부터 개발자
  • 오늘도, 우리는 코딩을 합니다

 

느낀 점

보통의 개발자, 자신들의 이야기이다. 그들의 열정과 간절함을 느낄 수 있었다. 비전공자이지만 자신의 특장점을 잘 살려서 해외에서 개발자가 된 친구, 전략적으로 산업체에서 개발자로 일한 친구, 관련 학과지만 많은 고민 끝에 개발자가된 친구 등.. 해당 친구들의 발자취를 간접적으로 볼 수 있어서 영광이었다. 

 

성장하고 싶은 주니어 개발자, 성장하고 있는 주니어 개발자, 성장했던 시니어 개발자, 모두 이 책을 보면 좋겠다. 올챙이는 다른 올챙이를 보고 간접경험을 충분히할 수 있고, 개구리는 자신의 올챙이 시절 치열함과 열정을 다시 불태울 수 있다. 필자는 크고있는 올챙이지만 어린 올챙이 시절의 간절함을 다시 회고할 수 있는 좋은 기회였다.

 

필자는 5년 계획 했던 목표를 이루고 마음에 와 닿지 않는 10년 목표를 위해 1년을 허비했다. 말마따나 목표를 잘못 잡았으니 목표를 위해 1년동안 움직이지도 않았다(솔직히 정신없기는 했지만 핑계 ㅅㄱ링). 이 책을 보면서 필자는 목표를 다시 잡고 세부 계획을 좀 더 정리하고자 한다. 솔직히 고맙다. 몇개 빠진 나사들을 다시 줍는 시간이었다. 

 

 

저작자표시 비영리 (새창열림)

'개발관련 > 책 리뷰' 카테고리의 다른 글

[간단-책리뷰] 내 문장이 그렇게 이상한가요?  (0) 2025.05.17
[간단-책리뷰]테스트 주도 개발(By Example)  (0) 2023.05.21
[간단-책리뷰]오늘부터 개발자(비전공자를 위한 개발자 취업 입문 개론)  (0) 2022.06.24
[간단-책리뷰]프로젝트 성패를 결정짓는 데이터 모델링 이야기  (0) 2022.06.24
[간단-책리뷰]개발자의 글쓰기  (0) 2021.07.12
Posted by 동팡

[간단-책리뷰]오늘부터 개발자(비전공자를 위한 개발자 취업 입문 개론)

개발관련/책 리뷰 2022. 6. 24. 00:45

독자 정보

  • 5~10년 차 개발자

 

독서 일자

  • 2022. 06

 

내용

  • 비전공자 입장에서 개발자가 되기 위해 무엇을 해야하는지 가이드

 

별점

  • 3.8/5.0(가볍게 읽기 좋음, 추천)

 

대상 독자

  • 개발자를 준비하는 비전공자

 

선행 도서

  • 없음

 

관련 도서

  • 나는 주니어 개발자다

 

느낀 점

비전공자가 멘토도 정보도 없는 상태에서 갈피를 잡을 때 읽으면 좋다고 생각한다. 개발자가 되기 위해 수많은 행위들을 추상적으로 잘 설명한다. 추상적? 왜 추상적이라고 표현했을까? 해당 책의 저자는 방향성 까지만 제공하고 있기 때문이다. 최소한의 필요 정보와 방향성만 제공했으면 충분하다. 독자는 책에서 가이드한 정보를 구체화하고 구체화한 것을 토대로 개발자 준비를 하면된다. 막연하게 개발자가 되고 싶다면 해당 서적을 읽어보는 것을 추천한다(개발자의 처절한 현실도 나름 얘기해준다;; ㅋㅋ?).

 

해당 서적은 포트폴리오 강의를 준비하면서 전지적 취준/비전공자 입장을 헤아리기 위해 선택한 수단 중 한개이다(다른 하나는 비전공자 신입, 실무자 인터뷰). 솔직히 많이 도움이 됐다. 비전공자 입장에서는 진짜 아무 갈피가 없고 시야가 정말 좁을 수 밖에 없겠다는 생각을 많이 했다. 비전공자를 폄하하는게 아니라 현실적으로 제한된 정보를 토대로 개발자가 되기 위해 노력을 해야한다는 전제 자체가 쉽지는 않아보였다. 그래도 이러한 서적 하나하나가 독자들한테 많은 힘이 되는 것 같다.

저작자표시 비영리 (새창열림)

'개발관련 > 책 리뷰' 카테고리의 다른 글

[간단-책리뷰]테스트 주도 개발(By Example)  (0) 2023.05.21
[간단-책리뷰]나는 주니어 개발자다.  (0) 2022.06.24
[간단-책리뷰]프로젝트 성패를 결정짓는 데이터 모델링 이야기  (0) 2022.06.24
[간단-책리뷰]개발자의 글쓰기  (0) 2021.07.12
[간단-책리뷰]개발자를 위한 글쓰기 가이드  (0) 2021.06.29
Posted by 동팡

[간단-책리뷰]프로젝트 성패를 결정짓는 데이터 모델링 이야기

개발관련/책 리뷰 2022. 6. 24. 00:27

오랜만에 글 쓰니까 어색하네..;;

 

독자 정보

  • 5 ~ 10년 차 개발자

 

독서 일자

  • 2022. 02

 

내용

  • 데이터 모델링의 전반적인 개요/배경 설명
  • 데이터 모델링의 주체/대상/행위 등과 어카운트 개념을 설명 
  • ER 서브타입, 식별/비식별자 기준 설명
  • 확장성 있는 모델링 설명(이 모델링 별로야...)

 

별점

  • 4.0/5.0(개발자 입장에서 몰랐던 모델링 개념과 스킬을 소개, 짜임새와 스토리가 있음, 추천+)

 

대상 독자

  • 주니어 개발자
  • DB 모델링 경험을 최소 한 번 이상 한 개발자

 

선행 도서

  • DB 모델링 관련 서적 또는 관련 경험을 한번씩 해보는 것을 추천

 

관련 도서

  • -

 

느낀 점

개발자 입장에서 간접적으로 모델링을 경험할 수 있었다. "현재 사용하고 있는 제품의 DB 모델링은 충분한가?", "과거에 했던 모델링의 필요 개선점?", "개선 했을 때 어떤 점을 더 고려하면 좋을까"와 같은 고민으로 해당 서적을 읽었다. 추상적으로만 인지하고 있던 다음의 사항을 명시적으로 이해할 수 있는 기회가 있었다.

  • 주체/대상/행위: 사전에 모델링할 때 인터뷰를 하거나 분석하는 행위들을 객관적으로 얘기를 못 했습니다.  필자가 하는 행위는 모델링할 때 업무 시스템의 "주체/대상/행위"를 추출하는 행위였다.
  • ER 서브타입: 보통의 ER 서브타입을 객체 지향의 Sub/Super로 대강 이해했지만 통합, 분리, 혼합이라는 것을 알게 되었다. 이 부분은 더 공부가 필요하다.
  • 어카운트 개념: 마스터 데이터, 행위 데이터를 동일한 성격으로 묶는 행위이다. 모델링에 어카운트가 있으면 모델링의 유연성을 제공할 수 있고 업무에서는 유연한 엔티티로 한층 더 유연하게 문제를 해결할 수 있다. 우리가 데이터 모델링할 때 공통적인 것은 묶고 엔티티 간의 연관관계를 맺는다. 연관관계를 연결할 때 징검다리가 필요할 때가 있다. 이때 어카운트가 징검다리 역할을 해준다.

개발자는 한번쯤 읽어보면 정말 좋은 책이라고 생각한다.

저작자표시 비영리 (새창열림)

'개발관련 > 책 리뷰' 카테고리의 다른 글

[간단-책리뷰]테스트 주도 개발(By Example)  (0) 2023.05.21
[간단-책리뷰]나는 주니어 개발자다.  (0) 2022.06.24
[간단-책리뷰]오늘부터 개발자(비전공자를 위한 개발자 취업 입문 개론)  (0) 2022.06.24
[간단-책리뷰]개발자의 글쓰기  (0) 2021.07.12
[간단-책리뷰]개발자를 위한 글쓰기 가이드  (0) 2021.06.29
Posted by 동팡

MySQL insert, Lock wait timeout exceeded 트러블슈팅

개발관련/삽질 2022. 2. 22. 00:52

MySQL 정보

  • 버전: 5.7
  • 트랜잭션 격리 수준: Default(repeatable read)

장애 현상

  • A 트랜잭션에서 T1 테이블에 delete 쿼리 진행할 때 B 트랜잭션에서 T1 테이블에 insert 쿼리가 lock wait 발생

원인-1(첫 번째 분석)

  • delete 쿼리의 실행 계획에서 풀 테이블 스캔 발생
  • Where 절이 pk로 구성되어 있어도 옵티마이저는 풀 테이블 스캔이 유리하다고 판단(풀 테이블 스캔은 멀티 블록 스캔이고 인덱스는 싱글 블록 스캔이니 일정 분기점 이상 부터는 인덱스 스캔보다는 풀테이블 스캔이 유리함)
  • MySQL에서 로우에 락이 잡히는 기준은 스캐닝된 인덱스 레코드[1]

위의 분석으로 알 수 있는 사항은 다음과 같다.

  • T1 테이블의 모든 로우는 락이 잡혔으며
  • 락이 잡혀있는 동안 다른 세션(트랜잭션)에서 T1 테이블의 모든 로우는 delete/update 불가능하다.

근데 insert는 왜 안돼??? 격리 수준을 read committed 했을 때는 insert가 잘 된다.

원인-2(두 번째 분석)

  • 현재 MySQL의 격리 수준은 repeatable read이다.
  • delete 쿼리를 진행할 때 Next-Key-Lock이 잡혔으며[2],
  • Repeatable read에서 Next-key-lock으로 인해 positive infinity 레코드 까지 락이 걸렸고,
  • 해당 락으로 인해 insert에 lock wait이 발생한다.
  • 위의 락으로 본의 아니게 팬텀 로우를 방지한다

기타 특이 사항

  • delete할 때 풀 테이블 스캔이 아닌 유니크 스캔을 할 때 insert에 lock wait이 발생하지 않는다.
  • ㄴ유니크 스캔을 하면 lock wait 발생하지 않는게 웃기지 않나?? Repeatable read에서 팬텀 로우를 막아준다는데 안 막아준다. ㅈㄴ 어불성설이다ㅋㅋㅋㅋㅋㅋㅋㅋ(아 근데 이 부분에서 lock wait 발생하면 동시성 ㅈ됨)
  • read committed 격리 수준일 때 되는 이유는 단순하다. gap lock, next-key-lock이 비활성화 되어 있기 때문이다.
  • 반대 상황도 Lock이 발생한다. 1) insert 2) delete 풀 테이블 스캔

기타 주의 사항

  • 인덱스 조건없이 쿼리하는 경우 테이블 락 발생
  • 2개 이상의 세션에서 동일한 인덱스 키를 사용하여 다른 행의 레코드에 엑세스할 때 락 충돌할 수 있다(동일한 스캔 범위가 있는 경우 lock wait 발생)
  • 인덱스 효율이 좋지 않으면 락 범위가 넓어진다.
  • 아무리 PK/유니크 인덱스를 사용하여도 옵티마이저 판단하에 풀 테이블 스캔으로 테이블 락이 발생할 수 있다(지금 상황).

재연

1. 테이블 생성

mysql> create table test_tt(t1 int primary key auto_increment, t2 int, t3 int); 
Query OK, 0 rows affected (0.09 sec)

2. 테스트 데이터 삽입/조회

mysql> insert into test_tt(t2, t3) values (1,2); Query OK, 1 row affected (0.00 sec) 
... 

mysql> select * from test_tt;
+----+------+------+
| t1 | t2   | t3   |
+----+------+------+
|  1 |    1 |    2 |
|  2 |    1 |    2 |
|  4 |    1 |    2 |
| 31 |    1 |    2 |
| 32 |    1 |    2 |
| 33 |    1 |    2 |
| 34 |    1 |    2 |
| 35 |    1 |    2 |
| 36 |    1 |    2 |
| 37 |    1 |    2 |
| 38 |    1 |    2 |
| 39 |    1 |    2 |
| 40 |    1 |    2 |
| 41 |    1 |    2 |
| 42 |    1 |    2 |
| 43 |    1 |    2 |
| 44 |    1 |    2 |
+----+------+------+
17 rows in set (0.00 sec)

3. 삭제 실행(세션 1, 트랜잭션 시작, 삭제실행)

mysql> explain delete from test_tt where t1 in(31,32,33,34);
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table   | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------------+
|  1 | DELETE      | test_tt | NULL       | ALL  | PRIMARY       | NULL | NULL    | NULL |    4 |   100.00 | Using where |
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------------+
1 row in set (0.00 sec)

4. 삽입 실행(세션2, 트랜잭션 시작)

mysql> insert into test_tt(t2, t3) values (1,2);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

5. DB 락 현황 조회 결과

mysql> select * from information_schema.innodb_locks;
+--------------+-------------+-----------+-----------+-------------------+------------+------------+-----------+----------+------------------------+
| lock_id      | lock_trx_id | lock_mode | lock_type | lock_table        | lock_index | lock_space | lock_page | lock_rec | lock_data              |
+--------------+-------------+-----------+-----------+-------------------+------------+------------+-----------+----------+------------------------+
| 10586:43:3:1 | 10586       | X         | RECORD    | `mysql`.`test_tt` | PRIMARY    |         43 |         3 |        1 | supremum pseudo-record |
| 10581:43:3:1 | 10581       | X         | RECORD    | `mysql`.`test_tt` | PRIMARY    |         43 |         3 |        1 | supremum pseudo-record |
+--------------+-------------+-----------+-----------+-------------------+------------+------------+-----------+----------+------------------------+
2 rows in set, 1 warning (0.00 sec)
 
mysql> select * from information_schema.innodb_lock_waits;
+-------------------+-------------------+-----------------+------------------+
| requesting_trx_id | requested_lock_id | blocking_trx_id | blocking_lock_id |
+-------------------+-------------------+-----------------+------------------+
| 10586             | 10586:43:3:1      | 10581           | 10581:43:3:1     |
+-------------------+-------------------+-----------------+------------------+
1 row in set, 1 warning (0.00 sec)

 

참고문헌

  • [1]MySQL Doc, locking read
  • [2]MySQL Doc, InnoDB Locking
  • row lock 관련 아티클
  • MySQL Doc,Transaction Isolation Levels, read committed 관련
저작자표시 비영리 (새창열림)

'개발관련 > 삽질' 카테고리의 다른 글

Vanilla(Pure)-JavaSciprt 게시판 페이징 - 1(기본/응용)  (0) 2021.07.27
hashicorp사의 Vault(볼트) - Tutorial-Docker - 4  (0) 2021.07.06
hashicorp사의 Vault(볼트) - Tutorial-Real(With-REST-API) - 3  (0) 2021.07.05
hashicorp사의 Vault(볼트) - Tutorial-Dev(With-커맨드) - 2  (0) 2021.07.01
hashicorp사의 Vault(볼트) - 개요 - 1  (0) 2021.06.29
Posted by 동팡
이전페이지 다음페이지
블로그 이미지

https://github.com/ehdvudee

by 동팡

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

  • Spring
  • 책리뷰
  • Secret Sharing 이론
  • 하시콥 볼트
  • 개발자 책리뷰
  • java
  • Hashicorp
  • 네이버 클라우드
  • 이직 정보 공유
  • 네이버 클라우드 이직
  • vault tutorial
  • 개발자 글쓰기 책
  • 경력 채용
  • Shamir Secret Sharing
  • 간단리뷰
  • vault
  • 네이버 비즈니스 플랫폼
  • 글쓰기 가이드
  • vault 개요
  • LoRaWA
  • Secret Sharing
  • NBP
  • 이직 느낀점
  • Thread-safe
  • 개발자 이직
  • What is Vault
  • 네이버 클라우드 개발자 면접
  • 볼트란
  • 자바
  • 개발자 준비

글 보관함

«   2026/01   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

링크

카테고리

메모장 (73)
개발관련 (71)
삽질 (26)
(과거)메모 (27)
강의 (0)
회고 (9)
책 리뷰 (9)
블로그 관리 글(비공개) (0)
일상 (2)
기타 (0)
책 리뷰 (1)
회고 (0)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
동팡's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

메모장

https://github.com/ehdvudee

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 메모장 (73)
    • 개발관련 (71)
      • 삽질 (26)
      • (과거)메모 (27)
      • 강의 (0)
      • 회고 (9)
      • 책 리뷰 (9)
    • 블로그 관리 글(비공개) (0)
    • 일상 (2)
      • 기타 (0)
      • 책 리뷰 (1)
      • 회고 (0)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바