초보자를 벗어난 뒤 실제로 바뀌는 것
Source: Dev.to
시간이 지나면서 실제로 변하는 것
사람들이 제가 AI와 풀스택 개발 분야에서 8 년의 경력을 가지고 있다고 들으면, 보통 혁신적인 돌파구, 스타트업, 그리고 혁명적인 제품들로 가득 찬 이야기를 떠올립니다.
실제는 더 현실적이며 — 더 가치가 있습니다.
이 분야에서 거의 10년을 보낸 후, 저는 시니어 개발자가 되는 것이 더 많은 문법을 아는 것이 아니라; 문제, 시스템, 그리고 장기적인 신뢰성에 대해 다르게 사고하는 것임을 깨달았습니다.
초창기 — 모든 것을 배우고, 조금만 이해하기
경력 초기에, 나의 목표는 간단했습니다:
- 가능한 한 많은 기술을 배우기.
프론트엔드 프레임워크, 백엔드 프레임워크, 데이터베이스, 클라우드 서비스, 모바일 앱, AI 라이브러리 — 모두 다뤘습니다.
그 단계에서는 매주 새로운 것을 발견하므로 진행 속도가 빠르게 느껴졌습니다. 하지만 지금 되돌아보니 중요한 점을 깨달았습니다:
도구를 아는 것과 시스템을 이해하는 것은 다릅니다.
나는 기능을 만들 수 있었고, 프로젝트를 완수할 수 있었으며, 문서를 따라갈 수 있었습니다. 하지만 실제 운영 환경에서 소프트웨어가 왜 실패하는지 아직 이해하지 못했습니다.
실제 경험은 다음과 같은 상황에서 시작됩니다:
- 당신의 코드가 실제 사용자와 함께 실행될 때
- 실제 트래픽이 서버에 도달할 때
- 예상치 못한 데이터가 로직을 깨뜨릴 때
- 마감 기한이 실제 결정을 강요할 때
그것이 진정한 개발이 시작되는 지점입니다.
풀스택 개발이 모든 것이 연결되어 있음을 가르쳐 주었다
풀스택 개발자로 일하면서 소프트웨어를 보는 시각이 완전히 바뀌었습니다. 한 층만 작업하면 문제는 단순해 보이지만, 다음과 같은 모든 영역을 다루게 되면:
- 프론트엔드
- 백엔드
- 데이터베이스
- API
- 배포
- 클라우드 인프라
아주 빠르게 깨닫게 되는 것이 있습니다: 대부분의 버그는 생각하는 곳에 있지 않다는 사실입니다. 앱이 느려지는 것은 데이터베이스 문제일 수 있고, 크래시가 발생하는 것은 API 때문일 수 있습니다. AI 출력이 엉망인 경우는 잘못된 데이터 때문일 수 있습니다.
몇 년이 지나면 파일과 함수 단위로 생각하던 습관을 버리고 시스템 전체를 바라보게 됩니다. 이것이 다음과 같은 차이점 중 가장 큰 차이점 중 하나입니다:
- Junior developer → 코드를 작성한다
- Mid developer → 기능을 만든다
- Senior developer → 시스템을 설계한다
AI 개발 — 불확실성 하의 엔지니어링
AI 작업을 시작했을 때, 전통적인 개발과는 매우 다를 것이라고 기대했습니다. 실제로 그렇지만, 대부분의 사람들이 생각하는 방식과는 다릅니다.
일반 소프트웨어에서는:
Correct code → predictable result
AI 시스템에서는:
Correct code → unpredictable result
이로 인해 작업 방식이 바뀝니다. 이제 더 많이 집중하게 되는 영역은 다음과 같습니다:
- 데이터 품질
- 평가 방법
- 파이프라인
- 성능 최적화
- 재현성
많은 사람들은 AI 개발이 모델을 훈련시키는 것이라고 생각합니다. 실제로는:
AI 작업의 80 %는 데이터, 인프라, 그리고 디버깅입니다. 모델은 그 중 작은 부분에 불과합니다.
AI는 빠르게 연구 단계에서 벗어나 불확실성 하의 엔지니어링으로 전환됩니다.
Speed Is Not the Goal — Reliability Is
Early in my career, I measured myself by speed:
- How fast can I build this?
- How fast can I finish this feature?
- How fast can I deploy?
After years of real projects, I learned something different: anyone can build a demo; not everyone can build something that survives production.
Real experience teaches you to:
- write simpler code
- design cleaner architecture
- avoid unnecessary complexity
- think about maintenance first
Good code is not the smartest code. Good code is the code that still works after months of changes.
8년 후 가장 큰 차이 — 차분해진다
가장 큰 변화는 기술적인 것이 아니라 정신적인 것입니다. 무언가가 고장났을 때:
- 주니어 → 패닉
- 미드 → 즉시 디버깅
- 시니어 → 시스템이 문제를 허용한 이유를 이해
웹 플랫폼, 모바일 앱, AI 시스템, 백엔드 서비스, 그리고 클라우드 인프라스트럭처를 다루다 보면 패턴이 반복되는 것을 보게 됩니다. 서버가 다운하고, 모델이 드리프트하고, 사용자가 예상치 못한 행동을 하고, 요구사항이 바뀝니다. 대부분의 문제는 새롭지 않으며, 단지 새롭게 보일 뿐입니다. 경험은 당신을 더 차분하고, 집중력 있게, 실용적으로 만들어 줍니다.
최종 생각 — 기술은 변하지만 원칙은 변하지 않는다
8년 동안 나는 많은 트렌드를 보았다:
- 새로운 프레임워크
- 새로운 AI 모델
- 새로운 아키텍처
- 새로운 hype 사이클
하지만 변하지 않는 것들이 있다:
- 깔끔한 디자인이 중요하다
- 좋은 데이터가 중요하다
- 단순한 솔루션이 중요하다
- 명확한 사고가 중요하다
이 분야에서 오래 버티는 개발자는 모든 새로운 도구를 쫓는 사람이 아니다. 그들은 시스템이 실제로 어떻게 작동하는지—그리고 모든 것이 복잡해질 때 이를 어떻게 유지할 수 있는지를 이해하는 사람이다.