가능하다면, 서둘러 배우지 말아요.
최근 소프트웨어 엔지니어가 되기 위해 준비하고 있는 학생들을 만나 대화를 나눠볼 기회가 있었다. 대화 과정에서 팀 프로젝트와 학습하고 있는 다양한 기술들에 대한 이야기를 들어 볼 수 있었다. 나는 가능하다면 서둘러 배우지 말고, 천천히 문제를 들여다보고 해결해볼 것을 조심스럽게 권했다. 이렇게 권하게 된 배경은 두 가지 이야기를 듣고서다. 첫 번째는 프로젝트나 코딩 과정에서 부딪힌 문제를 짧은 시간에 해결하려다 보니 검색을 통해 문제를 해결할 수 있는 코드나 설정을 찾아 적용하고 해결하는 경우에 대한 것이다. 문제에 대한 정확한 원인을 이해하지 못한 채 정답지를 통해 문제를 풀어버리면 엔지니어에게 필요한 전문 지식을 쌓을 기회를 아깝게 흘려보내 버리게 되는 것이다. 또한 문제를 해결하는 과정에서 익힐 수 있는 디버깅 기술에 대한 부분도 아까웠다. 두 번째는 팀 프로젝트를 하는 과정에서 프레임워크나 라이브러리를 이용해 빠르게 기능을 구현하고 프로젝트를 완료하는 것이다. 프레임워크를 사용하면 상용구 코드, 인증, 데이터베이스 통합과 같은 지루하고 반복적인 세부 작업을 손쉽게 처리해주기 때문에 빠르게 원하는 기능을 만들어낼 수 있다. 문제는 프레임워크가 처리해주는 세부 사항이 바로 소프트웨어 엔지니어라면 반듯이 익혀야 하는 기초적인 지식이자 기술들이라는 것이다. 따라서 가능하다면, 서둘러 배우지 말고 천천히 시간을 들여서 학습하면 좋겠다고 생각한다. 검색을 통해 찾은 정답이나 프레임워크(또는 라이브러리)를 사용하지 않고 개발할 때의 어려움과 도전을 극복하면, 더 나은 코드를 작성하고 유지보수할 수 있는 능력과 함께 문제 해결력과 기술력 또한 크게 향상할 수 있을 것이다. 현장에서 일을 시작하게 되면 어떤 하나를 깊이 있게 들여다볼 기회가 적다. 주어진 일정이 있기 때문에 빠르게 해결하는 것이 더 중요하기 때문이다. 충분히 깊이 있게 지식을 쌓을 기회를 더 잘 활용하기를 바란다.