단순하게 푸는 게 답일 때가 많습니다.

안녕하세요, 데포르매틱의 유민수 개발자입니다.

저는 여전히 AI 스타트업의 CTO이자 풀스택 개발자로 일하고 있습니다. 여러 프로젝트를 직접 진행하면서 늘 스스로에게 던지는 질문이 있어요.

"이 문제를 가장 간단하게 풀 수 있는 방법은 뭐지?"

처음에는 멋진 설계와 화려한 기술에 끌렸습니다. (사실 AI를 도입하면서 쉬워진 탓에 자만한 부분도 있었죠) 새로운 인프라를 붙이고, 구조를 쪼개고, 최신 트렌드를 적용하는 게 뭔가 있어 보였거든요. 마이크로서비스로 쪼개고, 쿠버네티스로 오케스트레이션하고, 이벤트 드리븐으로 설계하고... 기술 블로그에서 보던 그 멋진 아키텍처를 제 손으로 만든다는 게 설렜죠.

그런데 시간이 지날수록 깨닫게 됩니다. 복잡하게 가는 게 답이 아닐 때가 훨씬 많다는 걸요.

한 번은 이런 일이 있었습니다. 실시간으로 데이터를 처리하려고 다른 라이브러리를 도입하려던 순간, 한 팀원이 물었어요. "그냥 일정 간격마다 데이터를 확인하면 안 될까요?" 처음엔 '이거 너무 단순한 거 아닌가?' 싶었는데, 막상 계산해보니 우리 상황에서는 충분했습니다. 오히려 더 안정적이었죠.

그날 이후로 저는 괜히 복잡하게 만들려는 습관에서 조금씩 벗어나기 시작했습니다.

단순함의 힘

좋은 설계는 대체로 밋밋합니다. "이게 다야?" 싶을 만큼요.

하지만 그 단순함이 팀을 살리고, 제품을 오래 버티게 합니다.

제가 경험한 가장 극적인 사례가 있습니다. AI를 활용한 운세 시스템을 개발한 적이 있어요. 사주에 대한 복잡한 이론을 하나씩 뜯어 넣고, 심지어 전문가까지 초빙해 이론을 적용했죠. 그런데 기본 원리만 반영하고 나머지는 단순한 룰베이스로 만들었을 때, 고객들은 오히려 더 긍정적인 반응을 보였습니다. 그때 깨달았습니다. 단순함이 사람들에게 더 와닿을 수 있다는 걸요.

바이브 코딩을 하든, 개발을 하든 마찬가지예요.

AI가 길게 뱉어내는 코드보다, 그걸 간단하고 알기 쉽게 스스로에게 묻고 이해하는 게 더 중요했어요.

저는 AI가 생성한 코드를 받으면 늘 이렇게 자문합니다:

"이 중에서 정말 필요한 건 뭐지?"

"더 줄일 수 있는 부분은 없나?"

"미래의 나도 이해할 수 있을까?"

- 단순해야 리뷰가 쉽고

팀원이 5분 안에 이해할 수 없다면, 그건 너무 복잡한 겁니다.

- 단순해야 협업이 가능하며

남이 수정하기 두려운 코드는 결국 레거시가 됩니다.

- 단순해야 나중에 다시 쓸 수 있습니다.

6개월 후의 내가 봐도 "아, 이거구나!" 할 수 있어야 진짜죠.

단순함은 무능함이 아닙니다. 오히려 가장 어려운 일이죠.

복잡한 걸 복잡하게 만드는 건 쉽습니다. 복잡한 걸 단순하게 만드는 게 진짜 실력이에요.

실행 속도를 지켜주는 선택

실제로 저는 이런 원칙을 따릅니다:

  1. 문제가 실제로 발생하기 전까지는 대비하지 않는다 (테스트 이야기를 하는게 아니에요! 테스트는 확실하게)

  1. 소수의 확실한 페인 포인트를 잡는 것으로 시작한다. 당장 지갑에서 돈을 가져가달라고 할만큼

  2. 성능 문제는 테스트 후에 해결하는 것도 방법이다. 실행이 먼저다.

  3. "만약에"로 시작하는 요구사항은 백로그 맨 뒤로 보낸다

결국 중요한 건 앞으로 올지 모르는 문제가 아니라, 지금 눈앞에 있는 문제를 단순하게 푸는 것이더라고요.

단순한 시스템은 확장하기도 쉽습니다. 복잡한 시스템을 확장하는 것보다, 단순한 시스템을 처음부터 다시 만드는 게 더 빠를 때가 많아요.

결론적으로

말이 좀 길었나요? ㅎㅎ

결국 "가능한 가장 단순한 방법부터 시도하자." 가 제 결론입니다.

물론 쉽지 않아요. 단순한 해법을 찾는 건 때로 복잡한 해법을 만드는 것보다 더 많은 고민이 필요합니다. "이것도 넣고, 저것도 넣자"는 쉽지만, "이건 빼도 되지 않을까?"를 결정하는 건 어렵죠.

하지만 그 고민의 시간이 아깝지 않았어요.

- 단순한 코드는 새벽 3시 장애 대응 때도 고칠 수 있었고

- 단순한 시스템은 신입 개발자도 첫날부터 기여할 수 있었으며

- 단순한 프로세스는 팀이 성장해도 계속 유지됩니다.

최근에 한 고등학생 분이 저에게 카톡을 보내고 물었어요.

"좋은 개발자가 되려면 뭘 공부해야 해요?"

저는 이렇게 답했습니다.

"새로운 기술을 배우는 것도 중요하지만, 그보다 중요한 건 프로젝트에 대한 이해에요. 멋진 기술을 적용하는 끝내주는 망치를 가지는 것보다, 상황에 맞는 적절한 도구를 사용하는게 중요하죠. 망치를 들면 모든 게 못으로 보이거든요."

👉 지금 붙잡고 있는 문제도 혹시 괜히 복잡하게 보고 있는 건 아닐까요? "더 단순하게 풀 수 없을까?"라는 질문을 한 번 던져보면, 의외로 길이 열릴지도 모릅니다!

3
1개의 답글

뉴스레터 무료 구독