MINIWIKI
CareerSideProjectBook&Study
  • ⚡README
  • 😃ME
    • Review
      • 2025 OKR & 회고 - 회사 없이도 먹고살 수 있는 상태가 된다
        • 2025년 19주차
        • 2025년 18주차
        • 2025년 17주차
        • 소설쓰기의 쓸모
        • 2025년 15주차
        • 2025년 14주차
        • 요즘 회사생활
        • 첫 페이지 작성!
        • 큰 코 다쳤다
        • 오랜만에 좋았던 하루
        • 악순환과 반복실패
        • 2025년 12주차
        • 2025년 11주차
        • 2025년 3월 6일
        • 2025년 3월 4일
        • 2025년 3월 1일
        • 2025년 2월 회고
        • 2025년 1-2월 책, 영화, 음악
        • 2025년 1-2월 회고 (PM)
        • 2025년 1-2월 회고 (콘제품)
          • (Merged) 2025 비즈니스
        • 2025년 1-2월 회고 (삶/사람)
        • 2025년 1-2월 회고 (기본)
        • (25.02) 고객 피드백 받기
        • 다시 전략 수정
        • 머리 속 복잡한 것들 끄적끄적
        • 변하지 않는 핵심 철학
        • 개별화 능력을 이용하는 방법
        • 파고들기
        • 예술가와 사업가
        • 강점
        • PM으로서의 전문성
        • 부동시
        • 이게 다 무슨 소용인가
        • 내가 가장 잘 전할 수 있는 메시지
        • 연말인사 타이밍
        • Attitude는 옷부터
        • 다시 시작
      • 2024 회고
        • 2024년 12월 4주차 (52/52)
        • 원한다고 생각했던 것들
        • 2024년 12월 3주차 (51/52)
        • 회사 vs. 퇴사
        • 2024년 12월 2주차 (50/52)
        • 2024년 11월 4주차 (47/52)
        • 2024년 11월 3주차 (46/52)
        • 2024년 11월 1주차 (44/52)
        • 혓바늘
        • 2024년 10월 3주차 (42/52)
        • 그냥, 요즘하고 있는 생각들
        • 2024년 10월 1주차 (40/52)
        • 2024년 9월 4주차 (39/52)
        • 2024년 9월 3주차 (38/52)
        • 2024년 9월 2주차 (37/52)
        • 2024년 9월 1주차 (36/52)
        • 2024년 8월 4주차 (35/52)
        • 잃어버린 보물창고
        • 분기별 프로젝트
        • 강점검사
        • 글쓰기
        • 이상적인 하루
        • 나와 아프리카
        • 한 때 나에게 힘이되었던 문장들
      • 2023 회고
        • 2023년 12월 5주차
        • 2023년 12월 4주차
        • 2023년 12월 3주차
        • 2023년 12월 2주차
        • 2023년 12월 3일
        • 2023년 12월 1주차
        • 2023년 11월 29일
        • 2023년 11월 28일
        • 2023년 11월 27일
        • 2023년 11월 18일
        • 2023년 11월 15일
        • 2023년 11월 12일
        • 2023년 11월 11일
        • 2023년 11월 1주차
        • 2023년 10월 3주차
        • 2023년 9월 4주차
        • 2023년 9월 3주차
        • 2023년 9월 2주차
        • 2023년 9월 1주차
        • 2023년 8월 4주차
        • 2023년 8월 2주차
        • 2023년 8월 1주차
        • 2023년 7월 4주차
        • 2023년 7월 3주차
        • 2023년 7월 2주차
        • 2023년 상반기 회고
        • 나태하고 욕심많은 인간은 어떻게 살아야 하나
        • 책 <어떻게 살아야 하는가>
        • 책 <당신은 결국 무엇이든 해내는 사람>
        • 복잡계를 살아가는 단순한 사람
        • 책 <모든것이 되는법>
        • 글로 신뢰를 얻었던 경험들
        • 기획은 나를 찾아가는 과정
        • 나는 왜 살아가는가
        • 장항준 감독으로부터 배우는 "삶을 대하는 자세"
        • 개발자가 말하는 감정에도 분석이 필요한 이유
      • 2022년 회고
        • problem map 작성하기
        • 삶에서 내가 해결하고 싶은 문제 (2)
        • 삶에서 내가 해결하고 싶은 문제 (1)
        • <삶의 문제> 지도 다시 꺼내보기
        • 지도 위의 29살
        • 매번 시간계획을 망치는 MBTI 'P형 인간'을 위한 5단계 인생관리법
        • 당신은 왜 프로그래밍을 공부하는가?
        • 아무 것도 아닌 내가 글을 쓰는 이유
        • 책 <여행의 이유>
        • 책 <붕대감기>
      • 2021년 회고
    • Career
      • [미리캔버스] AI 제품 PM
        • 선택과 집중
        • 어쩌면 내가 틀릴 수도 있다는 생각
        • 뾰족한 사람들과의 협업
        • AI기능 PPT로 온보딩
        • AI 제품에서 가장 중요한 것
      • [미리캔버스] 앱 PM
      • [미리캔버스] 소상공인 제품 PM
      • [미리캔버스] 2.0 PM
      • [홀로스탠딩] 백엔드 개발
      • [청년5.5] 안드로이드 개발
      • [가축대출사업] NGO Project PM
    • Insight
    • Interview
    • Public Writing
  • SIDE PROJECT
    • [Youtube] 메이킹필름
      • [Product] 청춘집 프로젝트
        • (v24.11) 청춘집 JTBD
          • (구) 청춘집 실행계획
          • (구) 플레이리스트 기획
            • 데이식스 전곡 타임라인
            • 챕터 구성
        • (v25.01) 청춘집 JTBD
          • 아이돌 굿즈 시장 조사 (공식)
          • 아이돌 굿즈 시장 조사 (비공식)
        • 제작 준비
          • 레퍼런스 - 오프라인 시집
          • a5 책 만들기
    • [Youtube] 마포구타자기
      • [mptw] JTBD
        • IKIGAI
      • [mptw] 채널 설정
        • 채널 이름 후보군
      • 시리즈 [읽는음악]
        • [읽는음악] 백로그
          • 노래 가사 콘텐츠 레퍼런스
        • ep1. 파노라마 - 이찬혁
          • 이찬혁 <ERROR>
        • ep2. 마지막 인사 (feat. 청하) - 이찬혁
        • ep3. 나의 바다에게 - 도영
        • ep4. Dattom - 백예린
        • ep5. REBEL HEART - IVE
        • ep6. Either way - IVE
        • ep7. 너와의 모든 지금 - 재쓰비(JAESSBEE)
        • ep8. 예뻤어 - DAY6
        • 6주차. 데이식스 시리즈
    • [IT] 공적인사적모임 플랫폼
      • 1. 우리 조직의 얼굴을 만들자
      • 2. 내 생에 첫 기획서 만들기 (feat. QA Driven Development)
    • [Meet] 공적인사적모임
    • [Youtube] 이상한나라의 개발자할무니
    • [Study] Disquiet PM 스터디 쿨피스
    • [IT] 서울 빵 맛집 잘알 테스트
    • [Meet] 얼리버드 모닝클럽
      • 홍보를 곁들인 2주일 운영후기
  • 잡학사전
    • 와인 원데이 클래스
    • 소설쓰기
      • <책> 소설쓰기의 모든 것 1 - 플롯과 구조
      • 유튜브 - 소설 쓰는 법
      • 강의들
      • 작가가 되려면 어떻게 해야해
    • AI
      • 생성형 AI
    • ComfyUI
      • Stable Diffusion
      • ComfyUI 준비, 설치, 설정
      • Module 구조에 대해 이해하기
      • ComfyUI
      • Core Node
    • 작사
      • 작사가 되는 법
    • 유튜브
      • 유튜버 스토리님의 부캐 성장기
      • 주언규 유튜브 초보편 (클래스101)
      • 주언규 유튜브 왕초보 편
    • 경제
      • 연금저축펀드
    • ChatGPT
    • 크롤링
      • Automatio
      • Octoparse
    • 노코드
      • 북마크 & 노코드 서비스 목록
  • PRODUCT&BUSINESS
    • Service Planning/Analysis
      • 브런치시리즈 <개발보단 고객개발>
      • baemin mart
        • 1. 시작
        • 2. 우아한형제들 & 배민상회
        • 3-1. [인터뷰] 포항에서 치킨집을 운영하시는 최사장님
        • 3-2. [인터뷰] 부산에서 족발 프렌차이즈를 운영하시는 이사장님
        • 4. <아프니까 사장이다> 커뮤니티 데이터 분석
        • 5. 문제정의 & 개선 가설
        • 6. 결론 - 역기획서
      • careerly
      • meetme
      • 배달의 민족 역기획 사례
      • 당근마켓 역기획 사례
      • 도그냥 님이 말하는 진짜 역기획
      • 도그냥의 역기획 스터디법
      • 책 <현업 기획자 도그냥의 서비스 기획 스쿨>
      • 기획서 작성하기
    • Business/Growth
      • Unsexy Business 뉴스레터에서 얻는 인사이트
      • 책 <원씽>
      • 책 <아프리카 스타트업>
      • 책 <유난한 도전>
      • 책 <함께자라기>
      • 책 <나는 돈 없어도 사업을 한다>
      • 책 <나는 장사의 신 은현장이다>
      • 책 <왜 사업하는가>
      • 책 <왜 일하는가>
      • 이제는 피칭도 유튜브로
      • 세컨드 브레인이 필요한 이유
      • 책 <타이탄의 도구들>
      • 책 <역행자>
        • <역행자> 역행자의 7단계 모델 복습
        • <역행자> 운명을 거스르는 역행자의 7단계 모델
      • 책 <월급쟁이로 시작한 38살 그녀는 어떻게 30억을 벌어 파이어족이 되었을까?>
      • 책 <파리에서 도시락을 파는 여자>
      • 책 <존리의 금융문맹탈출>
      • 책 <돈의 감각을 길러주는 경제 지식 첫걸음>
        • 금리
        • 환율
        • 주식
        • 채권
        • 부동산
        • 연금
        • 경제정책
        • 규제
        • 경제위기
    • Product-Market Fit
      • 브런치 북 <개발보단 고객 개발>
      • 책 <아이디어 불패의 법칙>
      • 고이장례연구소
      • 글쓰기로 PMF 검증하기
      • 연대 송도 캠퍼스의 40%가 사용한 서비스
      • 어웨이크코퍼레이션의 김민준 님
      • 드로우 마이 브랜드
      • 노코드로 PMF 찾는 방법
    • UI/UX
      • UX Writing Workshop
        • 4. 고객과의 관계형성 - 차별점 강화
        • 3. 비즈니스 임팩트를 만드는 글쓰기
        • 2. 후킹한 문장으로 고객 행동 이끌기
        • 1. 쉽고 정확한 문장으로 문제해결
        • What is UX Writing?
        • Reference
      • UX/UI 관련 유용한 사이트 모음
    • PM/PO
      • 책 <프로덕트 매니지먼트>
      • 책 <인스파이어드>
      • PM Wiki
      • 당신과 팀을 성장시킬 PM 직무가이드
      • PO 미신, 파랑새를 찾아서 - CPO 김용훈
      • 개발자가 생각하는 좋은 PM 나쁜 PM
      • 프로덕트 매니저는 뭐하는 사람인가
      • 토스 리더가 말하는 PO가 꼭 알아야할 개념 (2)
      • 토스 리더가 말하는 PO가 꼭 알아야할 개념 (1)
      • 책 <조직을 성공으로 이끄는 프로덕트 오너>
        • <프로덕트 오너> PO의 시간관리법
        • <프로덕트 오너> PO가 데이터 기반으로 일할 수 밖에 없는 이유
  • DATA
    • Database
      • 이 위키를 만드는데 참고한 자료들
      • 데이터 기반 의사결정
      • 데이터베이스의 종류
      • 트랜잭션과 무결성
      • 트랜잭션, 커밋, 롤백, 트랜잭션 전파
      • ERD, entity relationship diagram
      • 기본 3 - 관계, 키
      • 기본 2 - 필드, 레코드, 타입
      • 기본 1 - 엔티티, 릴레이션, 속성, 도메인
    • SQL
      • Sub Query
      • JOIN
      • 데이터 정렬셋과 유니코드
      • 자료형
      • DDL, DML
      • SELECT
      • SQL
    • MySQL
      • MSQL to MySQL Data Migration
      • MySQL Server 다운로드, 로그인
      • helpful commands
      • 문자열 자르기 SUBSTR(column, startIdx, length)
      • 특정 값을 ORDER BY 특정 값 우선 정렬 하기 (ORDER BY FIELD)
      • 이것이 MySQL이다
    • H2
      • ‼️h2 in-memory-db Table not found (this database is empty) 해결방법
  • Dev-General
    • Webmark
    • Open Source
      • 나의 첫 opensource contribution 경험기
    • Dev-Insight
      • Event
        • YOUTHCON 2022
        • INFCON 2022
      • 책 <누워서 읽는 알고리즘>
      • 책 <나는 LINE 개발자입니다>
      • 서비스에 대해 개발자가 가져야할 생각들
      • AI 시대에서 결국 살아남는 것
      • AI 시대에 개발자가 살아남는 방법
      • 주니어를 넘어서, 성장하는 개발자의 길 (인프런)
      • 아마추어와 프로의 차이
      • 개발자의 개발공부에 대하여
      • 서비스에 대해 개발자가 가져야할 생각들
      • 좋은 개발자와 인맥을 만든 노하우
      • 개발자 취업기/이직기 모음
        • 라인게임즈 백엔드 개발자 경선님
        • OKKY 미니세미나 <비전공 학원출신 SI개발자, 유명스타트업 들어간.ssul> 참석 후기
        • 비전공자에서 2억받는 아마존 엔지니어가 되기까지
        • IT 대기업 100% 합격하는 방법
  • 🏗️computer science
    • Algorithm & Data Structure
      • About this page
      • Test Review
        • Page 1
      • Big-O
        • 빅오표기법의 문제풀이
        • 피보나치 수열의 시간복잡도
      • Bit Operation
        • bit masking
      • Math
        • 합공식 / 누적합
        • 피보나치 수
        • 약수찾기
        • 소수찾기
          • 백준 1978 소수찾기
          • 백준4948 베르트랑 공준
          • 백준 8393 합
          • 백준 1929 소수구하기
        • 최대공약수 / 최소공배수
          • 백준 2824 최대공약수, BigInteger
          • 백준 2609 최대공약수, 최소공배수
        • 순열과 조합
          • 백준 15649 N과 M
        • 그 외 개념 정리
      • Recursion
        • N Queens problem
        • counting cells in a blob
        • recursion 응용 - 미로찾기
        • 순환 알고리즘의 설계
        • 순환적으로 사고하기
        • 백준 17478 재귀함수가 뭔가요
        • 백준 10870 피보나치수 5
      • Sort
        • java 에서의 정렬
        • radix sort
        • sorting in linear time
        • comparison sort 에서 최상의 시간복잡도
        • priority queue
        • heap sort
        • quick sort
        • merge sort
      • Array and List
        • 표준 라이브러리
      • Linked list
      • String
      • Stack
        • 백준 1874 스택수열
        • 백준 10828 스택 구현하기
      • Queue
        • 백준 10845 큐 구현하기
      • Heap
        • 백준 11298 절대값힙
        • 백준11279 최대힙
        • 백준1927 최소힙
      • Deque
      • Tree and Binary tree
        • Tries
        • Red-Black Tree
        • Binary Search Tree
      • Search
        • 완전 탐색
        • 이분탐색
      • Graph
        • 최단경로
        • MST 2 - prim 의 알고리즘
        • MST 1 - Kruskal 의 알고리즘
        • MST, minumum spanning tree
        • DAG, Directed Acyclic Graph
        • DFS, Depth First Search
        • BFS, Breadth First Search
      • Dynamic Programming
        • Knapsack problem
        • LCS, Longest Common Subsequence
        • matrix chain
        • 행렬 경로 문제
        • 백준 1003 피보나치 함수
        • 백준 9461 파도반 수열
        • 백준9251 LCS
      • Greedy
      • Implementation
      • LIS, Longest Increasing Subsequence
      • Two Pointer
      • Line Swipping
      • Fenwick tree
      • Backtracking
    • Computer Structure
      • 이 위키를 만드는데 참고한 자료들
      • 그래서 컴퓨터는 어떻게 동작하나요?
      • 컴퓨터의 구성
      • 컴퓨터의 역사
      • 컴퓨터 구성요소의 기능 및 이해
      • 중앙처리장치 - 마이크로 명령 - 입출력과 인터럽트
      • 중앙처리장치 - 기본 컴퓨터 프로그래밍
      • 중앙처리장치 - 프로그래밍 언어와 실행
      • 파이프라인과 벡터처리 - 데이터의 종속성 - 병렬처리와 파이프라인
      • 파이프라인과 벡터처리 - 파이프라인 구조 - 데이터/구조
      • 파이프라인과 백터처리 - 산술&명령어 파이프라인
      • 파이프라인과 벡터처리 - 파이프라인 CPU의 성능분석
      • 메모리 구조 - 메모리 시스템의 이해
      • 메모리 구조 - 효율적인 메모리 관리 정책
      • 메모리 구조 - 컴퓨터 성능 개선을 위한 메모리 관리
      • 입출력구조 - 시스템 BUS 구성 및 제어
      • 입출력 구조 - 입출력(I/O) 연결과 주소 지정
      • 입출력 구조 - 입출력 수행과 인터럽트
      • 병렬컴퓨터 구조와 성능분석 - 멀티 프로세서
      • 병렬 컴퓨터 구조와 성능 분석 - 시스템 성능 분석과 개선
    • This Is Coding Test 2021
      • 1. 출제 경향 & 파이썬 문법 부수기
      • 2. 그리디 알고리즘 & 구현
      • 3. BFS & DFS
      • 4. 정렬 알고리즘
      • 5. 이진탐색
      • 6. 다이나믹 프로그래밍
      • 7. 최단경로 알고리즘
      • 8. 기타 그래프 이론
      • 9. 코딩테스트에서 자주 출제되는 기타 알고리즘
      • 10. 개발형 코딩테스트
    • Operating System
      • 이 위키를 만드는데 참고한 자료들
      • 운영체제란, Introduction to Operating Systems
      • 컴퓨터 시스템의 구조, Structure of Computer System
      • 프로그램의 실행, Program Execution
      • 프로세스, Process
      • 쓰레드, Thread
      • 프로세스의 생성과 종료, Start and End of Process
      • 프로세스 시스템 콜과 프로세스간의 협력, System call and Interprocess Communication
      • CPU Scheduling
      • CPU Scheduling Algorithm
      • Process Synchronization Problem
      • Initial Attempts to Solve Process Synchronization Problem
      • semaphore 와 monitor 로 synchronization 해결하기
      • 데드락, Deadlock
      • 메모리 관리, Memory Management
      • Memory Allocation
      • Virtual Memory
      • Virtual Memory 2
      • File System
      • File Systems Implementation
      • Disk Management & Scheduling
    • Network
      • 이 위키를 만드는데 참고한 자료들
      • 대규모 트래픽으로 인한 서버 과부하 해결방법
      • 유선 LAN과 무선 LAN
      • 네트워크를 이루는 장치 (L1, L2 .. L7)
      • REST API
      • HTTP 매서드
      • HTTP 상태코드
      • 직렬화와 역직렬화
      • 로그인 구현방식 2. 토큰 기반 인증방식
      • 로그인 구현방식 1. 세션 기반 인증방식
      • 웹 브라우저의 캐시 - 공통점과 차이점
      • 웹 브라우저의 캐시 - 쿠키
      • HTTP header
      • 웹 브라우저의 캐시 - 세션 스토리지
      • 웹 브라우저의 캐시 - 로컬스토리지
      • browser rendering
      • HTTPS 와 TLS - TLS 핸드쉐이크
      • HTTPS 와 TLS - 암호화
      • HTTP History
      • www.naver.com 을 주소창에 입력하고 화면에 나타나기까지의 과정
      • IP 주소 - 공인 IP와 사설 IP
      • IP 주소 - Classless,Subnet Mask, Subnetting
      • IP 주소 - Classful IP Addressing
      • IP 주소 - IPv4, IPv6
      • IP 주소 - 이진수 이해하기
      • IP 주소, MAC 주소, ARP, RARP
      • 라우팅
      • TCP 4way handshake and TIME_WAIT
      • TCP 3way handshake
      • TCP/IP - internet layer
      • TCP/IP - Transport Layer
      • TCP/IP - Application Layer
      • TCP/IP - MTU, MSS, PMTUD
      • TCP/IP 4계층, OSI 7 layer
      • 네트워크의 분류 - LAN, MAN, WAN
      • 네트워크 토폴로지와 병목현상
      • 네트워크의 기초 3
      • 네트워크의 기초 2
      • 네트워크의 기초
    • Linux
      • reference
      • sudo apt-get install / uninstall
      • vim
      • linux basic command
    • Design Pattern
      • 이 위키를 만드는데 참고한 자료들
      • static 을 자주 사용하게 되었을 때의 단점
      • 자바스크립트의 class와 static
      • 프로그래밍 컨텍스트
      • 의존성 주입 vs. 전략패턴
      • flux pattern
      • Spring MVC 패턴 적용 사례
      • MVC, MVP, MVVM pattern
      • 프록시 패턴
      • 옵저버 패턴
      • 전략패턴
      • 의존성 주입과 의존 관계 역전 원칙
      • 이터레이션 패턴
      • 추상 팩토리 매소드 패턴
      • 팩토리 메소드 패턴
      • 싱글톤 패턴
      • 디자인 패턴, 라이브러리와 프레임워크의 차이
    • Programming Basic (Go)
      • 이 위키를 만드는데 참고한 자료들
      • 트랜지스터, Trangister
      • 논리소자, Logic Element
      • 튜링과 폰 노이만, Turing and Von Neumann
      • 컴퓨터의 원리, Computer Principle
      • 프로그래밍 언어, Programming Language
      • 컴파일러와 동적언어, Compiler and dynamic language
      • golang
      • hello, world
      • variable
      • variable 2
    • Base Knowledge
      • 이 위키를 만드는데 참고한 자료들
      • 신기술 도입시 고민해야할 점(feat. react.js vs. vue.js)
      • 정적 타입 시스템의 필요성
      • 도커, 컨테이너
      • 클라우드, Saas, IaaS, PaaS
      • SSO
      • RBAC
      • OAuth2.0
      • REST API 사용을 위한 인증 방법 4가지
      • API
      • Data Format - XML
      • Data Format - JSON
  • ☕Java/Spring
    • Java
      • Java Code Convention
      • Java 버전별 특징 (v1-v19)
      • java.lang.Math
      • List 4가지의 초기화 방법
      • HashMap 4가지의 정렬 방법
      • 어노테이션 프로세서 정리하기
      • Annotation Processor 로 없는 소스코드 생성하기
      • lombok 은 어떻게 동작하는 것일까?
      • 다이내믹 프록시 정리하기
      • 클래스의 프록시
      • 다이내믹 프록시
      • 프록시 패턴은 무엇인가
      • Spring Data JPA 는 어떻게 동작할까?
      • reflection api 정리
      • reflection api 이용하여 spring ioc container 만들기
      • reflection api
      • spring dependency injection 은 어떻게 동작할까
      • 바이트 코드 조작하기
      • java bytecode 를 조작해 테스트 코드 커버리지 확인하기 (feat.jacoco)
      • Class Loader
      • JVM 의 구조
      • java, jvm, jdk and jre
      • synchronized
      • java string.split(".") 오류
    • Java 8
      • 이 위키를 만드는데 참고한 자료들
      • Metaspace
      • Parallel 정렬
      • Annotation
      • CompletableFuture
      • Date and Time
      • Optional
      • Stream
      • interface의 default 메소드와 static 메소드
      • 인터페이스의 변화
      • 함수형 인터페이스
      • java 8 소개
    • Spring Framework
      • Spring 3.0 준비하기
      • 특정 매소드만 transaction 처리하기
      • 스프링 프로젝트 시작하기
      • 스프링이란 무엇인가
      • 스프링 핵심 기술의 응용
      • AOP 2
      • AOP 1
      • 서비스 추상화 2
      • 서비스 추상화 1
      • 예외
      • 템플릿
      • 테스트
      • 오브젝트와 의존관계
      • 스프링이란
    • Spring Boot
      • [Gradle]UncheckedIOException
      • java19 + spring 3.0.5 + gradle 7.4.1 에서 프로젝트 gradle 설정하기
      • [리뷰] Gradle 멀티 프로젝트 관리
      • [리뷰] 멀티모듈 설계 이야기 with Spring, Gradle
    • JPA/QueryDSL
      • querydsl 을 쓰는 이유
      • JPA querydsl에서 json array 로 된 컬럼에 조건 적용하기
      • querydsl 에서 mysql order by field() 사용하기
  • 🏰Infrastructure
    • InfraWorkshop
      • 이 위키를 만드는데 참고한 자료들
      • aws로 안정적인 인프라 만들기 2
      • aws로 안정적인 인프라 만들기 1
      • 어플리케이션 진단하기
      • 서버 진단하기
      • 부하 테스트
      • 웹 성능 개선하기
      • 웹 성능 진단하기
      • <aws로 그럴듯한 인프라 만들기> 회고와 피드백
      • aws로 그럴듯한 인프라 만들기 3 - 배포스크립트
      • aws로 그럴듯한 인프라 만들기 2 - 배포하기
      • aws로 그럴듯한 인프라 만들기 1 - 네트워크 망 구성
      • docker container
      • connection check
      • network segmentation
      • cloud 서비스를 사용한다는 것
    • AWS
      • AWS IAM
      • AWS CodePipeline 으로 배포 자동화하기 (1)
      • AWS CodePipeline 으로 배포 자동화하기 (2)
  • 🪄Test
    • TDD
      • 이 위키를 만드는데 참고한 자료들
      • [2주차] 로또 과제 강의를 듣고나서
      • [1주차] 자동차 경주 과제 강의를 듣고나서
      • TDD, 리팩토링이란?
      • 가장 쉽게 TDD 시작하는 방법
      • 의식적인 연습과 학습 테스트
      • TDD 에 집착해야하는 이유
      • 공부하는 자세
    • AssertJ
      • 이 위키를 만드는데 참고한 자료들
    • JUnit
      • 이 위키를 만드는데 참고한 자료들
      • Junit 기본 개념
  • 😎OTHERS
    • Helpful Command
      • Mac 에서 특정 포트 검색, 종료
      • crontab
    • Llibrary
    • IntelliJ
      • 내가 좋아하는 커스텀 세팅
    • GIT
      • Github ID/Token 한번 입력 후 저장하기
      • Github Actions
      • github organization private repository push 안될 때 (not found issue)
      • commands
      • git commit convention
    • Logging
      • logback + webfilter 로 로그설정
      • ‼️log4j 보안 이슈
    • Postman
      • postman 의 header에서 언더바(_) 변수 인식 안되는 현상
