소프트웨어 개발 직군이 정말 다양함을 새삼 느꼈음
나는 백엔드, 특히 API 개발을 하는데, 생산성의 가장 큰 병목은 대부분의 사람들이 요구사항을 제대로 정의하지 못함에 있음
PM에게 물어보면 회피하고, 프론트엔드 개발자는 백엔드가 API를 주길 기다림
결국 가장 어려운 건 코딩이 아니라 요구사항을 발견하고 해석하는 사고 과정임
네가 겪는 어려움은 프로그래밍 자체의 문제가 아니라 비효율적인 조직 구조 때문임
진짜 프로그래밍은 자신이 설계한 시스템을 구현해 생명을 불어넣는 행위임
단순히 회사에서 코드를 쓰는 일을 ‘Programming’이라 착각하면 오해가 생김
나는 인문학 전공 학생들에게 프로그래밍을 가르치는 영문학 교수인데, 글쓴이의 경력은 매우 흥미로움
다만 대규모 상용 소프트웨어 개발 경험은 많지 않을 듯함
그가 말하는 “프로그래밍의 미래” 예측은 멋지지만, 산업적 맥락에서는 다소 한계가 있을 수 있음
(참고: Stephen Ramsay 소개)
나는 백엔드, 프론트엔드, 풀스택, QA 자동화, DevOps까지 다 해봤음
결국 중요한 건 마인드셋과 얼마나 기술에 노출되어 있는가임
LLM이 내 생산성을 크게 높여줌 — 특히 아키텍처적 사고방식을 가진 나에게는
예전엔 몇 달 걸리던 걸 몇 시간 만에 만들어냄
요즘은 LLM으로 오래된 Shockwave Lingo 코드를 현대 언어로 번역해 레거시 게임을 복원 중임
만약 AI가 스스로 요구사항을 정의할 만큼 똑똑하다면, 그 시점엔 vibe coding 자체가 불필요해짐
결국 vibe coding이 미래라면, 그건 AI가 완전하지 않다는 전제를 포함함
상상 속 AI의 능력과 한계를 임의로 설정하는 순간, 논의 자체가 모호해짐
Jira 티켓을 LLM에 넘길 수 없을 정도로 요구사항이 모호함
이해관계자들과 네다섯 번은 회의해야 명확해짐
C로 vibe coding을 해봤는데, 여전히 C는 싫음
AI가 사람처럼 메모리 해제를 깜빡하고 나중에 수정함
Rust로 할 때는 훨씬 즐거웠고, 언어의 의존성 생태계를 이해하는 게 진짜 실력임
AI는 이런 ‘책 지식’을 빠르게 탐색하는 데 도움을 줌
Rust 코드 리뷰가 훨씬 명확함
C에서는 메모리 해제 여부를 일일이 확인해야 했지만, Rust는 그런 걱정이 거의 없음
vibe coding을 하더라도 언어의 안전 장치가 있는 Rust가 훨씬 낫다고 생각함
AI가 Python과 JavaScript는 잘 쓰지만 C/C++은 여전히 인간처럼 실수함
Python의 인간 친화적 기능들이 AI에게도 도움이 됨
이제는 AI 덕분에 직접 UI나 유틸리티를 새로 만드는 게 더 쉬워졌고, C++로 성능 구간만 구현하는 것도 간단해짐
나도 C로 vibe coding을 해봤는데, AI가 메모리 관리를 꽤 잘 처리함
GDB로 직접 디버깅했으면 훨씬 오래 걸렸을 것임
문자열 처리나 포인터 관리 같은 불쾌한 부분을 대신해줘서 만족스러움
요즘은 어셈블리를 공부하면서 AI에게 같은 문제를 풀게 해 비교함
컴파일러가 생성한 코드가 항상 더 효율적이지만, AI의 실수를 학습 기회로 삼고 있음
직접 에이전트를 만드는 법을 배우길 추천함
로컬 LLM으로도 메모리 해제 같은 검증을 자동화할 수 있음
최근 “Why AI Needs Hard Rules, Not Vibe Checks”라는 토론이 있었음
(링크)
Rust가 vibe coding에 적합한 이유는 타입과 생명주기 보장 같은 무료 검증 기능 덕분임
이런 검증이 없으면 LLM이 불안전한 코드를 쉽게 만들어냄
추상화는 인간뿐 아니라 LLM에게도 필요함
LLM을 위해 설계된 언어를 상상해봄
모든 함수, 변수, 타입, 예외를 엄격히 명세해야 하는 언어
쓰기엔 불편하지만 읽기와 검증이 쉬운 구조일 것임
그렇게 많은 규칙이 필요하다면, 굳이 AI를 쓸 이유가 있을까? Shellcheck 같은 도구도 초보를 전문가로 만들어줌
LLM에게는 정적 분석이 쉬운 언어가 더 중요함
RL로 개선하려면 코드의 정합성을 자동으로 판단할 수 있어야 함 Prolog 같은 논리 기반 언어의 재조명이 필요함
Rust도 논리 오류는 막지 못함
LLM이 버그 많은 코드를 낸다면, 언어가 달라도 결과는 비슷함
처음엔 vibe coding이 놀라웠지만, 곧 지속적인 수정 루프가 정신을 녹임
마치 알고리즘 피드 스크롤처럼 집중력을 빼앗음
지금은 직접 코딩하고, 지루한 부분만 ChatGPT에 맡김
정말 영혼이 빠져나가는 느낌임
게다가 배우는 것도 없음
LLM에게 먼저 명세(spec) 를 쓰게 한 뒤 수정하는 방법을 써봄
이렇게 하면 요구사항을 명확히 하고, 다른 AI로 쉽게 전환할 수 있음
문제를 작은 단위로 쪼개서 검증하는 게 가장 효과적이었음
LLM이 메모리 누수 없는 C 코드를 만들 수 있을지 의심스러움
인간 개발자도 실수하는 영역인데, 학습 데이터 품질이 낮은 LLM은 더 위험함
segfault 나는 프로그램을 vibe coding으로 만든다면, 그건 시간 낭비임
나는 Rust와 LLM을 오래 써왔는데, cargo check 덕분에 코드 품질이 매우 높음
거의 깨지지 않고 항상 컴파일됨
LLM도 스스로 오류를 탐지하도록 자원을 할당할 수 있음
인간은 피로하지만 LLM은 그렇지 않음
LLM은 점점 고품질 데이터로 미세조정되고 있음
좋은 C 코드로 재학습시키면 개선될 여지가 있음
AI가 C에서 undefined behavior를 피한다고? 믿기 어려움
인간처럼 실수하도록 훈련된 모델이라면, 같은 버그를 낼 가능성이 높음
하지만 최신 모델은 강화학습과 합성 데이터로 좋은 코드를 강화함
가장 가능성 높은 토큰을 예측하므로, 흔한 실수는 덜 함
Copilot Chat의 Sonnet이 메모리 오류 없는 C++ 코드를 한 번에 생성해줬음
크래시 원인도 잘 찾아줌
인간을 흉내내지 말고 컴파일러를 흉내내도록 훈련해야 함
그래서 Rust가 LLM 코드 생성에 더 적합하다고 생각함
Claude로 C 코드를 짜보면, 규모가 커질수록 pthread나 메모리 버그가 생김
Zig나 Rust 같은 현대 언어가 훨씬 나음
vibe coding이 나를 불편하게 만드는 이유는 단순히 ‘치팅’ 같아서가 아님
프로그래밍은 영혼이 담긴 예술임
문제를 푸는 방식이 사람마다 다르고, 그게 창의성임
vibe coding은 그 창의성을 기계가 흡수해버리는 행위처럼 느껴짐
결국 생각도, 결정도, 실수도 모두 기계가 대신함
“vibe-oriented programming language(VOP)”를 만들자는 제안이 있었음
하지만 LLM을 위한 언어라면 오히려 엄격하고 장황해야 함
모든 조건과 예외를 명시하지 않으면 컴파일되지 않아야 함
인간에겐 불편하지만, LLM에게는 혼란을 줄이는 장점이 됨
사실 출력 언어보다 중요한 건 입력 언어(프롬프트) 임
인간이 개념을 설명하고, AI가 그걸 코드로 바꾸는 구조가 필요함
그 설명을 들으니 Ada 언어가 떠오름
한 번 컴파일되면 거의 항상 제대로 동작했음
vibe coding을 하더라도, 결과를 검토할 수 있으려면 잘 아는 언어로 해야 함
그렇지 않다면 그냥 brainfuck으로 실험해보는 게 나을지도 모름
“그럼 x86 어셈블리로 해보면?”이라는 질문엔,
“내가 직접 리뷰하고 확장할 수 있어야 한다”는 이유로 거절함
순수 vibe coding은 사고 실험일 뿐, 현실적인 목표가 아님
언젠가 AI가 QA까지 맡을 수 있겠지만, 아직은 안전한 언어와 인간 검증이 필수임
“직접 확장한다면 이미 순수 vibe coding이 아니다”라는 말에 웃음이 나옴
이제 이런 논쟁이 피곤할 정도로 오래된 개발자임
Hacker News 의견들
소프트웨어 개발 직군이 정말 다양함을 새삼 느꼈음
나는 백엔드, 특히 API 개발을 하는데, 생산성의 가장 큰 병목은 대부분의 사람들이 요구사항을 제대로 정의하지 못함에 있음
PM에게 물어보면 회피하고, 프론트엔드 개발자는 백엔드가 API를 주길 기다림
결국 가장 어려운 건 코딩이 아니라 요구사항을 발견하고 해석하는 사고 과정임
진짜 프로그래밍은 자신이 설계한 시스템을 구현해 생명을 불어넣는 행위임
단순히 회사에서 코드를 쓰는 일을 ‘Programming’이라 착각하면 오해가 생김
다만 대규모 상용 소프트웨어 개발 경험은 많지 않을 듯함
그가 말하는 “프로그래밍의 미래” 예측은 멋지지만, 산업적 맥락에서는 다소 한계가 있을 수 있음
(참고: Stephen Ramsay 소개)
결국 중요한 건 마인드셋과 얼마나 기술에 노출되어 있는가임
LLM이 내 생산성을 크게 높여줌 — 특히 아키텍처적 사고방식을 가진 나에게는
예전엔 몇 달 걸리던 걸 몇 시간 만에 만들어냄
요즘은 LLM으로 오래된 Shockwave Lingo 코드를 현대 언어로 번역해 레거시 게임을 복원 중임
결국 vibe coding이 미래라면, 그건 AI가 완전하지 않다는 전제를 포함함
상상 속 AI의 능력과 한계를 임의로 설정하는 순간, 논의 자체가 모호해짐
이해관계자들과 네다섯 번은 회의해야 명확해짐
C로 vibe coding을 해봤는데, 여전히 C는 싫음
AI가 사람처럼 메모리 해제를 깜빡하고 나중에 수정함
Rust로 할 때는 훨씬 즐거웠고, 언어의 의존성 생태계를 이해하는 게 진짜 실력임
AI는 이런 ‘책 지식’을 빠르게 탐색하는 데 도움을 줌
C에서는 메모리 해제 여부를 일일이 확인해야 했지만, Rust는 그런 걱정이 거의 없음
vibe coding을 하더라도 언어의 안전 장치가 있는 Rust가 훨씬 낫다고 생각함
Python의 인간 친화적 기능들이 AI에게도 도움이 됨
이제는 AI 덕분에 직접 UI나 유틸리티를 새로 만드는 게 더 쉬워졌고,
C++로 성능 구간만 구현하는 것도 간단해짐
GDB로 직접 디버깅했으면 훨씬 오래 걸렸을 것임
문자열 처리나 포인터 관리 같은 불쾌한 부분을 대신해줘서 만족스러움
컴파일러가 생성한 코드가 항상 더 효율적이지만, AI의 실수를 학습 기회로 삼고 있음
로컬 LLM으로도 메모리 해제 같은 검증을 자동화할 수 있음
최근 “Why AI Needs Hard Rules, Not Vibe Checks”라는 토론이 있었음
(링크)
Rust가 vibe coding에 적합한 이유는 타입과 생명주기 보장 같은 무료 검증 기능 덕분임
이런 검증이 없으면 LLM이 불안전한 코드를 쉽게 만들어냄
추상화는 인간뿐 아니라 LLM에게도 필요함
모든 함수, 변수, 타입, 예외를 엄격히 명세해야 하는 언어
쓰기엔 불편하지만 읽기와 검증이 쉬운 구조일 것임
코드의 실행 경로가 아니라 의도를 보존하는 번역의 어려움을 다룸
Shellcheck 같은 도구도 초보를 전문가로 만들어줌
RL로 개선하려면 코드의 정합성을 자동으로 판단할 수 있어야 함
Prolog 같은 논리 기반 언어의 재조명이 필요함
LLM이 버그 많은 코드를 낸다면, 언어가 달라도 결과는 비슷함
처음엔 vibe coding이 놀라웠지만, 곧 지속적인 수정 루프가 정신을 녹임
마치 알고리즘 피드 스크롤처럼 집중력을 빼앗음
지금은 직접 코딩하고, 지루한 부분만 ChatGPT에 맡김
게다가 배우는 것도 없음
이렇게 하면 요구사항을 명확히 하고, 다른 AI로 쉽게 전환할 수 있음
LLM이 메모리 누수 없는 C 코드를 만들 수 있을지 의심스러움
인간 개발자도 실수하는 영역인데, 학습 데이터 품질이 낮은 LLM은 더 위험함
segfault 나는 프로그램을 vibe coding으로 만든다면, 그건 시간 낭비임
거의 깨지지 않고 항상 컴파일됨
인간은 피로하지만 LLM은 그렇지 않음
좋은 C 코드로 재학습시키면 개선될 여지가 있음
AI가 C에서 undefined behavior를 피한다고? 믿기 어려움
인간처럼 실수하도록 훈련된 모델이라면, 같은 버그를 낼 가능성이 높음
가장 가능성 높은 토큰을 예측하므로, 흔한 실수는 덜 함
크래시 원인도 잘 찾아줌
Zig나 Rust 같은 현대 언어가 훨씬 나음
vibe coding이 나를 불편하게 만드는 이유는 단순히 ‘치팅’ 같아서가 아님
프로그래밍은 영혼이 담긴 예술임
문제를 푸는 방식이 사람마다 다르고, 그게 창의성임
vibe coding은 그 창의성을 기계가 흡수해버리는 행위처럼 느껴짐
결국 생각도, 결정도, 실수도 모두 기계가 대신함
“vibe-oriented programming language(VOP)”를 만들자는 제안이 있었음
하지만 LLM을 위한 언어라면 오히려 엄격하고 장황해야 함
모든 조건과 예외를 명시하지 않으면 컴파일되지 않아야 함
인간에겐 불편하지만, LLM에게는 혼란을 줄이는 장점이 됨
인간이 개념을 설명하고, AI가 그걸 코드로 바꾸는 구조가 필요함
한 번 컴파일되면 거의 항상 제대로 동작했음
vibe coding을 하더라도, 결과를 검토할 수 있으려면 잘 아는 언어로 해야 함
그렇지 않다면 그냥 brainfuck으로 실험해보는 게 나을지도 모름
“그럼 x86 어셈블리로 해보면?”이라는 질문엔,
“내가 직접 리뷰하고 확장할 수 있어야 한다”는 이유로 거절함
순수 vibe coding은 사고 실험일 뿐, 현실적인 목표가 아님
언젠가 AI가 QA까지 맡을 수 있겠지만, 아직은 안전한 언어와 인간 검증이 필수임
이제 이런 논쟁이 피곤할 정도로 오래된 개발자임