코딩을 넘어선 설계 역량의 중요성

지속 가능한 개발자가 되는 길

by jeromeNa

앞서 '시스템 아키텍처와 설계 사고'의 기본 개념을 살펴보았다면, 여기에서는 왜 현실에서 설계 역량이 코딩 능력보다 더 중요해지고 있는지 구체적으로 알아보자. 실제 현업에서 벌어지는 상황들과 시장의 변화를 통해 설계 역량의 가치를 확인해 보겠다.




같은 기능을 가진 두 개의 앱이 있다고 가정해 보자. 하나는 처음에는 빠르게 만들어졌지만 사용자가 늘어나면서 점점 느려지고 오류가 많아진다. 다른 하나는 처음에는 개발 시간이 좀 걸렸지만 사용자가 백만 명이 되어도 안정적으로 작동한다. 차이는 무엇일까? 바로 설계의 차이다.


실제로 많은 스타트업들이 빠른 출시에만 집중하다가 나중에 시스템 전체를 다시 만들어야 하는 상황에 처한다. 반면 처음부터 확장성을 고려해서 설계한 회사들은 성장 과정에서도 안정적으로 서비스를 제공할 수 있다.


10명의 개발자가 일하는 회사가 있다고 해보자. 설계가 잘못된 프로젝트에서는 새로운 기능 하나를 추가하는 데 한 달이 걸린다. 각자 다른 부분을 건드려야 하고, 수정하면 다른 기능이 망가지고, 테스트하는 데만 일주일이 걸린다.


반면 설계가 잘된 프로젝트에서는 같은 기능을 일주일 만에 추가할 수 있다. 어디를 수정해야 하는지 명확하고, 다른 기능에 영향을 주지 않으며, 테스트도 간단하다. 같은 사람들이 일하는데도 4배의 생산성 차이가 난다.




개발자 구인 사이트를 보면 흥미로운 현상을 발견할 수 있다. 같은 3년 경력이라도 "React 개발자"와 "시스템 설계 가능한 개발자"의 연봉 차이는 몇 배 이상 날 수 있다.


5년 이상 중급 경력에서 큰 차이가 나타난다. 단순히 코딩만 잘하는 개발자는 연봉 상승이 정체되는 반면, 설계 역량을 갖춘 개발자는 계속해서 높은 대우를 받는다. 왜일까? 기업 입장에서는 코딩할 수 있는 사람은 많지만, 전체 시스템을 설계하고 기술적 방향을 제시할 수 있는 사람은 많지 않기 때문이다.


구글, 아마존, 메타 같은 글로벌 기업들의 채용 과정을 보면 더욱 명확해진다. 이들 회사는 코딩 테스트보다 시스템 설계 면접에 더 많은 시간을 할애한다. "10억 명이 사용하는 메신저를 어떻게 설계하겠습니까?"와 같은 질문을 통해 지원자의 설계 사고 능력을 평가한다. 하지만 한국에서는 아직도 설계 면접보다는 코딩 테스트가 우선인 점이 있다.


이런 질문에는 정답이 없다. 다양한 조건을 고려해서 합리적인 설계안을 제시하고, 트레이드오프를 설명할 수 있는지가 중요하다. 코딩 실력만으로는 절대 답할 수 없는 영역이다. - 트레이드오프는 하나를 선택하기 위해 다른 가치는 포기하는 결정이다. 가치의 우선순위를 정한다고 보면 된다. -




많은 회사들이 "레거시 시스템" 때문에 고생한다. 몇 년 전에 급하게 만든 시스템이 이제는 수정하기도 어렵고, 새로운 기능을 추가하는 것도 두려운 상황이 된 것이다. 마치 임시로 땜질해 놓은 집이 시간이 지나면서 살기 힘든 집이 되는 것과 같다.


이런 상황에서는 단순히 코딩 실력이 좋은 개발자보다는, 기존 시스템을 이해하고 점진적으로 개선할 수 있는 설계 역량을 가진 개발자가 훨씬 더 가치 있다. 실제로 많은 회사들이 "레거시 시스템 개선" 프로젝트에 높은 연봉을 제시하며 경험 있는 설계자를 찾고 있다.


현대 개발은 혼자 하는 일이 아니다. 프론트엔드 개발자, 백엔드 개발자, 데이터베이스 관리자, 디자이너, 기획자가 모두 함께 일한다. 이때 각자 다른 방식으로 일하면 프로젝트는 혼란에 빠진다.