Powered by GitBook
On this page
  • 1. 기억하고 싶은 문장들
  • 1-1. 학습하기
  • 1-2. 협력하기
  • 1-3. 애자일
  • 2. 느낀점

Was this helpful?

  1. PRODUCT&BUSINESS
  2. Business/Growth

책 <함께자라기>

1. 기억하고 싶은 문장들

1-1. 학습하기

  • 현실세계에서는 협력적이고 비순차적이며, 자료에 한정이 없고, 명확한 평가나 정답이 없고 목표가 불분명하기까지한 야생학습이 훨씬 중요하다.

  • 소프트웨어 개발에서 개발자를 채용할 때, 경력을 보고 뽑는 것은 관심사를 보고 뽑는 것과 크게 효과가 다르지 않았다. 경력은 초보와 초보가 아닌 사람만을 구분할 뿐이지, 그 이상의 차이를 증명할수는 없다. 즉, 0년차와 2년차 사이에서는 경력이 중요하지만, 2년차와 10년차 사이에서는 경력이 중요하지 않다.

  • 1만시간의 법칙에서 가장 중요한 것은 단순히 1만 시간을 채우는 것이 아니다. 자신의 약점을 커버하기 위해 의도적으로 수련하는 시간을 의미하는 것이다.

  • 학습에서 가장 중요한 것은 피드백과 피드백을 받는 주기이다. 애자일 학습법이 효과적일 수밖에 없는 이유이다.

  • 자기계발은 복리로 돌아온다. 지금 편한 몸은 반드시 내년에 더딘 성장으로 돌아오고, 지금 열심히 노력하는 것은 반드시 내년에 큰 성장으로 돌아온다. 그리고 하루에 1-2시간씩 누적된 이 시간들은 눈덩이처럼 불어난다.

  • 복리로 일하는 조직은 원래 하려고 했던 일을 하는 A단계에서 머물지 않는다. A단계를 개선시키고 효율을 극대화하기 위해 노력하는 B단계를 반드시 수행하며, B단계의 효율을 더 높이고 시스템화하려는 노력을 하는 C단계까지 노력을 기울인다.

  • 성장의 진정한 의미는 우리 안에 무언가를 남겨두고 커진다는 것이다.

  • 개인은 어떻게 하면 더하기보다 곱하기를 할 수 있을지, 어떻게 해야 곱하는 비율을 높일 수 있을지 혹은 이자 적용 주기를 짧게 할 수 있을지 고민해야한다.

    • 자신이 이미 가지고 있는 것들을 잘 활용하자. 새로운 것을 유입하는 것 대신 가지고 있는 것을 촘촘히 연결시키자.

    • 지금 하고 있는 행위는 추후에 나에게 도움이 될 수 있어야 한다.

    • 외부 물질을 체화하자. 지속적으로 새로운 유입을 받되, 그것을 자기 것으로 빨리 체화해야한다.

    • 자신을 개선하는 프로세스에 대해서 생각해보자. 주기적으로 회고하는 활동을 하자.

    • 피드백을 자주 받자. 사이클 타임을 줄여야한다. 일찍, 자주 실패하고 실패로부터 학습하자.

    • 자신의 능력을 높여주는 도구와 환경을 점진적으로 만들자. 주어진 상황에서 최대의 효율을 만들 수 있도록 점진적으로 개선해야한다.

  • 학습 프레임과 실행 프레임. 실행 프레임은 일을 잘하고 성과를 내는 것에 초점을 맞추고, 학습 프레임은 일의 성과와 상관없이 얼마나 배우느냐에 초점을 맞춘다. 역설적이게도 학습프레임의 결과가 훨씬 더 좋은 성과를 낸다.

  • 입사한 지 1년도 안되었지만, 어떤 사람은 혼자서 책보고 코딩하며 공부하는데 몰두하고, 어떤 사람들은 선배들에게 자주 물어보고 피드백을 받으며, 스터디를 만들어서 타인을 도와주기도 한다. 소프트웨어 공학의 연구에 따르면 뛰어난 개발 전문가들은 사회 자본, 즉 인맥이 훌륭하다. 업무적으로 꼭 필요하지는 않지만 도움을 받는 사람과 내가 도움을 주는 사람에 대해 명확하게 말할 수 있는 사람은 곧 뛰어난 개발자이거나 그렇게 될 확률이 높은 것이다.

  • 인공지능 시대에서 살아남는 것은 가장 학습하기 힘든 직업이다. 연구에 따르면, 현재 받고 있는 연봉이 낮을 수록 컴퓨터화하기가 어렵다고 한다. 연봉이 낮은 직업군은 주로 독창성, 사회적 민감성, 협상능력, 설득, 타인을 돕고 돌보기 등의 능력이 요구되는데, 이는 인공지능이 학습하기 어려운 능력들이기 때문이다.

  • 소프트웨어 개발자와 컴퓨터 프로그래머를 비교해보자. 주어진 스펙대로 코딩만 하는 것이 컴퓨터 프로그래머라면, 요구사항을 정의하고 분석하며 그에 대한 솔루션까지 설계하는 것을 소프트웨어 개발자라고 해보자. 소프트웨어 개발자는 인공지능에 의해 대체되기 힘들지만, 컴퓨터 프로그래머는 그렇지 않다.

  • 따라서 지금이라도 암묵지와 직관을 배우고 수련하는 방법을 학습하고 연습해야한다. 그리고 인공지능과 함께 일을 해나가야한다.

  • 단순 반복으로는 달인이 될 수 없다. 달인이 되기 위해서는 실력을 개선하려는 동기가 있어야 하고, 구체적인 피드백을 적절한 시기에 받을 수 있어야 한다.

  • 수십년을 일해도 전문가가 되지 않는 이유는 간단하다. 일을 하는 동안 타당성과 피드백이 결여되어있기 때문이다. 내가 제대로 일을 했는지 확인할 수 있고, 성과에 대해 적절히 피드백을 받을 수 있다면, 분명 성장할 수 밖에 없다.

  • 소프트웨어 업계는 타당성과 피드백이 모두 낮은 편이다. 따라서 이를 의도적으로 높이려는 노력이 필요하다. 변수를 제한하고 실험을 하면서 규칙성과 인과관계를 찾으려는 노력을 하고, 동료, 상사, 고객, 혹은 프로그램으로부터 주기적으로 피드백을 받으면 된다.

  • 제자리 걸음에서 벗어나는 방법

    • 내 실력보다 쉬운 업무를 하는 경우

      • 실력을 낮춘다 : 모래주머니를 차고 달리기, 마우스 안쓰고 키보드로만 코딩하기 등 제약사항을 추가하여 실력을 낮추는 방법

      • 일의 난이도를 높인다 : 원래 주어진 범위 이상을 하거나 시간 제약이나 스펙 제약 사항을 추가하여 일하는 방법

    • 내 실력보다 어려운 업무를 하는 경우

      • 실력을 높인다 : 사회적 접근, 도구적 접근, 내재적 접근의 방법이 있다. 실력자를 찾아가 짝 프로그래밍을 하거나 내 일을 도와주는 도구적 사용을 하거나 비슷한 일을 했던 과거의 경험을 머릿속에서 되살려 보는 등을 의미한다.

      • 일의 난이도를 낮춘다 : 어려운 일을 작은 단위로 쪼개 결과 확인 및 피드백의 주기를 짧게 가져가는 것이다. 내가 익숙한 방식으로 먼저 해보면, 그 이후에는 더 어렵게 하기도 쉽다. 파이썬에 익숙하다면, 파이썬으로 먼저 짜보고 이후에 C언어로 짜는 것도 방법이 될 수 있다.

  • 중요한 것은 나의 실력이나 작업의 난이도가 유동적이라는 것이다. 따라서 일을 진행하는 동안, 동적으로 균형점을 계속 찾으려고 노력해야한다. 알아차림 혹은 메타인지 전략이라고 한다.

  • 팀장은 팀원들에게 적절한 난이도로 일을 주려는 노력이 필요하다.

  • 전문가들은 자신들조차 어떻게 전문성을 획득하는지 잘 모른다. 전문가로부터 전문성을 효과적으로 끌어내려면 최대한 구체적인 사건을 떠올리도록 유도해야한다.

  • 프로그래밍 언어를 빨리 배우는 법

    • 튜토리얼을 읽을 때 뭘 만들지 생각하며 읽는다. 이렇게 읽으면 어느정도 감을 잡으면 읽기를 중단하고 필요한 것을 만든다. 다 만든뒤 다시 와서 읽기 시작하는 것이다. 이렇게 목적성을 가지고 있는 읽기를 적극적 읽기라고 부르며 읽기에 대한 효과가 월등히 뛰어나다. S님은 주로 첫번째 프로그램으로 단어 개수 세기 프로그램을 만든다고 한다.

    • 공부할 때 표준 라이브러리의 소스코드를 찾아 읽는다. 튜토리얼만으로는 그 언어와 코드들의 말뭉치를 파악하기 어렵다. 그 언어의 스타일과 숙어를 적절하게 사용할 수 있으려면, 표준 라이브러리 소스코드를 직접 읽어봐야 한다.

    • 공부 중 다른 사람의 코드에 내가 필요한 기능을 추가한다. SSH 클라이언트에서 지원되었으면 하고 바라던 특정 기능이 있었고, 자신이 공부하던 언어로 구현된 오픈소스 SSH 클라이언트를 찾아 다운받고 코드를 읽으며 기능을 추가했다고 한다.

  • 실수는 예방하는 것이 아니라 관리하는 것이다. 실수를 예방하는 조직에서는 혁신이 일어나지 않는다. 성장하지도 않는다.

  • 우리가 그렇게 공부해도 실력이 제자리인 이유

    • 뛰어난 선생에 대한 미신

      • 연구에 따르면 선생의 지식정도는 제자의 실력향상과 상관이 없다.

      • 선생은 자기가 가지고 있는 지식을 잘 전달하는 능력이 훨씬 중요하다. 보통 전문가는 가르칠 때, 자신이 과제를 수행하면서 하는 행위나 지식의 70%는 가르치지 않는다.

      • 학생의 경우는 전문가에게 배울 때, 그 전문가가 문제를 해결하고 새로운 내용을 학습한 인지적 과정을 물어볼 수 있다.

    • 나홀로 전문가에 대한 미신

      • 혼자서 일하는 전문가는 없다. 뛰어난 개발자의 70%는 동료와의 협력을 언급한다.

      • 결국 전문가가 되려면 사회적 자본과 기술이 모두 충족되어야 한다.

