살아온 날, 경험, 경력, 사회적 위치 줄어들거나 낮아지지 않고 상향 곡선을 그릴 수 밖에 없는 것들이다. 그리고 최근 나는 앞서 말한 단어들과 함께 떠올리는 ‘두 개의 단어/하나의 문장’이 있다.

“선택과 집중”

어쩌면 누구나 본인도 모르는 찰나의 순간 하고 있는 것 이라고 생각한다. 나는 최근 두 가지의 선택지에서 많은 고민을 하고 있다.

“완성도”

“빠른 결과”

나는 이전 까지 내가 가지고 있던 고집(?)을 잠시 내려 놓고 두 개의 고민 중 빠른 결과를 ‘선택’ 했고 그것에 ‘집중’ 하고 있다. 그리고 나는 내가 선택한 일로 포기해야 하는 것을 ‘완성도’ 라고 생각했다.

“완성도의 기준은 무엇인가 ?”

한 때 나는 ‘읽기 좋은 코드’에 매우 집착 했었고, 덕분에 책과 인터넷 자료/강의 등을 통해 성장을 했다. 그렇다면 ‘읽기 좋은 코드’의 완성도는 무엇을 기준으로 정할 수 있을까 ?

아직 부족한 나는, 스스로 던진 질문에 누구나 납득 할 수 있는 단 한 가지의 대답은 내릴 수 없다. 하지만 여러가지 대답은 할 수 있을 것 같다. 바로 이 부분에서 더욱더 ‘완성도의 기준’에 대해서 생각하게 되었다.

빠른 결과를 ‘선택’ 하였고 그것에 ‘집중’ 하기 위해서 완성도를 ‘포기’ 했다 라고 스스로 생각 했다. 아니 정확히는 스스로를 속였다.

“빠른 결과를 내기 위해서는 완성도를 포기 해야 하는 것일까 ?”

한 가지의 일에 대한 빠른 결과를 위해서 정말 엉망인 코드를 작성 하는 것과 전체 적인 프로세스 혹은 미래를 생각하며 완성도 높은 코드를 작성하는 것(물론 ‘오버 엔지니어링’에 빠질 확률이 높다고 생각한다.)

그리고 앞서 말한 두 예시 모두 결과 적으로 프로젝트를 완성 시키는 하나의 과정에서 겪게 되는 순간 일 것이다. 그렇다면, 두 개의 예시 중 어느 것이 최종적인 프로젝트의 빠른 결과를 내는데 도움이 될 까?

“정답은 없다. 아니 알 수 없다.”

한 가지 일(동작)에 대한 빠른 결과를 내다가 어느 날 발생한 장애에서 스파게티 면처럼 꼬여버린 코드 속에서 그것을 해결하기 위해 고군분투 하면서 시간을 허비하느라 프로젝트 완료 라는 결과물에 도달 하는데 시간이 오래 걸릴 수도 있고, 매 순간 완성도 높은 코드를 작성하는데 어쩔 수 없이 소비되는 시간으로 인해 프로젝트 완료 라는 결과물에 도달하는 시간이 오래 걸릴 수 있다고 생각한다. (솔직히 후자의 경우 본인의 코드 레벨 스킬을 올린다면 어느 정도 보완 할 수 있다.)

“선택과 집중의 진정한 의미는 무엇일까 ?”

결국 ‘선택과 집중’이라는 말은 어떤 것을 완전히 포기하고 다른 것만을 추구하라는 의미가 아니라고 생각한다. 나는 이것이 각 상황과 맥락에 맞는 최적의 균형점을 찾아가는 여정이라고 생각한다.

내가 고민했던 완성도와 속도는 때로는 상충되는 가치처럼 보였지만, 실제로는 서로를 보완하며 발전할 수 있는 동반자적 관계라는 것을 깨달았다.

지금 나에게 중요한 것은 각 순간에 마주한 상황을 냉철하게 판단하고, 그에 맞는 적절한 비중을 찾아가는 것이다. 이는 마치 숙련된 요리사가 각 요리의 특성에 따라 불의 세기를 조절하는 것과 같다고 생각한다. 때로는 강한 불로 빠르게 조리하고, 때로는 약한 불로 천천히 익혀가며 최상의 맛을 이끌어내듯이 말이다.

나는 이러한 고민과 선택의 순간들을 통해 더 나은 개발자로, 더 나은 문제 해결자로 성장해 나갈 수 있을 것이라 믿는다.