책 <원씽(The One Thing)>과 <아비투스(Habitus)>를 읽으며 문득 이런 생각이 들었습니다.
"음악가들은 완벽한 연주를 위해 매일 연습을 하는데, 우리 개발자들은 그들의 연습과 같은 무언가가 무엇일까?"
음악가에게 연습이란 실전을 위해 실력을 갈고닦는 시간입니다. 그렇다면 개발자인 우리에게 '갈고닦는 시간'은 무엇일까요? 저는 업무는 회사에서 해결해야 할 '실전'이고, 그 업무를 효과적으로 해결하기 위해 사용할 기술들을 따로 벼려내는(Sharpening) 시간이 곧 연주를 위한 연습이자 이 것이 반드시 필요하다는 결론을 내렸습니다.
저는 이 '벼림'의 과정을 두 가지 축으로 정의하고 싶습니다.
1. 내가 가진 기술을 날카롭고 강력한 나만의 무기로 만드는 과정
2. 그 기술을 내 몸에 완전히 체화하여, 실전에서 흐름이 끊기지 않는 몰입 상태를 유지
## 1. 왜 기술을 벼려야 하는가: 컨텍스트 스위칭과 몰입
일을 하다 보면 본질적인 문제 해결에 집중해야 할 순간에, 사용할 함수 때문에 멈칫하고 이를 찾다가 방향이 다른 곳으로 새거나 몰입의 순간이 깨지는 경험들이 다들 있을 겁니다.
저의 경우 예를 들어 Spark로 ETL 코드를 작성할 때 데이터 집계를 위해 Window 함수를 종종 쓰게 되는데, 평소 DataFrame API와는 약간 다른 사용법으로 인해 매번 헷갈려서 공식문서를 찾거나 AI에 질문하거나 등등을 하게 됩니다.
이 짧은 순간, 문제 해결을 향해 선형적으로 뻗어가던 사고의 흐름이 끊어지며, 소위 **컨텍스트 스위칭** 이 발생하게 됩니다.
다시 코드로 돌아왔을 때는 "내가 어디까지 생각했더라? 어떻게 하려고 했지?" 하며 흐름을 복구하는 비용이 발생합니다.
기술을 벼린다는 것은 바로 이 비용을 없애는 작업입니다. 도구가 손과 뇌에 완전히 체화되어 있다면, 문법을 고민할 시간에 문제의 본질인 '데이터의 흐름'과 '비즈니스 로직'에만 온전히 몰입할 수 있습니다. 그때 비로소 업무를 막힘없이 '죽죽' 해결해 나가는 효율과 쾌감을 얻을 수 있습니다. 저는 이 순간을 조금이라도 더 확보하기 위해 벼린다 라는 표현으로 각 기술을 체화시키는 시간을 가지려 노력하고 있습니다.
## 2. 기술을 체화하는 6단계 프로세스
단순히 아는 것을 넘어, 기술을 체화하여 몰입의 도구로 만들기 위해 저는 다음과 같은 단계를 거치려고 합니다.
1. **공식 문서 정독**: 기술이 권장하는 스탠다드한 사용법의 기준을 잡습니다.
2. **핵심 개념 파악**: 기술을 지탱하는 주요 개념을 (적당히) 깊이 이해합니다.
3. **인터페이스와 메서드 탐구**: 주요 인터페이스와 함수를 살펴보며 구조를 파악합니다.
4. **직접 써보기(체화의 시작)**: 간단한 코드를 직접 작성해보며 손으로 감각을 익힙니다.
5. **실전 적용(몰입)**: "어떤 문제든 해결할 수 있다"는 확신을 가지고, 막힘없이 문제를 해결해 봅니다.
6. **정리와 공유(지식자본화)**: 해결 사례를 정리하고 공유하며 정보의 휘발을 막고 온전한 내 것으로 만듭니다.
## 결론: 개발자도 실전에 대비한 꾸준한 연습이 필요하다.
개발자들은 각자의 관심사와 주제가 다양한 만큼, 어떤 것에 집중해야 하는지 잘 선택해야 합니다.
집중하기로 했다면 이 기술을 온전히 내 것으로 만들기 위한 부단한 노력이 필요합니다.
이런 노력이 결국 우리의 업무능력을 향상시킬 것이며, 이를 통해 스스로 정한 목표에 도달할 수 있습니다.
## 번외 1: CS(컴퓨터 공학) 지식의 역할
CS 지식은 이 모든 과정의 깊이를 더해주는 토대입니다. 기술을 벼리다 보면 더 세밀한 조정(Tuning)이 필요한 시점이 오고, 그때 동작 원리에 대한 깊은 이해가 필수적입니다. 업무적 필요뿐만 아니라, 기술에 대한 애정과 호기심이 생길 때 들여다보는 CS 지식은 우리의 무기를 더 예리하게 만들어줍니다.
## 번외 2: 같은 방향으로, IDE를 잘 다루는 것도 중요하다.
저는 Neovim을 주 코드에디터로 사용하고 있습니다. 모든 설정은 Lua 언어 기반의 프로그래밍으로 이루어지며 다양한 개념들을 이해해야만 나만의 에디터로 설정할 수 있습니다.
따라서 저는 시간이 날때마다 Neovim을 잘 다루기 위해 이것저것 설정하면서 노는 행복한 시간을 보내고 있습니다 :)
[[키보드 타이핑 실력이 중요한 이유]]