본문 바로가기

C++ 개발이야기

C++ 개발자의 반성

SMALL

포스팅 계기

 개발을 하다 보면 문득 이런 생각이 들 때가 있다. “C++만 잘하면 충분하지 않을까?” 얼마전 까지 나의 생각은 그랬다. 성능, 메모리, 하드웨어 자원까지 고려해야 하는 임베디드 환경에서 C++을 파고들며, 다른 언어에 눈을 돌릴 필요가 없다고 생각했다. 하지만 시간이 흐르고 다양한 프로젝트를 경험하면서, 언어보다 더 본질적인 것이 있다는 걸 깨닫게 되었다. 그 이야기를 오늘 풀어보고자 한다.

 


언어보다 중요한 것은 '분야에 대한 이해'

C++은 정말 강력한 언어다. 하지만 개발자는 단순히 언어를 다루는 사람이 아니다. 진짜 중요한 건 ‘무엇을 개발하느냐’에 대한 이해다. 아래 예시 사례는 내가 경험했던 분야와 주변에 있는 개발자 친구들에게 조언을 얻어 작성하였다.

EX 1) 자동차 내비게이션 시스템 개발

C++로 경로 탐색 알고리즘을 구현한다고 해서 끝나는 게 아니다. 실제로는 다음과 같은 "도메인 지식"이 필수적이다:

  • 실시간 교통 정보 처리: TPEG, VICS 등 국가별 교통 데이터 규격 이해
  • 도로 속성 처리: 일방통행, 진출입 불가, 차종 제한 등의 복잡한 로직
  • 사용자 경험 고려: 터널, 고가도로, 회전 교차로 등에서의 안내 방식 최적화

이러한 요소들을 모르면 알고리즘은 완벽해도 실제 서비스에서는 오류가 발생할 수 있다.

 

EX 2) 금융권 백엔드 시스템 개발

C++보다는 Java나 Python이 주로 사용되지만, 핵심은 "거래의 정확성과 보안"이다. 이 분야에서는 이런 도메인 이해가 중요하다:

  • 트랜잭션 처리 로직: ACID 원칙, 동시성 제어, rollback 등의 개념 숙지
  • 정합성 유지: 복수의 DB와 연동 시 발생하는 데이터 불일치 상황 처리
  • 보안 정책: 암호화/복호화, 키 관리, 고객 정보 보호에 대한 정책 이해

단순한 CRUD 작업이 아니라, “왜 이 흐름으로 처리되는지”를 이해하지 못하면 실수로 금융 사고를 유발할 수도 있다.

 

EX 3) 의료 영상 분석 시스템 개발 

AI 모델을 C++로 배포하거나, 성능 최적화를 한다고 해도,해당 도메인을 모르면 엉뚱한 판단을 유도할 위험이 있다:

  • 영상 진단 기준: 정상/비정상 판별을 위한 의학적 기준 이해
  • 데이터 민감도: 환자의 정보 보호, 데이터 레이블링 시 윤리적 고려
  • 성능 기준: 예측 정확도 외에도 Recall, Precision, AUC 등 의료 현장에서 요구하는 평가지표 숙지

여기서는 모델보다 “사람의 생명”이 중요하기 때문에, 도메인에 대한 이해가 절대적이다.

 

이처럼 언어는 그저 도구일 뿐이고, 진짜 실력은 분야의 문맥을 얼마나 잘 이해하고 활용하는지에서 나온다.


과거의 나, C++만 파던 시절

솔직히 말하면, 나도 한동안은 “C++만 잘하면 된다”는 생각에 갇혀 있었다. 최적화를 고민하고, STL을 파고, 멀티스레딩까지 자유자재로 다룰 수 있게 되면서 점점 더 C++에만 몰입하게 됐고, 어느새 시야가 좁아져 있었다. 그런데 회사에서 타 부서 및 회사와 협업을 하게 되고, 새로운 기술에 관련된 과제를 계속하면서 부족함을 많이 느꼈다. 내가 몰랐던 기술들이 실무의 어려으로 다가왔고, 그제야 느꼈다.

“아, 언어보다 ‘맥락’이 중요하구나...”

 


결국 중요한 건 문제 해결 능력

C++을 비롯해 어떤 언어든 도구일 뿐이다. 우리는 “어떤 문제를 어떻게 해결할 것인가”라는 질문 앞에 있는 사람들이다.
그 문제의 배경이 무엇인지 이해하고, 그에 맞는 도구와 방식으로 해결하는 것이 진짜 개발자의 역량이 아닐까?


마무리하며

C++을 계속 써오고 있고, 앞으로도 사랑하는 언어다. 하지만 이제는 다른 언어에도 관심을 갖고, 더 넓은 분야로 시야를 확장하고 싶다. 임베디드부터 Application, App, Web까지… 다양한 분야를 접하면서 “나는 어떤 문제를 푸는 사람인가?”라는 본질적인 질문을 놓치지 않으려고 한다. 이 글을 보는 분들도 혹시 나처럼 “언어 하나만 잘하면 된다”는 생각을 갖고 있다면, 잠깐 멈춰 서서 나처럼 반성(?)해보는 시간을 가져보는 것도 좋지 않을까 싶다.