Search

교과서 작성 원칙

전문가란?

특정 분야의 스키마를 장기 기억에 풍부하게 저장하고 있어, 문제를 보자마자 '유형'을 인식하고 작업 기억에 거의 부하를 주지 않고 해결책을 인출할 수 있는 사람 (Sweller, 1988)
전문가와 초보자는 같은 문제를 서로 다른 방식으로 범주화(categorize) 한다. 전문가의 지식(정신 표상)은 '근본 원리'를 중심으로 체계화되어 있어, 문제의 본질을 빠르게 파악하고 적절한 해결책을 인출할 수 있게 함 (Chi, 1981)

좋은 코드란?

좋은 코드는 유지 보수성이 좋은 코드이다.
변경하기 좋은 코드란, 가독성, 예측 가능성, 높은 응집도, 낮은 결합도를 만족하는 코드들이다. (fyi. FF, FoM)
인지부하가 낮은 코드란, 복잡함을 이해하기 위해 지불하는 인지적 비용이 낮은 코드를 뜻한다.
좋은 모듈은 한번의 완벽한 설계 보다는, 외부 요구사항의 변경에 적응해 나가는 여러 단계에 걸친 리팩토링 속에서 만들어져 나간다.

추상화란?

1.
본질 발견하기: 복잡한 코드 속에 숨겨져 있던 상위 개념이나 구조를 발견하기
2.
인터페이스 설계하기: 부품과 연결 방식을 정의하고, 핵심은 드러내고 세부사항은 숨기기
3.
조합 가능하게 만들기: 작은 추상화를 조립해 크고 복잡한 것을 만들기
목적: 복잡도를 통제하고 변경을 쉽게 만든다
추상화란 복잡한 것을 단순하게 만드는 행위다. 무엇(What)을 하는지는 드러내고, 어떻게(How) 동작하는지는 숨긴다. 이 과정에서 핵심만 남기고 세부사항을 제거하며, 뒤섞인 것들 속에서 본질을 발견한다. 그리고 그 본질을 하나의 개념으로 묶어 '새로운 의미 수준'을 만든다.
목수를 떠올려보자. 복잡한 가구를 뜯어보며 구조를 분석한다. "기둥", "선반", "뒷판"이라는 핵심 부품을 발견한다. 그리고 이것들이 어떻게 맞물려야 하는지 결정한다. 선반은 홈으로 끼우고, 뒷판은 못으로 고정한다. 추상화도 이와 같다. 복잡한 코드 속에서 의미를 발견하고, 컴포넌트와 함수들이 어떻게 조립될지 인터페이스를 설계한다. 부품과 연결 방식, 둘 다 설계하는 것이다.
추상화의 목적은 코드의 복잡도를 낮추고 변경하기 좋은 코드를 만드는 것이다. 하지만 많은 개발자가 '추상화'와 단순한 '분리/추출'을 혼동한다.
좋은 추상화는 조합하고 쌓을 수 있다. 작은 추상화들을 조립해 점점 더 복잡하고 거대한 기능을 만들어낸다. 반대로 좋은 추상화 없이는 코드의 복잡도를 통제하지 못한다. 코드를 서로 얽히게 만들어 작은 기능조차 쉽게 추가하거나 변경할 수 없게 만든다.
실천 수준에서 추상화는 얽힘 인식, IoC, 합성(Composition), 예측 가능한 인터페이스, 코드를 글처럼 읽히게 하기, FoM 등의 기술로 나누어 접근할 수 있다.
인용) 박성철님

자료 작성 원칙

이 챕터를 학습하고 난 뒤의 기대효과와 학습 목표를 명확히함
개념을 효과적으로 전달하기 위한 핵심 표현을 개발한다
개별 챕터를 잘 학습하면 상위 목표가 달성되도록 구성되어야 한다
상위 목표: 좋은 추상화를 할 수 있게 된다
코드의 복잡도를 낮추고
변경이 용이한 코드
세부 단계
1. 얽힘 인식하기
2. 일반해 학습하기
3. 조립 테크닉(ex. IoC)
4. 새로운 추상화 단위 발견하기

각 챕터별 학습 자료 구조

솔루션 부터 제시하기 보다는 문제 상황을 먼저 보여줌 (공감대 형성)
일반적으로 시도되었을 만한 일반적인(잘못된) 대안들 → 지금 제시하는 개념이 해결책이 되는 이유를 예시로 보여줌
개념 설명 → React 코드 바깥의 일반적인 상황으로 설명을 확장
연습 문제 제공
실전 액션 아이템 + 사례
학습 내용 정리 및 다음 챕터 소개
(가능하다면) 더 알아보기: 참고 문헌 작성