아이디어와 인사이트

AI 퍼스트 개발, 코딩 가드레일, 그리고 폐기 가능한 아키텍처를 탐구합니다.

Meteor development는 실제다. 코드베이스까지 같이 무너질 필요는 없다

이 밈이 웃긴 이유는 팀이 실제로 계속 바뀌는 목표, 고정된 마감, 반쯤만 정해진 범위 속에서 개발하기 때문입니다. Autotomy는 환상적인 계획을 고치지 못하지만, development가 멈추지 않게 만들 수는 있습니다.

Meteor development라고 부르자. 종착지는 먼저 발표되고, 정거장은 중간에 바뀌고, 예산은 알아서 맞추라는 전제가 깔리고, 엔지니어링 조직은 열차가 이미 "곧 출발"한다고 여겨지는 상태에서 선로를 깔아야 하는 진행 방식이다. 이 밈이 웃긴 이유는 실제 팀에서 너무 자주…

Stanford CS146S는 AI coding을 제대로 보고 있다. 빠진 과목은 아키텍처다

Stanford CS146S를 AI 아키텍처 관점에서 리뷰하고 비판적으로 검토하며, AI coding의 방향은 맞지만 대체 가능성을 지탱할 설계 규율이 빠져 있음을 짚습니다.

Stanford CS146S는 정식으로는 CS146S: The Modern Software Developer라는 수업입니다. 담당 교수는 Mihail Eric이고, 2025년 가을에 처음 개설된 강의입니다. 수업의 공식 개요와 syllabus details는…

훌륭한 엔지니어링 아이디어가 AI가 경제성을 만들기 전까지 틈새에 머문 이유

Design by contract, property-based testing, mutation testing, model checking은 나쁜 아이디어가 아니었습니다. 지속적으로 운영하기에 필요한 전문성이 너무 무거웠을 뿐입니다. AI가 그 방정식을 바꿉니다.

소프트웨어 엔지니어링에는 읽는 순간 바로 맞는 말처럼 느껴지는 아이디어가 많습니다. 당연히 contracts는 function이 무엇을 받아들이고 무엇을 반환해야 하는지 정의해야 합니다. 당연히 tests는 몇 개의 예제만 보는 대신 properties를 검증해야 합니다. 당연히 팀은…

Vibe Code에서 Production까지: AI-Coded React Native 앱이 확장되려면 Guardrails가 필요한 이유

AI는 React Native MVP를 아주 빠르게 ship할 수 있지만, guardrails가 없으면 작은 변경 하나가 전혀 상관없어 보이던 flow까지 깨뜨릴 수 있습니다. declarative constraint가 속도가 fragility로 바뀌지 않게 만드는 방식을 설명합니다.

Vibe coding의 첫 구간은 믿기 어려울 만큼 생산적으로 느껴집니다. Cursor와 Claude Code는 login, dashboard, settings, push notifications까지 순식간에 만들어 내기 때문에, 창업자 혼자서도 며칠 만에 MVP를 live로 올릴 수…

Vibe coder를 위한 React Native App Lifecycle 가이드

개발 환경에서는 잘 되는데 점심 먹고 돌아오면 앱이 하얀 화면을 띄운다. 네이티브 lifecycle을 제대로 다루는 resume status 패턴을 설명합니다.

Cursor로 멋진 Expo 앱을 만들었다. Claude Code가 auth flow, dashboard, settings screen까지 전부 생성해 줬다. 배포했다. 사용자가 설치했다. 그리고 DM이 오기 시작한다. "점심 먹고 돌아와서 열면 왜 하얀 화면이 뜨죠?" "왜 아침마다…

왜 Vibe-Coded React Native 앱은 실행 직후 크래시가 나는가 (그리고 막는 법)

optional SDK가 core infrastructure처럼 초기화되면 앱은 실행 직후 crash할 수 있습니다. non-critical tool이 production을 함께 끌어내리지 않게 만드는 dependency tier 시스템을 설명합니다.

Vibe-coded 모바일 앱에서 흔한 launch failure 중 하나는 analytics, attribution, crash reporting이 정말로 critical한 service와 나란히 초기화되는 것입니다. 그런 optional SDK 중 하나가 특정 device나 특정…

왜 Cursor에서 NativeWind로 Vibe Coding 하면 React Native 앱이 규모가 커질수록 망가지는가

주말 동안 Cursor로 MVP를 배포했지만 이제 색 하나 바꾸려면 47개 파일이 흔들린다. 그 출혈을 멈추는 styling contract를 설명합니다.

Cursor를 열고 prompt를 입력하자, Claude Code가 순식간에 완전한 React Native UI를 만들어 냈습니다. flex layout, 둥근 버튼, color theme까지 첫 시도에 모두 동작했습니다. TestFlight에 올렸고, 사용자가 다운로드하기…

왜 Claude Code가 당신의 코드를 리뷰하면 안 되는가 (대신 무엇을 써야 하는가)

LLM 코드 리뷰는 비결정적이고 느리며 아키텍처 위반을 놓친다. 실제로 코드를 깨끗하게 유지하는 O(1) guard stack을 설명합니다.

제 네트워크에 있는 한 개발자가 CI 코드 리뷰어로 Claude Code를 붙였습니다. "PR은 그냥 Claude한테 보게 하면 돼요"라고 하더군요. "제가 놓치는 것도 잡아 줘요." 그래서 같은 PR을 Claude에게 두 번 돌려 보라고 했습니다. 첫 번째 리뷰는 error…

마이그레이션하지 말고 삭제하라: Vibe-Coded React Native 앱의 리팩터링 전략

AI가 생성한 코드를 리팩터링한다는 건 애초에 없던 의도를 역으로 해석하는 일이다. 삭제를 안전하게 만드는 interface 중심 replacement 패턴을 설명합니다.

생물학에서 autotomy는 더 이상 유용하지 않은 신체 일부를 스스로 떼어 내는 행동입니다. 도마뱀은 포식자를 피하려고 꼬리를 버립니다. 한때는 유용했지만, 살아남으려면 놓아줘야 합니다. 그리고 새 꼬리가 다시 자랍니다. Vibe-coded React Native 앱을 리팩터링할…

Cursor와 Claude Code가 React Native 아키텍처를 망가뜨리는 방식 (그리고 고치는 법)

AI가 만든 auth는 새 feature가 잘못된 service를 건드리기 전까지는 멀쩡해 보입니다. vendor 교체와 feature 작업이 login을 깨뜨리지 않게 만드는 interface 중심 architecture를 설명합니다.

Vibe-coded React Native 앱에서 반복해서 보이는 failure mode 중 하나는, 새 feature가 기존 service를 직접 import하고 자기 소유가 아닌 state를 건드린 뒤 전혀 관계없는 flow를 깨뜨리는 것입니다. auth가 특히 자주 희생되는…