1-2. 협력하기

  • 실제로 우리가 협력하는 방법은 작업을 세밀하게 나누고 각자의 역할을 부여하는 것이다. 그 과정에서 협력은 단 한번도 발생하지 않는다.

  • 조엘테스트의 위험성

    • 소스컨트롤 사용 여부, 버그 데이터베이스, 스펙, 조용한 환경 등 12개의 항목에 예라고 답하면 좋은 개발팀이라고 판단하는 조엘 테스트는 위험성이 많다.

    • 첫번째는 단순히 12개의 항목에 ‘예’라고 답하는 것이 개발팀의 우수성을 보장하지 않기 떄문이다.

    • 두번째는 팀의 성공을 좌지우지하는 데에는 관리 > 시스템 > 사람 > 도구의 순서로 파급력이 크기 때문이다. 관리자는 자기 자신을 제일 먼저 바꾸어 관리를 효율적으로 할 수 있도록 해야한다. 그것이 가장 적은 비용으로 큰 효율을 만들 수 있는 방법이기 때문이다.

  • 컴퓨터 프로그래밍은 결국 추상화다. 그런데 재미있는 점은 추상화는 다른사람들과 협력할 때, 더 잘 발생할 수 있다. 혼자서 개발할 때에는 다른 시각을 접할 기회가 없기 때문에 혼자만의 방식으로 작업을 하지만, 다른 사람들과 함께 작업을 할 때에는 서로 바라보는 시각이 다르기 때문에 추상화를 떠올리기가 쉬워진다.

  • 둘이서 협력하면서 작업하면 서로 시각이 다르기 때문에 두 사람의 다른 시각을 연결해 줄 다리가 필요하고 그 다리에는 필연적으로 추상화의 요소가 있게 된다. 서로 다른 것들을 하나로 묶어야 하기 때문이다.

  • 디자이너들을 대상으로 한 실험이 있다. 공유에는 한 가지 시안에 대한 작업을 공유하는 하나공유, 3가지 시안 중 최고의 것을 공유하는 최고공유, 그리고 3가지 시안을 모두 공유하는 복수 공유의 방법이 있다고 한다. 재밌는 것은 하나공유나 최고공유의 경우, 작업물이 한가지이기 때문에 작업물에 대한 비판을 곧 나에 대한 비판으로 여겨 상처받거나 상대에 대한 신뢰감을 잃기 쉬운 반면, 복수공유의 경우는 여러가지 케이스를 다같이 놓고 고민하고 토론할 수 있어서 작업물과 나를 동일시 하지 않고, 작업물 자체에만 집중하여 일을 할 수 있다는 점이다. 이 경우, 동료에 대한 신뢰감도 향상되었고, 최종 작업 결과물도 훨씬 좋았을 뿐더러, 실제 데이터 상으로도 노출률이나 클릭률 등의 지표가 훨씬 향상되었다고 한다.

  • 객관성의 주관성. 객관적이라는 것은 마치 투명하고 모두에 의해 납득되는 마법의 말 같지만, 사실은 이 객관성 조차도 매우 주관적이다. 따라서 어떤 사람을 객관적 데이터를 근거로 설득한다는 것은 말이 될 수 없다. 결국 결정은 사람이 하기 때문이다. 객관성을 논하기 전에, 우리는 사람에 대한 이해에 가장 많은 시간을 들여야 한다.

  • “이것도 모르세요?”와 같은 태도로 서로를 대하는 팀은 결코 성장할 수 없다. 사수는 코칭을 통해 상호 대화가 자연스럽게 오고가는 환경을 조성해야하고, 실제로 무엇을 해야할지 알려주기보다는 피코치가 스스로 약속하게끔 해야한다. 이 경우, 피코치는 제대로 행동할 확률이 90%이상 된다.

  • 뛰어난 전문가들은 자신들이 잘 알고있는 것은 탑다운 방식으로 접근하되, 잘 모르는 새로운 개념은 탑다운과 바텀업 방식을 섞어서 사용한다고 한다. 즉, 전문가들은 상황에 맞게 전략을 변경하며 적용할 줄 아는 사람들이라는 것이다. 하지만 조직의 경우, 스스로를 전문가 집단으로 인식하여 탑다운 방식만 고수하려고 하는데, 이 때문에 올바른 문제해결이 불가하거나 비효율이 발생하는 경우가 많다.

  • 흔히 일을 잘한다고 하는 조직의 경우, 삼투압적 의사소통을 한다. 이는 자연스럽게 스며드는 방식으로 의사소통을 하는 것인데, 물리적으로 가까운 위치에 서로 존재하며, 상호간의 대화에 자연스럽게 노출되어 서로가 서로에게 부가정보를 잘 전달할 수 있는 구조를 가진다는 것이다. 또한 의사소통의 주기를 짧게 가져가는데, 이를 위해 일을 처리하는 배치 사이즈를 작게 가져간다. 50개의 일을 한번에 처리하고 소통하는 것이 아니라, 30개, 10개, 1개의 일을 처리하고 의사소통하는 방식으로 일을 진행한다는 것이다.

    • 자연스러운 노출 + 짧은 의사소통 주기 + 작은 일의 단위

  • 전문가들만 모여있는 집단이 반드시 성공하지는 않는다. 오히려 서로 협력하지 않는 전문가 집단은 일반적인 비전문가 집단보다 훨씬 더 최악의 결과를 만들어낸다. 전문가 집단이 성공하기 위해서는 서로 정보를 공유하고 협력을 잘 하기 위한 명시적인 도움이 필요하며, 이러한 도움은 팀 내에 있는 소셜스킬이 뛰어난 제네럴리스트를 통해 받을 수 있다.

  • 구글에서 좋은 관리자와 뛰어난 팀을 찾는 아리스토텔레스 실험을 진행한 결과, 세 가지 점이 주목할만하다.

    • 팀 내에 누가(전문가, 내/외향, 지능)있는지보다 팀원들이 어떻게 상호작용하고 자신의 일을 어떻게 바라보는지가 더 중요하다.

    • 5가지 뛰어난 팀의 특징 중, 가장 높은 상관성을 보인 것은 심리적 안정감이다.

    • 심리적 안정감은 팀 토론 등 훈련을 통해 충분히 개선될 수 있다.

  • 즉, 실수에 대해 두려움이 적고, 팀 내에서 토론이 활발하게 이루어질 수 있는 분위기에서는 팀원들이 심리적 안정감을 더 많이 느끼고, 그에 따라 성과로 높아진다는 것이다.

  • 쾌속학습팀의 특징은 다음과 같다.

    • 새로운 기술로의 전환을 기술적 문제가 아니라 조직적 문제로 바라보고 팀 전체가 어떻게 학습하고 적용할 것인지를 고민한다.

    • 리더는 학습을 개인에게 부담지우는 것이 아니라 팀 전체의 것으로 가져왔고, 학습으로 인해 변화할 긍정적인 모습에 집중하도록 팀을 격려했다.

    • 학습이 빠른 팀은 심리적 안정감이 높았다. 자신의 의견을 적극적으로 개진하며 그것에 대한 심리적인 부담이 없었다.

  • 프로젝트 확률론에 따르면 대부분의 개발자가 개발 완료 일정을 추산할 때, 그 정확도가 현저히 낮다고 한다. 보통 사람의 경우, 추정치의 2-3배는 산정해야 80%의 확률로 끝낼 수 있다고 한다. 이때 애자일한 팀의 경우는 이러한 직관의 문제점을 아래와 같이 해결한다.

    • 팀이 함께 작업하기에 팀 내에서 한 명만 아하 모먼트를 겪어도 팀 전체가 그것을 공유할 수 있도록 한다. 좋은 일을 OR 확률로 만드는 것이다.

    • 버그와 같이 나쁜 일들에 대해서는 팀원 모두가 실수를 해야 발생할 수 있도록 짝프로그래밍, 코드공유, 코드 리뷰, 퀵 디자인 세션 등과 같은 중복 검토를 통해 AND 확률로 만든다.

