얇은 훅 하나보다 그것들이 탑을 쌓을 때 생기는 탐색 비용이 더 크다. 각 계층이 어떤 계약을 제공하는지 묻고 접어도 되는 추상화를 구분한다.
[Read More]
레거시를 다음으로 옮기는 전환용 피처 플래그, 지우기 쉽게 설계하기
전환용 피처 플래그의 목표는 분기를 오래 유지하는 것이 아니라 쉽게 삭제하는 것이다. 레거시와 신규 정책을 섞지 않고 호출부 한 곳에서 전환한 구조를 정리한다.
[Read More]
침묵은 중립적인 기록이 아니었다
장애를 복구하고도 사실과 역할을 기록하지 않으면 책임의 빈칸은 대응한 사람에게 남는다. 침묵이 어떻게 사실상의 동의와 책임으로 읽히는지 돌아본다.
[Read More]
TypeScript 7 도입 전에 팀이 확인할 것들
TypeScript 7이 정식 출시됐다. 가장 눈에 띄는 변화는 새로운 타입 문법이 아니다. TypeScript로 작성했던 컴파일러와 언어 서비스를 Go 기반 네이티브 구현으로 옮겼고, 공식 사례에서는 전체 빌드가 대체로 8~12배 빨라졌다.
[Read More]
AI 도구를 바꾸는 비용을 낮추는 법 (2) — Cursor에서 Claude로, 구체 사례
Cursor의 스킬과 MCP 설정을 Claude Code로 옮기며 포맷, 전송 방식, 중복 설정의 차이를 확인했다. 실제 전환에서 그대로 가져갈 것과 다시 판단할 것을 나눈다.
[Read More]
AI 도구를 바꾸는 비용을 낮추는 법
AI 도구가 바뀌어도 작업 규칙까지 다시 만들 필요는 없다. 공통 규칙, 실행 절차, 비공개 설정을 분리해 Cursor에서 Codex로 옮긴 과정을 정리한다.
[Read More]
이상한 얇은 훅 만들지 말고, 그냥 useEffect 쓰자
값을 더하지 않는 얇은 커스텀 훅은 추상화보다 간접 참조에 가깝다. postMessage 브리지 사례로 useEffect를 직접 쓰는 편이 더 읽기 쉬운 이유를 살펴본다.
[Read More]
앱 WebView에서 장바구니가 많을 때 — 로그가 없으면 FE가 보는 것
장바구니가 많을 때만 Android WebView가 멈췄고 에러 로그는 비어 있었다. 프론트엔드가 메인 스레드·렌더·비교 실험으로 원인을 좁히는 순서를 정리한다.
[Read More]
긴급 문구 수정과 QA가 겹친 날 — 조사는 Cursor, 구현은 손으로
같은 오전, 슬랙 스레드가 두 개 붙었다.
하나는 QA 확인 요청, 하나는 “오늘 안에 텍스트만 고쳐 주세요” 긴급 건.
예전 같았으면 조사부터 막혔을 텐데, 이번엔 역할만 나눠도 금방 끝났다.
[Read More]
미션이 보스다 — 세 말을 겹쳐 읽다
마이크로소프트에 있을 때 그로스 마인드셋을 배웠고, 최근 유 퀴즈에서 젠슨 황이 미션이 보스라고 했고, GeekNews에서 잭 도시가 얇은 조직 이야기를 읽었다.
세 사람이 같은 말을 한 건 아니다. 그런데 이 순서로 듣고 나니, 예전에 감으로만 알던 게 조금씩 말이 됐다. 아래는 그걸 제가 이해한 방식으로 풀어 쓴 글이다.
[Read More]
키워드 검색 이후 — AI Mode·Gemini와 커머스가 받아들일 것
Chrome at I/O 2026의 한 축은 Gemini in Chrome — auto browse, 화면 선택, 음성, Android 확장이다.
검색 쪽은 AI Mode가 이미 한 세대 앞서 나 있다. 이 글은 검색·Gemini·커머스만 다룬다.
[Read More]
WebMCP와 선언적 API — 에이전트 시대에 사이트가 말해야 할 것
Chrome at I/O 2026에서 WebMCP가 오리진 트라이얼(Chrome 149)로 올라왔다. Gemini in Chrome도 WebMCP API 지원을 예고했다.
이 글은 I/O 실황 회고가 아니다. WebMCP와 선언적(Declarative) API, 그리고 Declarative Partial Updates와의 관계만 정리한다.
[Read More]