엔지니어는 기술의 관점에서 문제를 정의하고, 파악하고, 해결하는 사람입니다. 문제 해결이 무엇인지 제대로 이해하지 못한다면, 엔지니어라는 직업을 갖고 있을 뿐 자신의 역할을 제대로 수행한다고 이야기하기는 어렵습니다. 피플펀드컴퍼니에서 엔지니어로 일하며 고민하고 있는, 문제 해결에 대한 이야기입니다.

문제 탈피

문제 상황에서 벗어나도록 하는 일은 문제 탈피라고 이야기할 수 있습니다. 일부분의 문제가 다른 부분으로 확산되지 않도록 하는 것입니다. 원하는 결과대로 데이터베이스를 수정하는 일, 코드를 임시로 수정하여 배포하는 일, 실패시 재시도하도록 구현하는 일, Hard-coding으로 우회하는 일 등이 그 예시입니다. 문제 상황이 지속되지 않게 한다는 점에서 최소한의 의미가 있습니다.

문제 해결

문제의 원인을 제거하는 것이 문제 해결입니다. 문제 상황이 발생한 원인을 찾아, 같은 문제가 다시 발생하지 않도록 하는 것입니다. 근본적인 문제 해결이라고 이야기 할 필요도 없는, 기본적인 문제 해결의 방식입니다. 이에 더하여 연관된 문제들, 혹은 유사한 문제들을 많이 해결할수록 더욱 근본적인 문제 해결이 됩니다.

예시

(문제 발생) 계좌 발급 과정 오류로 회원 가입 실패
(문제 탈피) 회원 가입 시에 계좌 발급을 생략하도록 수정
(문제 탈피) 추후 발급한 계좌가 등록되도록 수정
(문제 해결) 계좌 발급 과정의 코드 오류 수정
(근본적 문제 해결) 계좌 발급 절차 효율화
(근본적 문제 해결) 계좌 관련 코드 정비

문제 회피

스스로가 문제 탈피에서 만족하고 있지 않은지, 문제 해결에 대한 고민 없이 열심히만 일하고 있지 않은지 항상 되돌아보아야 합니다. 문제 해결 없이 문제 탈피만을 반복한다면, 이는 문제 회피라고 이야기할 수 있습니다.

마치며

물론, 당면한 모든 문제를 해결할 수는 없습니다. 일부에 대해서는 우선 문제 탈피에 그치고, 더 중요한 문제를 해결하는 데에 집중해야 할 때도 있습니다. 그러나 이 때에도 문제 탈피와 문제 해결을 구분할 수 있어야 합니다. 이를 구분한다면 문제의 원인을 추후에라도 해결할 수 있지만, 구분하지 못한다면 같은 문제에 계속 시간을 낭비하게 되기 때문입니다. 작은 문제부터 해결하는 연습을 한다면 점점 더 중요한 문제를 해결할 수 있게 될 것이며, 이것이 엔지니어로서의 성장이라 할 수 있습니다.