1-3. 애자일

  • 좁은 의미로 보자면, 애자일은 소프트웨어를 개발하는 한 가지 스타일을 말한다. 1990년대에 전통적인 소프트웨어 개발 방법론에 회의를 가진 사람들이 각자 자기만의 방법으로 개발을 하기 시작했는데, 2001년에 이들 간의 유사성을 모아 공통된 철학, 추구하는 가치, 원칙을 추려내어 애자일 선언문을 발표한 것으로부터 유래되었다.

  • 넓은 의미로 보자면, 애자일은 협력과 학습, 즉 함께 자라기이다. 소프트웨어 개발 뿐만 아니라 삶을 살아가는데에도 불확실성을 효과적으로 다루게 해주는 좋은 전략이 된다.

  • 애자일의 핵심은 “고객에게 매일 가치를 전하는 것”이다.

  • 애자일 도입의 성공 요인을 분석한 결과, 애자일 초보 조직일수록 고객이 개발 과정에 참여할 수 있도록 하는 것이 가장 중요한 요소였고, 애자일 전문가 조직일수록 짧은 개발주기, 고객참여, 코드 공유 등이 성공의 핵심 요소가 되었다.

  • 결국 고객참여는 가장 중요한 요소임에도 많은 조직에서 미루고 있다. 그 이유는 사람에 관한 일이기 때문이다. 고객을 설득해야하고 같이 일하는 동료를 설득해야한다. 때문에 많은 조직에서 이 일을 가장 후순위로 미루고는 작은 요소부터 적용하기 시작하는데, 이렇게 미루다가는 끝도 없다. 가장 무섭고 중요한 일일수록 피하지말고 맞서라.

  • 애자일 도입시 가장 중요한 것은 그것을 이끄는 리더이다. 단순한 방법론을 도입하는 것으로는 애자일 문화가 자리잡기 힘들다. 그보다는 누가 참여하는가가 훨씬 더 압도적으로 중요하다.

  • 뛰어난 능력을 가진 슈퍼슈링크들을 찾고 그들을 연구하고 육성해야한다.

  • 애자일을 반 애자일적으로 진행하는 것이 가장 큰 폐단이다. 애자일은 불확실한 상황에 대한 접근법인데, 애자일을 도입할 때 확실성 위에서 진행하려고 한다면 문제가 된다. 애자일을 도입할 때, 뭘 해야할 지 명확하게 알려달라는 것은 모순이다. 각자 자기 조직의 모습에 맞게 방법론 적용하고 수정해가며 찾아가는 것이다.

2. 느낀점

  • 사람들이 그렇게 추천하고 읽으라고 애원할 때는 청개구리처럼 더 보기 싫은 것 같다. 그러다가 시간이 많이 남아돌 때, 빌린 책인데, 오늘 하루만에 다 읽었고 읽기 너무 잘했다는 생각이 든다.

  • 문장 하나하나에 인사이트가 가득하다. 늘 뭔가를 시작할 때, 처음부터 끝까지 혼자 하려는 경향이 있고 같이 하면 더 효율이 떨어진다는 마음 속 깊은 곳의 의심이 있었는데, 역시 뭐든 오래하고 꾸준히하고 잘하려면 사람들과 함께하는 것이 좋은 것 같다.

  • 마침 개발 (이직) 스터디를 시작하게 되었다. 이 기회에 사람들과 함께 성장하는 방법에 대해 공부하고 실천해야겠다. 잘 연구해보자…!

Previous책 <유난한 도전>Next책 <나는 돈 없어도 사업을 한다>

Last updated 6 months ago

Was this helpful?