Simple Design은 복잡한 소프트웨어 개발 과정을 단순화해서 효율을 높일 수 있는 과정을 안내합니다. 먼저 코드 품질의 기준에서부터 코드 품질을 높이는 다양한 기법들, 단순한 아키텍처를 설계하는 법, 소프트웨어 개발 방법론에서 낭비를 줄이고 효율을 극대화하는 방법들을 다룹니다.
구체적인 강의 내용은 다음과 같습니다. 현재 2강까지 준비되어 있습니다.
1강 - 좋은 코드의 기준
좋은 코드의 기준
가독성을 코드 품질 기준으로 삼지 말자.
Kent Beck의 Simple Design
중복을 제거한다.
구성요소를 줄인다.
중복 제거의 어려움
구성요소를 줄이지 못하게 방해하는 관념
코드 품질을 얼마나 높여야 하나?
2강 - 중복 코드 다루기
중복코드가 치명적인 이유
조건문의 중복과 다형성
중복코드 중 가장 나쁜 유형
IF문을 최적화하는 방법
본질적인 복잡성과 우발적인 복잡성
약간 다른 중복코드 다루기
인지하기 어려운 중복
평행상속 구조, 파라미터 덩어리, 타입 선언
서버와 클라이언트의 중복
테스트 코드의 중복
문서와 코드의 중복
실용적인 문서 작성법
중복 제거를 도와주는 도구들 - IDE, 메트릭 도구, AI
3강 - Less is more
왜 구성요소의 수를 줄이는 것이 중요한가?
사람 인지능력의 물리적 한계
AI 역시 컨텍스트의 크기가 제한되어 있고 토큰 소모량이 차이난다.
구성요소가 늘어날 때는 그에 상응하는 대가를 얻어야 한다.
개인의 주관적이고 심미적인 만족감을 위해 구성요소를 늘리지 말 것.
과도한 일관성을 경계하라.
구성요소를 줄이는데도 우선순위가 있나?
Call stack의 깊이
함수 하나만 작다고 이해하기 쉬운 것이 아니다.
조건문
상태
순수함수
SSOT
라인 수
대규모 프로젝트를 개발하는 방법
기술스택도 중요하다.
4강 - Simple Design 방법론
팀에서 Simple Design을 추구하는 방법론
객관적이려 노력하는 개인들의 주관적인 판단
코드리뷰 어떻게 할 것인가?
코드리뷰에서의 분쟁을 조정하고 해소하는 법
코드리뷰는 양방향 토론이어야 한다.
PR 단위의 코드리뷰만으로는 팀의 코드 품질 수준을 높일 수 없다.
리뷰어에게 암묵적으로 주어지는 권력을 경계하고, 커미터의 권한을 존중하라.
팀의 코드 품질이 곧 리더의 실력이다.
Baby Step
Big Design Up Front의 폐해
밥 먹기 전에 설거지하기 전략
자동화를 경계하라
코드 품질과 다른 가치의 충돌
코드 품질을 높일 시간이 없다?
전문성의 차이에 따라 다르게
전문가라면 유연하게
초보자라면 철저하게 Simple Design의 원칙들을 따라보자.
우리 팀의 코드 품질 실력을 평가하는 방법
애자일 선언과 익스트림 프로그래밍
5강 - Simple Design 심화과정
Kent Beck의 Simple Design에서 지나쳤던 주제, 의도를 드러내라
어떤 의도를 드러내야 하나?
기술적인 개념들이 보존되게 하기
OS - 파일, 디렉토리, 소켓, 프로세스, 쓰레드, 비동기/동기, IO
웹 - request, response, header, cookie, session, ...
이 강의는 Simple Design 시리즈의 두번째 강의입니다. Simple Design은 좋은 코드를 만들기 위한 방법으로 다음의 두 가지를 제안합니다.
1. 중복 코드를 제거한다.
2. 그러면서 구성요소를 줄일 방법을 찾는다.
첫번째 강의(무료 강의)를 먼저 보고 오시면 좋습니다. https://inf.run/L1wf8
이 강의는 이 중에 첫번째에 초점을 맞춥니다.