좋은 설계는 이런 혼란을 방지한다. "사용자 인터페이스는 이렇게, 비즈니스 로직은 저렇게, 데이터는 이런 식으로" 명확한 가이드라인을 제공해서 모든 팀원이 같은 방향으로 일할 수 있게 한다. 결과적으로 프로젝트가 빨라지고 품질도 높아진다.




ChatGPT나 GitHub Copilot, Claud Code, Cursor 같은 AI 도구들이 점점 똑똑해지고 있다. 간단한 기능이나 반복적인 코드는 AI가 사람보다 빠르고 정확하게 만들어낸다. 그렇다면 개발자는 필요 없어지는 걸까?


전혀 그렇지 않다. AI는 "회원가입 기능을 만들어줘"라고 하면 잘 만들어주지만, "우리 회사에 어떤 시스템이 필요한지" "3년 후를 대비해서 어떻게 설계해야 하는지" "보안과 편의성 중 무엇을 우선해야 하는지" 같은 복합적 판단은 하지 못한다.


AI는 과거 데이터를 바탕으로 학습한다. 하지만 혁신적인 설계는 종종 기존에 없던 새로운 방식을 제시한다. 넷플릭스의 마이크로서비스 아키텍처(MSA), 우버의 실시간 매칭 시스템, 인스타그램의 이미지 처리 시스템 같은 혁신적 설계들은 AI가 학습할 수 있는 기존 패턴을 벗어난 창조적 사고의 결과물이다.


또한 AI는 비즈니스 맥락을 이해하지 못한다. "이 회사의 문화에 맞는 시스템", "이 산업의 특성을 고려한 설계", "이 지역의 인프라 환경에 최적화된 아키텍처" 같은 것들은 인간만이 판단할 수 있는 영역이다.


앞으로 5-10년 안에 또는 더 빠르게 많은 단순 코딩 작업들이 AI로 자동화될 것으로 보인다. 이미 많은 개발자들이 AI의 도움으로 개발 속도를 크게 높이고 있다. 이런 추세가 계속되면 "코딩만 할 줄 아는 개발자"의 가치는 계속 떨어질 수밖에 없다.


반면 "무엇을 만들지 결정하고, 어떻게 만들지 설계하는" 역할의 중요성은 더욱 커지고, AI가 발전할수록 인간은 더 고차원적인 사고가 필요한 일에 집중해야 한다.




이미 많은 기업에서 "솔루션 아키텍트", "시스템 설계자", "테크니컬 리드" 같은 역할의 중요성이 커지고 있다. 이들은 직접 코딩하기보다는 전체 시스템을 설계하고, 기술적 의사결정을 내리며, 개발팀을 이끄는 역할을 한다.


대부분 이런 역할을 맡는 사람들의 연봉은 일반 개발자보다 높다. 이들의 결정이 전체 프로젝트의 성패를 좌우하는 책임이 포함되어 있기 때문이다.




설계를 하기 위해서는 컴퓨터를 먼저 알아야 한다. 컴퓨터 공학, 자료구조, 디자인 패턴등의 기초 이론이 없다면 구조 자체를 생각할 수 없다. 학문적으로 깊이 있게 파고들기보다는 개념 정도만 이해하는 수준만 알아도 설계의 폭이 넓어진다.


하지만, 설계 능력은 이론만으로는 기를 수 없다. 실제 프로젝트를 통해 경험을 쌓는 것이 가장 중요하다. 작은 프로젝트라도 처음부터 끝까지 전체 구조를 고민해 보는 경험이 필요하다.


예를 들어, 간단한 블로그 사이트를 만든다고 해도 "사용자가 늘어나면 어떻게 할 것인가?", "나중에 모바일 앱도 만든다면?", "다국어 지원이 필요하다면?" 같은 질문들을 던져보고 그에 맞는 설계를 고민해 보는 것이다.


설계 능력은 실패를 통해서도 많이 늘어난다. "이렇게 설계했더니 나중에 이런 문제가 생겼구나", "저렇게 했으면 더 좋았을 텐데" 같은 후회와 반성이 설계 역량을 기르는 소중한 자산이 된다.


