Phi 디자인 스쿨 · 프리코스
문제 정의디자인코드
8주 동안 과목마다 문제를 고르고 버리고 다시 정의했습니다
- 01HID · AI 기억 인스펙터Human Interface Design. 사람과 기계 사이의 상호작용을 설계하는 과목으로 1‑Pager로 문제를 정의하고 코드 프로토타입으로 검증했습니다.
- 02Engineering · 사물을 코드로 옮기기Track B의 전공 과목입니다. 실물 사물을 분해 → 패턴 인식 → 추상화 → 플로우차트(CT 4단계)로 옮긴 뒤 디지털 프로토타입으로 만들었습니다. 모래시계 · 오르골 · 스톱워치 · 자유주제 네 과제입니다.
- 03미적 문해력 · 시선의 기준미감의 기준을 세우는 과목입니다. 직접 찍은 사진을 좋은 조형과 나쁜 조형으로 나누고 '예쁘다' 같은 평가어 없이 조형의 말로만 이유를 쓰며 4주 동안 기준을 쌓았습니다.
HID · AI 기억 인스펙터
Human Interface Design. 사람과 기계 사이의 상호작용을 설계하는 과목으로 1‑Pager로 문제를 정의하고 코드 프로토타입으로 검증했습니다.
- 문제
- 채팅 화면이 AI의 기억 상태를 전혀 보여주지 않아 답이 이상해진 뒤에야 대화를 비우는 식으로 대응하게 됩니다(2026년 7월 LLM 채팅 UI 기준).
- 결정
- 기억을 화면 옆 인스펙터로 드러내고 80%에서 정리 전 미리보기를 띄우고 AI가 제안한 기억은 사용자가 승인해야 저장되게 했습니다.
- 결과
- 1‑Pager를 여러 번 고쳐 쓰며 문제를 다시 정의하고 실제로 대화할 수 있는 채팅 프로토타입을 코드로 만들어 배포.
녹화mock 응답PC 폭(1440px)에서 실제 사이트를 녹화한 영상입니다.
배포된 프로토타입을 그대로 띄웠습니다. 답변은 실제 LLM이 아니라 mock입니다. 공개 데모의 API가 남용돼 토큰이 소진된 뒤 API 경로를 지우고 mock으로 바꿨습니다.
문제 발견
처음 과제 주제는 AI가 낸 코드 구현안 두 개를 비교할 때의 마찰이었습니다. 함수 하나를 맞대 보려고 스크롤을 계속 오르내려야 했습니다.
AI가 던진 확인 질문에 답하다가 실제로는 줄 단위보다 디자인 패턴 같은 큰 단위를 더 비교한다는 걸 알게 됐습니다.
문제 재정의
중간에 목표를 '내 프로젝트 맥락에 맞는 코드를 만든다'로 한 단계 올려 잡자 코드 비교는 하류의 문제였습니다. 상류의 마찰은 AI가 지금 무엇을 기억하는지 채팅 화면이 전혀 보여주지 않는다는 것이었습니다.
그때까지 만든 해결책을 버리고 주제를 바꿨습니다. Why So 사다리로 원인을 내려가 보니 문제는 모델 성능이 아니라 인터페이스에 있었습니다.
근거
- 경쟁 도구: Cursor는 남은 용량만 Cline은 도구 호출만 ChatGPT Memory는 영구 기억만 보여줍니다.
- 우회 수단: 사용자 · 커뮤니티 · Anthropic 세 층에 우회가 많았습니다. 우회가 많다는 건 마찰이 진짜라는 뜻인데 전부 화면 밖에 있었습니다.
- 자료: 외부 문서로 교차검증해 제 사실 오류를 바로잡고 기억 UI를 다룬 HCI 연구(Memory Sandbox · Memolet 등)를 찾아 읽었습니다.
사용자 인터뷰나 사용성 테스트는 하지 못했습니다. 검증은 직접 써보기와 AI 피드백 라운드였고 이 한계는 회고에 적었습니다.
인스펙터를 어디에 둘까
- 입력창 위 배지가볍지만 다섯 종류의 기억을 한 번에 담지 못합니다.
- 호버 툴팁평소 화면은 깨끗하지만 찾아 들어가야만 보입니다.
- 별도 페이지자세하지만 채팅과 기억을 동시에 볼 수 없습니다.
- 사이드 패널 + 접기 + 임계 배너선택
다섯 종류를 한 시야에 담는 면적 · 입력할 때마다 지나가는 시선 동선 · 접어서 점유를 조절할 수 있다는 점으로 골랐습니다.
기억은 사용자가 승인한다
AI가 대화 중에 기억할 만한 것을 제안하고 사용자가 승인해야 기억이 됩니다. 별도 호출로 추출하는 것보다 비용과 지연이 절반이고 자동으로 쌓이는 기억을 사람이 통제합니다.
용량이 80%를 넘으면 정리하기 전에 무엇을 줄이고 무엇을 남기고 무엇이 정리되는지 먼저 보여줍니다. 이상해진 뒤가 아니라 그 직전에 개입합니다.
말과 숫자
- 슬래시 명령을 버튼으로 바꿨습니다. 일반 사용자는 슬래시를 모르고 버튼이 발견하기도 믿기도 쉽습니다.
- '메모' 대신 '기억'이라는 말을 골랐습니다. '메모'는 사용자의 행동이라 AI가 스스로 기억한다는 느낌이 약했습니다.
- 토큰 숫자 대신 게이지로 보여주고 정확한 %는 마우스를 올리면 보이게 남겼습니다.
반복
- 동기 스크롤: 비율 방식에서 위치 기준 방식으로 다듬었지만 구현해서 직접 써보니 체감이 나빠 통째로 뺐습니다.
- 첫 프로토타입: 정해진 시나리오를 따라가는 데모였고 설정 파일을 직접 쓰는 파워 유저를 암묵적으로 가정하고 있었습니다. 지금의 채팅 프로토타입은 일반 사용자 기준으로 다시 짰습니다.
- 공개 데모: 인증 없는 API가 외부에서 남용돼 토큰이 소진됐습니다. 숨긴 경로를 두는 대신 API 경로를 지우고 mock 응답으로 바꿨습니다.
배운 점
- 개념적으로 맞는 것과 써서 좋은 것은 다릅니다. 핵심 인터랙션은 프로토타입으로 확인하기 전에 확정하지 않습니다.
- 목표에 수단을 적지 않습니다. '나란히 놓는다'가 아니라 '동시에 시야에 머문다'로 적어야 더 나은 해법이 열립니다.
- 사용자가 한 행동의 결과가 지금 화면 밖에 반영되면 UX 실패입니다.
- 늘 다 보여주는 투명성은 오히려 방해가 됩니다. 평소엔 게이지 하나만 두고 필요할 때만 펼칩니다.
다시 한다면 자기 관찰과 AI 피드백만으로 문제를 좁히지 않겠습니다. 첫 시나리오 데모를 먼저 다른 사람에게 보여 주고 타깃을 개발자에서 일반 사용자로 바꾼 결정도 그 결과로 정하겠습니다.
Engineering · 사물을 코드로 옮기기
Track B의 전공 과목입니다. 실물 사물을 분해 → 패턴 인식 → 추상화 → 플로우차트(CT 4단계)로 옮긴 뒤 디지털 프로토타입으로 만들었습니다. 모래시계 · 오르골 · 스톱워치 · 자유주제 네 과제입니다.
- 문제
- 모래시계를 분해하며 부품을 나열하다가 모래의 흐름을 조절하는 오리피스를 통째로 빠뜨렸습니다. 사물이 무엇을 하는지가 아니라 무엇으로 되어 있는지를 보고 있었습니다.
- 결정
- 분해안을 부품이 아닌 기능 목록으로 다시 쓰고 추상화 전에 그 목적을 한 문장으로 먼저 적었습니다. 마지막 과제에서는 '성공은 이진이 아니라 정도의 문제'라는 패턴을 직접 추가했습니다.
- 결과
- 과제마다 프로토타입 4개(Next.js · HTML). 리듬게임은 그 패턴을 판정 → 최근 성적 → Rive 캐릭터의 움직임으로 옮겼습니다.
라이브태엽 오르골을 옮긴 웹입니다. 하트를 길게 누를수록 에너지가 쌓이고 그만큼 곡을 더 들을 수 있습니다.
과제마다 만든 디지털 프로토타입을 그대로 띄웠습니다. 오르골은 태엽에 감긴 에너지가 정해진 속도로 풀리는 구조를 Fireworks는 충전 → 저장 → 방출 → 출력 흐름을 옮겼습니다.
분해안
처음 쓴 분해안입니다. 피드백을 겹쳐 보면 부품을 나열하느라 사물이 하는 일을 빠뜨린 자리가 드러납니다.
- 고수준윗칸에 남은 모래와 아랫칸으로 떨어진 모래의 비율로 시간이 얼마나 흘렀는지 측정한다목적(What)보다 방법(How)에 치우침
- 중수준모래시계가 끝까지 진행됐는지 파악아래 '상태 변화'의 한 상태일 뿐 — 중복
- 저수준전체 모래가 한 칸에 모여 있는가변수
- 중수준뒤집어서 시스템을 초기화하고 시작
- 저수준뒤집었는가변수
- 저수준전체 모래의 양 (시간의 최댓값)상수
- 중수준중력에 의한 지속적인 상태 변화
- 저수준윗칸에 남은 모래 (남은 시간)변수
- 저수준아랫칸에 쌓인 모래 (흘러간 시간)변수
- 중수준상태 제어 — 좁은 목(오리피스)이 흐르는 속도를 일정하게
- 중수준출력 — 투명한 유리로 남은 양을 눈에 보여준다
Rive · 리듬게임 캐릭터
Rive는 벡터 애니메이션을 상태머신째로 만들어 코드에서 입력값으로 움직이게 하는 도구입니다. 캐릭터를 Rive 에디터에서 직접 그리고 팔 · 다리 · 머리카락 · 입처럼 부위마다 따로 움직이게 리깅한 뒤 부위별 애니메이션 14개를 만들고 value(0–100) 입력 하나에 동작이 섞이도록 상태머신을 짰습니다. 게임에서는 최근 판정 12개의 가중 이동평균을 이 입력에 넣어 점수 대신 캐릭터의 움직임으로 지금 잘하고 있는지를 알려줍니다. 여기서는 옆 게이지를 끌어 그 입력을 직접 바꿔 볼 수 있습니다.
아트보드
- Artboard 캐릭터 본체
- Sparks-Eyes 눈 반짝임 · 중첩 아트보드 ×2 · Boolean 입력
- 부위별 애니메이션
- 14
- 상태머신 레이어
- 7
- 코드에서 받는 입력
- 1
상태머신 · State Machine 1
value 0–100 숫자부위별 애니메이션 14개 · 눌러서 하나만 재생
arm 늘 도는 레이어늘 도는 부위 레이어6개 · 상태머신에서 항상 재생
value 블렌드 애니메이션8개 · 입력값에 따라 섞임
분해안이 뭐였나
사물 하나를 목적(고수준) → 단계(중상위) → 동작(중수준) → 상수 · 변수(저수준)로 쪼개는 일입니다. 이 표가 패턴 인식 · 추상화 · 플로우차트의 재료가 되고 마지막엔 디지털 프로토타입이 됩니다.
처음엔 고 · 중 · 저 세 단계로 시작했고 오르골에서 다섯 단계를 거쳐 네 단계로 줄였습니다. 부품 이름(명사) 칸은 읽기 편하게만 해 줄 뿐 기능을 설명하지 못해서 뺐습니다.
모래시계: 부품이 아니라 기능
첫 분해안은 모래와 칸 · 뒤집기를 빠짐없이 적었지만 정작 모래시계가 하는 일을 빠뜨렸습니다. 모래가 일정한 속도로 흐르게 하는 좁은 목(오리피스)과 남은 양을 눈에 보여주는 유리입니다.
그래서 기준을 바꿨습니다. 입력(사용자 조작) → 처리(스스로 작동) → 출력(보는 사람에게 전달) 순서로 쓰고 '이게 없으면 너무 빠르거나 느리거나 들쭉날쭉해지는 부품은 무엇인가?'를 꼭 묻습니다. 디지털로 옮기면 오리피스는 사라져도 그 역할은 easing이나 타이머로 남아야 합니다.
오르골: 저수준만 보고 위를 다시 쓰기
최종안을 쓰고 나서 저수준의 상수 · 변수만 보고 위 문장이 다시 만들어지는지 스스로 검증했습니다. 그러다 '에너지를 소리 발생부까지 전달'이라는 문장에 거버너가 만드는 속도 제한이 빠져 있다는 걸 찾았습니다. 아래 칸에는 '제한한다'가 있는데 위 칸에는 '전달'만 있어 인과가 위로 올라가지 못하고 있었습니다.
정의를 세워 놓고도 적용이 흔들린 곳도 있었습니다. 저수준은 상수 · 변수라고 정해 놓고 태엽 키 아래에 '손잡이'라는 명사를 적었습니다. 그 뒤로는 한 칸을 쓸 때마다 그 칸의 정의에 맞는지부터 봅니다.
출근 준비 → 리듬게임
자유주제에서는 출근 준비와 핸드드립을 분해했습니다. 세 단계가 맞지 않아 고수준 → 중수준 → 중저수준(동작) → 저수준(메타데이터: 소요 시간 · 필수 여부 · 병렬 가능)으로 네 단계를 직접 제안했습니다.
분해하다 보니 동작마다 성공 여부가 이진이 아니라 정도의 문제였습니다. 머리가 덜 말랐다고 지각하지는 않습니다. 이 '부분 품질의 누적'을 패턴으로 직접 추가했고 판정이 perfect부터 miss까지 나뉘는 리듬게임으로 옮겼습니다.
배운 점
- 분해안은 부품 목록이 아니라 기능 목록입니다.
- 고수준이 목적(What)인지 방법(How)인지 먼저 묻습니다. How가 섞여 있으면 한 단계 더 올릴 수 있습니다.
- 저수준만 보고 위 문장을 다시 쓸 수 있어야 분해가 끝난 것입니다.
- AI의 첫 답은 출발점이지 정답이 아닙니다. 제가 의도와 본질을 알고 있어야 AI의 작업물을 평가할 수 있습니다.
미적 문해력 · 시선의 기준
미감의 기준을 세우는 과목입니다. 직접 찍은 사진을 좋은 조형과 나쁜 조형으로 나누고 '예쁘다' 같은 평가어 없이 조형의 말로만 이유를 쓰며 4주 동안 기준을 쌓았습니다.
- 문제
- 좋다는 감각은 있는데 이유를 조형의 말로 설명하지 못했습니다. 2주차까지 good 카드 23장에서 새로운 상위 기준이 하나도 나오지 않았습니다.
- 결정
- 임시메모 → 영구메모 카드 → 넘버링 트리 → 종합 통찰로 쌓았습니다. 3주차엔 '의도가 있는 조형인가', 4주차엔 '나는 왜 이것에 반응하는가'를 기준에 더했습니다.
- 결과
- 카드 40장 이상 · 통찰 가지 19개 · 책 가안 『사이의 사건』 6개 챕터.
good 좋은 조형bad 나쁜 조형
122주차 · 좋은 조형 · 01 / 47
색이 통제될 때 다른 변수(재질·면·점·선)가 시각의 주체로 떠오를 때
벽돌(거친 면·줄눈)과 금속 파이프(매끈한 곡면)가 같은 분홍 한 톤으로 칠해져 색이라는 변수가 제거된다.
세운 기준
- 좋은 조형과 나쁜 조형의 차이는 매력 한 점이 있느냐가 아니라 그 한 점을 받쳐주는 베이스가 정돈되어 있느냐입니다.
- 모든 요소가 최대치로 설정되어 위계가 사라지면 의도가 전달되지 않습니다.
- 완성도는 처음 느낌이 아니라 자세히 봤을 때 정해집니다.
- 저는 많은 것이 잘 어우러진 화면보다 적은 것이 정확히 놓인 화면을 좋아합니다.
익숙한 만족을 깨기
2주차 회고에서 새 가지가 하나도 없다는 걸 확인하고 체크리스트를 만들었습니다. 4주차에 비어 있던 가지 두 곳을 채우고 새 상위 가지를 하나 열었습니다. 'bad 이미지 2장 이상 모으기'는 달성하지 못해 다음으로 넘겼습니다.
화면으로 가져가는 것
'한 점에 시선이 모이고 나머지는 정돈된 베이스'라는 기준은 대시보드나 경고 화면에서 무엇을 가장 먼저 보여줄지 정할 때 씁니다. 모든 걸 강조하면 아무것도 전달되지 않는다는 기준은 경고를 남발하는 UI를 피하는 근거가 됩니다.
수료증

Phi Pre‑course 1기 Track B 수료증 · 2026.06.20 · No.CE260620036 · 원본 PDF














































