"Software Fundamentals Matter More Than Ever" — Matt Pocock

 

https://youtu.be/v4F1gFy-hqg?si=1ZYrVgRvvVX__4gc

 

 

 

위 강의를 정리한 것이다.

Spec to Code

지금 현재 (2026년 5월) Specs-to-code movement가 대세이다.

참고 : 2026.03.02 - [AI코딩] - 스펙 주도 개발 (Spec Driven Development, SDD)

 

Spec을 작성하고 AI한테 일을 시킨다. 그리고 코드를 보지 않는다.

 

근데 결국에 보게 된다. 왜냐면 문제가 생기기 때문이다.

문제가 생기면 다시 Spec을 수정하고 컴파일을 돌린다.

 

그렇지만 이런 식으로 하다 보면 점점 AI는 나쁜 코드를 짜다가 이내 쓰레기 같은 코드를 만든다.

(이거 ㄹㅇ임...🥲)

이건 왜 그럴까?

 

소프트웨어 엔트로피라는 말이 있다. 부분만 고치면 시스템은 무너진다.

 

Code is (not) cheap

"나쁜 코드는 어느 때보다 비싸졌다."

 

강연자가 한 말이다. AI시대 더 이상 코드는 싸지 않다.

AI는 좋은 코드베이스에서는 아주 잘 동작한다. 그러나 코드베이스가 구리다면? AI는 위의 Specs to code사례처럼 점점 더 안 좋은 코드들을 양산해 낸다.

 

"소프트웨어 기초가 어느 때보다 중요하다."

 

어쩌라고

❤️ 그래서 어쩌란걸까? ❤️

 

Grill Me

AI와 나는 사실 같은 생각을 하고 있지 않다. AI와 나 사이에는 아직 얘기하지 못한 맥락(Design concept)이 남아있다.

그럼 어쩔까? 강연자는 /grill-me 스킬을 제안한다. (스킬은 깃헙 레포가 마지막에 첨부되어있다.)

 

즉, AI와 내가 같은 이해에 도달할 때 까지 계속 질문하라는 것이다. 

 

그다음 /write-a-prd (prd : product requirements document) 로 질문 내용들을 문서로 생성해라. 

 

혹은 변경이 적을 경우 /write-issue로 그냥 에이전트한테 일 주고 넘어갈 수 있다.

 

저자는 grill-me 스킬이 클로드의 plan-mode보다 훨씬 낫다고 한다. plan-mode는 너무 많은것을 빠르게 하려고 하기 때문이다.

 

 

용어 정리

AI는 너무 장황하다(verbose). 

 

같은 말을 매번 다른 용어로 설명하곤 한다. 

만약 AI가 덜 장황하게 생각한다면 유저가 세운 계획을 더 일관되게(aligend) 구현한다. 

 

그래서 강연자는 DDD에서 나오는 개념인 ubiquitous language를 제안한다.

ubiquitous_language.md를 만들고 거기서 AI와 사용할 용어를 통일하라는 것이다. 

 

 

TDD

AI가 만든 건 잘 고장난다. 의도대로 만들었는데 막상 실행이 안 된다. 왜일까? 이건 AI가 너무 빨리빨리 만들려고 그래서 그렇다. 다 만들고 보니 놓친 것들이 많은 것이다. 

 

 "너의 피드백 속도가 곧 너의 제한속도이다."라는 실용주의적 프로그래머를 언급한다. 즉, 테스트를 하면서 내가 확인할 수 있는만큼 일을 조금씩 진행하라는 것이다. 그런데 AI는 그냥 냅다 과속 갈긴다.

 

해결법은? TDD를 도입하는 것이다. 

 

TDD를 도입하게 되면 LLM이 강제로 테스트를 만들고 진행하면서 일을 작은 단위로 쪼개고, 속도를 조절하게 된다.

 

그런데? 테스트는 어렵다. 좋은 코드베이스는 테스트하기 쉬운 코드베이스이다.

 

딥 모듈

그래서 테스트하기 쉬운 코드베이스는 어케 만드는데?

 

 

깊은 모듈은 

  • 기능이 많고
  • 단순한 인터페이스를 가지고 있고
  • 복잡성을 숨긴다.

얕은 모듈은

  • 기능이 많지 않고
  • 인터페이스가 복잡하고
  • 복잡성이 드러난다.

 

https://youtu.be/v4F1gFy-hqg?si=uIUPLVuxWOBUEZ5v

 

얕은 모듈의 코드베이스는 위와 같은 모양이다. 작은 모듈들이 수많이 산재해있다. 

 

이러면 AI가 내 코드를 이해하지 못한다. 

 

그렇다면 깊은 모듈은 어떤가?

 

 

 

위와 같은 모양이다.

 

몇 개의 큰 모듈로 통합되어 있으며 이들이 각각 깔끔한 인터페이스를 노출하고 있다.

 

이런 인터페이스들은 잘 통제된 환경에 있어야하고 정말 잘 짜여져 있어야 한다. 그래야 AI가 잘한다.

 

그래서 강연자는 이런 것도 스킬을 만들어뒀다. /improve-codebase-architecture 

 

 

회색 상자

AI로 구현을 하다 보면 내 뇌가 AI가 생성한 코드를 따라가지 못한다.

 

그럼 어떡할까? 사용자는 인터페이스를 설계하고, 그 구현은 AI에게 넘기면 된다. 즉 깊은 모듈의 인터페이스를 제외한 부분를 그냥 모르는 상태로 두자는 것이다. (=회색상자) 그대신 인터페이스는 잘 짜야겠지?

 

 

 

더 자세히 알고싶다

https://www.youtube.com/watch?v=EJyuu6zlQCg

 

 

 

 

 

참고


https://youtu.be/v4F1gFy-hqg?si=-0kmlXJqlGFqEp3L

https://github.com/mattpocock/skills (깃헙 레포)