어떤 책에서 이런 문구를 읽었다.
A developer's purpose is not to code; it's to solve problems.
이 말에 100% 동의한다. 코드, 즉 기술은 어떻게 보면 개발자가 할 수 있는 것 중에서 가장 쉬운 것에 속한다. 기술은 익히고 하면 된다. 익히는데 어려움이 있기도 하고 잘 안 되는 경우도 많지만, 일단 기술은 누구나 할 수 있다.
그런데, 문제 해결은 얘기가 다르다. 시간을 들인다고 되는 게 아니다. 문제를 해결하려면 노력해서 익혀야 할 것들이 많다. 문제 자체에 대한 이해, 문제 영역에 대한 이해, 주변 관계에 대한 이해, 비기능 요구 사항에 대한 이해, 개발팀에 대한 이해, 비용에 대한 이해, 기술에 대한 이해, 그리고 이런 다양한 이해를 바탕으로 올바르게 결졍할 수 있는 지식과 경험이 필요하다. 그런데, 꽤 많은 개발자들이 이런 부분의 역량을 높이려는 노력은 잘(거의) 하지 않고 기술에만 집중하는 경우를 많이 봤다.
소프트웨어를 만드는 이유는 기술을 사용하기 위해서가 아니라 문제를 해결하기 위함일 것이다. 최신 유행 기술로 코드를 치장하는 건 그 다음 일이다. 기술에만 너무 집착하는 개발자라면 소프트웨어를 만드는 이유를 한 번 쯤은 생각해 보자. 우리 개발자는 기술을 쓰기 위해 문제를 만드는 게 아니라, 문제를 해결하기 위해 기술을 쓰는 것임을.