경험과 반복이 지속 성장하는 개발자를 만든다
다양한 실전 경험과 실패의 반복, 비즈니스 제약에 대한 관심이 낯선 운영 문제를 푸는 개발자를 만드는 과정을 살펴본다.
출처 및 AI 안내: 이 글은 제미니의 개발실무 유튜브를 기반으로 작성되었습니다.
gpt-5.6-sol모델을 사용해 생성·편집했습니다.
지속 가능한 상태와 지속 성장하는 상태에는 차이가 있다. 지속한다는 말은 오르내림을 반복하면서도 비슷한 수준을 유지하는 모습으로 이해할 수 있다. 지속 성장은 경험이 누적되어 다음 결과가 이전보다 나아지는 상태를 목표로 한다.
커리어나 시스템을 유지하는 일도 이미 어렵다. 거기에서 한 걸음 더 나아가 경험을 더 강한 문제 해결 능력으로 계속 바꾸자는 이야기다.
우상향은 매번 성공한다는 뜻이 아니다. 잠시 내려가거나 같은 자리를 맴돌더라도, 그 과정에서 얻은 판단이 다음 문제에 남으면 경험은 누적된다. 반대로 익숙한 일만 같은 방식으로 처리하면서 판단 기준이 달라지지 않는다면 오랜 시간도 성장으로 이어지지 않을 수 있다.
계획이 깨질 때 경험이 드러난다
많은 사람의 음식을 정해진 시간 안에 내야 하는 주방을 생각해 보자. 음식이 타고, 간이 잘못되고, 준비한 음식이 떨어질 수 있다. 이때 모든 과정을 처음부터 다시 시작할 수는 없다. 경험 많은 사람은 탄 부분을 덜어 내고, 음식의 형태를 바꾸거나, 남은 재료로 새 메뉴를 만든다.
이런 대응은 직함만으로 생기지 않는다. 많이 먹어 보고, 만들어 보고, 실패하고, 다시 시도한 경험이 쌓인 결과다. 반복은 예상하지 못한 문제를 만났을 때 꺼낼 수 있는 선택지를 늘린다.
수백 명의 식사를 몇 시간 안에 준비하고 메뉴도 현장에서 정해야 한다면, 완벽하게 세팅된 주방에서 최고의 한 접시를 만드는 일과는 다른 능력이 필요하다. 음식이 떨어진 뒤 오래 고민할 여유가 없으므로 남은 재료와 사람, 시간을 보고 분 단위로 판단해야 한다. 탄 부분을 살리거나 짠 음식을 다른 형태로 바꾸는 선택은 이론 하나를 떠올려 그대로 적용한 결과라기보다 수많은 시행착오에서 꺼낸 대응에 가깝다.
개발 업무에도 비슷한 상황이 있다. 버그가 늦게 발견되고, 데이터가 깨지거나, 설계할 때 예상하지 못한 장애가 발생한다. 개발자는 상황을 이해하고 적절한 트레이드오프를 골라 결과를 만들어야 한다. 현실의 문제는 정리된 예제와 같은 모양으로 오지 않기 때문에 경험이 중요하다.
이때 경험은 무작정 밀어붙이는 감각과 다르다. 무엇을 우선 복구할지, 어느 우회책이 제한된 기간에만 안전한지, 압박 속에서도 움직이면 안 되는 품질선이 무엇인지 판단하는 재료다. 한 번의 장애에서 복구 절차와 실패 원인을 정리해 두면, 다음 장애는 완전히 처음 보는 사건이 아니라 비교할 사례가 있는 문제가 된다.
판단을 넓히는 반복이어야 한다
같은 일을 오래 했다는 사실만으로 성장했다고 말하기는 어렵다. 의미 있는 반복에는 관찰과 교정이 들어간다. 사용하고, 만들고, 실패한 뒤, 배운 것을 다음 시도에 가져가야 한다.
반복을 판단으로 바꾸는 흐름은 작게 만들 수 있다. 실제 제약 속에서 해결책을 시도하고, 부작용과 운영상의 마찰까지 관찰한다. 그다음 성공하거나 실패한 이유를 평범한 말로 설명하고, 얻은 기준을 다음 문제에 적용한다. 새 결과가 기존 기준과 다르면 기준도 고친다. 실패 횟수를 모으는 것이 아니라 다음 시도를 달라지게 만드는 것이 핵심이다.
관찰의 범위도 넓혀야 한다. 음식점에서 손님이 무엇을 남겼는지 살피듯, 개발자는 사용자가 어느 흐름에서 멈추고 운영자가 어디서 망설이는지 봐야 한다. 배포가 끝났다는 사실만 확인하면 사용자의 이탈이나 뒤늦게 드러난 데이터 문제는 경험으로 연결되지 않는다.
경험의 다양성도 중요하다. 완벽히 통제된 환경에서만 일하면 시간과 인력이 부족하거나 익숙한 방법에 맞지 않는 문제를 만났을 때 대응하기 어려울 수 있다. 서로 다른 경험은 해결책에서 바꿀 수 있는 부분과 끝까지 지켜야 할 부분을 구분하게 한다.
잘 정돈된 환경에서 깊은 전문성을 발휘하는 능력도 분명 가치가 있다. 다만 제품 개발에서는 팀 구성과 요구사항, 레거시와 일정이 계속 바뀔 수 있다. 한 환경의 정답을 모든 상황에 옮기기보다, 지금의 목적과 제약에서 적절한 결과가 무엇인지 다시 물어야 한다. 연구와 탐구가 목적인 일과 정해진 비용 안에서 사용자 문제를 해결해야 하는 일은 같은 기준으로 평가할 수 없다.
이론이나 정통적인 경로가 가치 없다는 뜻은 아니다. 둘 다 단단한 기초를 줄 수 있다. 문제는 하나의 경로, 한 종류의 용어, 패턴화된 전략만으로 모든 문제를 풀려고 할 때 생긴다. 개념은 생각을 도와야지 생각을 대신해서는 안 된다.
평범한 말로 판단을 드러낸다
기술 용어는 유용하지만 익숙한 이름 하나가 실제 근거를 공유하기 전에 설명을 끝낸 것처럼 보이게 할 수 있다. 상황, 쓸 수 있는 자원, 결과, 트레이드오프로 결정을 설명하면 어떤 유명한 사람이나 용어의 권위부터 받아들이지 않아도 더 많은 사람이 함께 판단할 수 있다.
평범한 말로 설명한다고 개념을 공부하지 말자는 뜻은 아니다. 이론은 여러 경험을 정리하고 서로 전달할 공통 언어를 준다. 다만 이름을 먼저 내세우기보다 실제로 무엇이 실패했고 어떤 조치가 왜 통했는지 설명할 수 있어야 한다. 경험으로 이론을 시험하고, 이론으로 경험을 정리하는 두 방향이 함께 필요하다.
그 설명을 채우는 재료가 경험이다. 여러 시스템을 사용하고, 만들고, 고쳐 본 개발자는 현재 문제를 하나가 아닌 여러 과거 사례와 비교할 수 있다. 여전히 놀라고 실수할 수 있지만 대응할 방법은 더 많아진다.
성장에는 비즈니스 상황도 들어간다
순수한 연구가 아니라면 개발은 비즈니스 안에서 이루어진다. 시간은 제한되고 환경은 완벽하지 않으며, 그 안에서도 결과를 내야 한다. 기술적인 우아함은 여러 판단 기준 가운데 하나다.
그렇다고 일정에 맞추기 위해 모든 품질을 포기하라는 뜻은 아니다. 적절한 트레이드오프는 사용자와 운영자, 다음 유지보수자에게 감당할 수 없는 비용을 조용히 넘기지 않는다. 서비스를 먼저 복구할 수 있는 작은 우회책과 나중에 반드시 고칠 구조를 구분하고, 어떤 선택이 팀의 다음 작업을 막지 않는지도 살펴야 한다.
결국 다양한 경험이 주는 힘은 어떤 환경에서도 완벽해지는 능력이 아니다. 상황이 달라졌을 때 이전의 답을 고집하지 않고, 쓸 수 있는 자원 안에서 문제를 다시 정의하며, 목적에 맞는 결과를 끝까지 만드는 능력에 가깝다.
중요한 능력은 서로 다른 상황에서도 문제를 해결하는 것이다. 무슨 일이 생겼는지 이해하고, 적절한 절충안을 고르며, 이전보다 나은 방향으로 움직여야 한다. 이 과정을 주의 깊게 반복할 때 지속 성장이 생긴다. 더 많이 사용하고, 만들고, 실패하고, 배우자. 그 경험이 다음 문제를 다루는 방식을 바꿀 때 비로소 성장으로 쌓인다.