실제로 경험 많은 설계자들은 "내가 과거에 저지른 실수들" 덕분에 지금의 설계 능력을 갖게 되었다고 말한다. 완벽한 설계는 없다. 중요한 것은 실수를 통해 배우고 개선해 나가는 자세다.


좋은 설계자가 되려면 개발뿐만 아니라 다양한 분야의 경험이 도움이 된다. 비즈니스를 이해하고, 사용자의 니즈를 파악하고, 시장의 트렌드를 읽을 수 있어야 한다.


실제로 성공한 기술 창업가들을 보면 개발 실력도 좋지만, 그보다는 전체적인 시야와 설계 역량이 뛰어난 경우가 많다. 단순히 기술만 아는 것이 아니라, 기술을 통해 어떤 가치를 만들어낼지 설계할 수 있는 능력이 있기 때문이다.




대부분의 코딩 교육은 여전히 프로그래밍 언어 문법과 간단한 알고리즘 위주로 구성되어 있다. 이는 마치 의과대학에서 해부학만 가르치고 진료는 가르치지 않는 것과 같다. 기초는 중요하지만, 실제로 환자를 치료하는 능력은 별개의 문제다.


개발 교육도 마찬가지다. 코딩 문법을 아는 것과 실제 문제를 해결하는 시스템을 설계하는 것은 전혀 다른 능력이다. 하지만 현재 교육은 전자에만 집중되어 있다.


앞으로의 교육은 단순히 문법을 가르치는 것을 넘어서, 실제 문제를 해결하는 과정을 경험할 수 있게 해야 한다. "쇼핑몰을 만들어보세요"라는 과제를 줄 때도 단순히 기능 구현만 하는 것이 아니라, 전체 시스템 설계부터 시작하게 해야 한다.


"사용자가 얼마나 될 것 같은가?", "어떤 기능들이 필요한가?", "보안은 어떻게 처리할 것인가?", "나중에 기능을 추가하려면?" 같은 질문들을 던지고, 이에 대한 답을 설계로 표현하는 연습이 필요하다.




설계 역량을 기르고 싶다면 지금 당장 할 수 있는 것들을 찾아보자. 자신이 만드는 모든 프로그램에 대해 "이것을 10배 크게 만든다면?", "5년 후에도 사용할 수 있을까?", "다른 사람이 이해할 수 있을까?" 같은 질문을 던져보는 것이다.


또한 유명한 오픈소스 프로젝트들의 구조를 살펴보는 것도 좋다. "이 프로젝트는 왜 이런 구조로 만들어졌을까?", "내가 만든다면 어떻게 다르게 할까?" 같은 생각을 해보면서 설계 감각을 기를 수 있다.


혼자서 하는 공부는 한계가 있다. 다른 개발자들과 설계에 대한 토론을 나누고, 서로의 설계를 리뷰해 주는 활동이 도움이 될 수 있다. 온라인 커뮤니티나 스터디 그룹 또는 도움을 받거나, 같이 할 수 있는 사람을 통해 이런 기회를 만들어보는 것도 좋다.


특히 자신의 설계를 다른 사람에게 설명하고 피드백을 받는 경험이 중요하다. 설계는 혼자만 이해하면 되는 것이 아니라, 다른 사람들과 공유하고 협업할 수 있어야 하기 때문이다.




코딩 교육 열풍이 많은 사람들에게 프로그래밍의 문턱을 낮춘 것은 분명 긍정적면이 있다. 하지만 진정한 경쟁력을 갖추려면 코딩을 넘어선 설계 역량을 키워야 한다.


AI가 발전할수록 단순한 코딩 작업의 가치는 떨어질 수밖에 없다. 반면 복잡한 문제를 이해하고, 창의적인 해결책을 설계하며, 팀을 이끌고 기술적 방향을 제시하는 능력의 가치는 더욱 높아질 것이다.


지금부터라도 설계 사고를 기르기 위해, 작은 프로젝트를 만들 때도 "어떻게 하면 더 좋은 구조로 만들 수 있을까?"라는 질문을 던져보고, 다른 사람들과 설계에 대한 토론을 나누며, 실패를 통해 설계 능력을 배우는 것이 좋다.


설계 능력은 AI 시대에도 살아남을 수 있는 지속 가능한 개발자가 되는 길이다. 코딩은 도구일 뿐이다. 중요한 것은 그 도구를 사용해서 어떤 가치를 만들어낼 것인가를 설계하는 능력이다.




keyword