아이디어와 인사이트

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

AI 시대, 코드 리뷰는 명세 검토가 된다

AI가 명세에서 구현, 테스트, contract까지 만들어낼 수 있게 되면, 인간이 가장 크게 기여할 수 있는 일은 더 앞단으로 이동합니다. 가장 엄격하게 검토해야 할 대상은 구현이 아니라 명세 그 자체입니다.

AI를 붙여 몇 주만 개발해 봤어도, 아마 이 감각을 이미 알고 있을 겁니다. PR을 엽니다. 코드는 충분히 깔끔합니다. 이름도 무난합니다. 테스트도 있습니다. 겉으로 보기엔 분명히 망가진 곳이 없습니다. 그런데도 어딘가가 걸립니다. 경계가 조금 흐릿한 걸지도 모릅니다.…

AI Safety Stack: types, contracts, property tests, mutation gates

AI-generated code를 production에서 버티게 하려면 code review만으로는 부족합니다. type constraints부터 mutation testing, runtime containment까지 layered safety stack이 필요합니다.

AI-generated code의 가장 위험한 점은 항상 틀리다는 데 있지 않습니다. 가장 위험한 점은 너무 자주, merge해도 될 만큼 그럴듯해 보인다는 데 있습니다. 바로 그 점이 리스크입니다. 명백히 깨진 code는 잡힙니다. 하지만 그럴듯해 보이고, 몇 개의…

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…