| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 사주앱개발
- AI개발
- Netlify
- 무료호스팅
- 코딩독학
- docs-first
- 일렉트론
- 웹사이트만들기
- meslolgs nf
- Chatgpt활용
- 천간지지오행
- 퍼블릭도메인
- 사주프로그램
- typescript
- ai웹사이트
- AI협업개발
- React
- 웹앱개발
- Cloudflare Pages
- 타로카드
- 타로앱개발
- GitHub Pages
- claude활용
- 다크테마UI
- github
- claude ai
- 카드애니메이션
- 무료웹사이트
- 무료서버
- 바이브코딩
- Today
- Total
dog paw / development
단단하다고 믿었던 것들 — 개발자의 멘탈 관리와 확신의 함정 본문
복잡한 마음을 들고 산에 올랐다.
목적지는 없었다. 그냥 걸어야 할 것 같았다. 개발자라면 알 거다. 뭔가 꼬였을 때 자리에 앉아서 해결하려고 하면 더 꼬이는 경험. 화면에서 눈을 떼야 비로소 보이는 것들이 있다. 그날은 화면의 문제가 아니었지만, 자리를 떠나야 한다는 감각은 같았다.
산에서 나는 길을 봤다. 걸으면서 자꾸 길이 눈에 들어왔다.
단단하게 다져진 길이 있다. 수천 번 수만 번 사람들이 밟아서 굳어버린 길. 발자국이 남지 않는다. 아무리 힘껏 디뎌도 흔적이 없다. 발바닥에 전달되는 감촉은 확실하다. 이건 단단하다. 이 길은 안전하다.
흙길이 있다. 발자국이 남는다. 방향도 다 다르고 깊이도 다 다르다. 누군가는 가볍게 스쳤고 누군가는 깊이 박혔다. 어떤 자리는 내가 처음 발을 디디는 곳이다. 아무 흔적이 없는 흙 위에 내 발이 처음으로 닿는 순간.
자갈길이 있다. 겉으로 보면 단단해 보인다. 발을 디디면 자갈이 굴러간다. 미끄러진다. 단단한 줄 알고 성큼 들어섰다가 발이 흔들리는 그 순간의 당혹감.
진흙길이 있다. 발이 빠진다. 진흙인 줄 알고 들어가면 그냥 느리게 걷는 거다. 단단한 줄 알고 들어갔다가 발이 빠지면, 그건 다른 경험이다.
이게 자꾸 내 마음 같았다. 아니, 더 정확하게는 내가 내 마음에 대해 가지고 있던 믿음 같았다.
개발자는 확신을 먹고 산다고 생각한다. 좋은 의미에서 그렇다. 이 아키텍처는 맞다. 이 결정은 옳다. 이 트레이드오프는 감당 가능하다. 확신이 없으면 코드 한 줄을 못 쓴다. 매 선택마다 모든 가능성을 열어놓으면 아무것도 못 만든다. 그러니까 개발자는 어떤 의미에서 확신을 쌓아가는 직업이다.
그 확신이 기술적 판단에만 적용되면 괜찮다. 코드는 틀렸을 때 에러가 뜬다. 틀렸다는 신호가 명확하다. 수정할 수 있다. 근데 그 확신의 방식이 자기 자신에게도 적용되기 시작하면 이야기가 달라진다.
나는 이 정도는 괜찮은 사람이다. 나는 이 정도는 버틸 수 있다. 나는 이 정도의 압박은 감당한다.
이게 전제가 된다. 질문이 아니라 전제.
시니어가 되면 이 확신이 더 깊어진다. 오래 버텼으니까. 여러 번 흔들렸고 그때마다 버텼으니까. 버텼다는 기록이 쌓이면 나는 버티는 사람이라는 정체성이 생긴다. 정체성이 되면 그 다음부터는 의심하지 않는다.
경력이 쌓이면 대충 어떤 상황이 얼마나 힘든지 감이 있다. 이런 프로젝트는 이 정도 소모되고, 이런 갈등은 이 정도면 지나가고, 이런 압박은 이 정도면 버틸 수 있다. 데이터가 쌓이면 예측 모델이 생긴다. 그 모델을 믿게 된다.
근데 그 예측 모델이 틀렸을 때. 내가 단단하다고 믿었던 길이 자갈이거나 진흙이었을 때.
그 당혹감은 단순히 힘든 것과 다르다. 힘든 건 감당할 수 있다. 힘들 거라고 예상하고 들어갔으면. 근데 괜찮을 거라고 믿었는데 안 괜찮을 때, 그건 힘듦 위에 당혹감이 얹히는 거다. 내 판단이 틀렸다는 것. 내 모델이 실패했다는 것.
코드에서 예상치 못한 에러가 나왔을 때랑 비슷한 감각인데, 훨씬 더 무섭다. 코드는 스택트레이스라도 있다. 어디서 터졌는지, 어떤 값이 들어왔는지, 어떤 조건에서 실패했는지가 보인다. 마음에는 없다. 어디서 무너지기 시작했는지 알 수 없다. 재현도 안 된다. 같은 조건인 것 같은데 어제는 괜찮았고 오늘은 아니다.
그날 산에서 나는 어느 순간 내가 어디까지 왔는지 몰랐다.
무의식적으로 걷고 있었다. 발이 움직이고 있었고 생각은 다른 데 가 있었다. 정신을 차리고 보니 꽤 와 있었다. 올라오려고 결정한 게 아니라, 올라와 있었다.
이게 묘하게 지금까지의 내 상태 같았다. 언제부터 이 길로 들어섰는지 모르겠는데 와 있는 거. 어떤 길인지 확인하지 않고 걸어온 거. 그냥 다음 발을 내딛고, 그다음 발을 내딛고, 그러다 보니 여기.
개발자로서 시스템을 설계할 때 가장 먼저 하는 게 현재 상태 파악이다. 지금 어디 있는지 알아야 어디로 가야 하는지 알 수 있다. 관측 가능성(observability)이라는 개념이 있다. 시스템의 내부 상태를 외부에서 얼마나 들여다볼 수 있느냐. 모니터링, 로깅, 트레이싱 — 이게 없는 시스템은 뭔가 잘못되고 있어도 모른다. 잘못되고 있다는 걸 아는 게 고치는 것보다 먼저다.
근데 정작 자기 자신에 대해서는 이 과정을 생략한다. 아니면 오래된 데이터로 판단한다. 5년 전에 버텼으니까 지금도 버틸 수 있다는 캐시된 결론. 캐시는 무효화해야 할 때가 있다. 아무리 자주 맞았던 캐시여도 상황이 바뀌면 stale해진다. stale한 캐시를 계속 쓰면 잘못된 응답을 반환한다.
흙길의 발자국들 얘기로 돌아오면.
그 발자국들이 다 다른 방향이라는 게, 다 다른 깊이라는 게, 이상하게 위안이 됐다. 같은 길 위에 있지만 같은 경험을 한 게 아니라는 거. 누군가에게 가벼운 길이 나에게는 깊이 박히는 길일 수 있다는 거. 그게 실패가 아니라는 거.
개발자 커뮤니티는 이상하게 멘탈 강한 사람들의 이야기가 많이 퍼진다. 10년 사이드 프로젝트, 야근하면서 오픈소스 기여, 번아웃 극복 회고. 근데 그 이야기들이 단단하게 다져진 길처럼 느껴질 때가 있다. 수많은 사람들이 밟아서 굳어버린, 발자국이 남지 않는 길. 그 위를 나도 걸어야 하는 것처럼 느껴지는.
근데 나는 그 길을 걷는 사람이 아닐 수도 있다.
내 길은 흙길일 수도 있고, 자갈길일 수도 있고, 진흙길일 수도 있다. 걷는 속도도 다르고, 발자국의 깊이도 다르다. 그게 부끄러운 게 아닌데, 단단하게 다져진 길만 보이면 내 길이 부끄러워진다.
멘탈 관리에 대해 개발자들이 흔히 이야기하는 방법들이 있다. 운동, 수면, 명상, 사이드 프로젝트 분리, 커리어 로드맵 정리. 다 맞는 말이다. 근데 이것들은 어떤 의미에서 시스템 최적화다. 현재 상태를 유지하면서 더 잘 돌아가게 하는 것. 퍼포먼스 튜닝.
근데 시스템이 잘못된 가정 위에서 돌아가고 있다면, 최적화 전에 할 게 있다.
현재 상태를 진단하는 것.
내가 지금 어떤 길 위에 있는지 확인하는 것. 단단하다고 믿었던 길이 실제로 단단한지. 그 믿음이 얼마나 오래된 데이터에 기반하고 있는지. 지금 발 아래를 보는 것.
이게 약하다는 고백이 아니다. 오히려 반대다. 에러를 무시하고 계속 빌드 돌리는 게 강한 게 아니다. 에러를 직면하고 스택트레이스를 읽는 게 실력이다. 그게 문제를 해결하는 첫 번째 단계니까.
마음도 같다. 흔들림을 무시하는 게 단단한 게 아니다. 흔들린다는 걸 인정하고 지금 어디에 있는지 보는 게 먼저다. 그래야 다음 발을 어디에 디딜지 알 수 있다.
흙길의 발자국들 얘기를 다시 꺼내면.
같은 길 위에 있지만 각자 다른 방향, 다른 깊이의 발자국들. 개발자 커뮤니티도 비슷하다. 같은 직업, 같은 기술 스택, 비슷한 연차. 근데 누군가에게 가벼운 게 나에게는 깊이 박히는 경험일 수 있다. 같은 길인데 다른 무게로 걷는 거다.
그걸 숨기면 어떻게 되냐면 — 다들 단단하게 다져진 길을 걷는 것처럼 보인다. 발자국이 없으니까. 내 발자국만 남는 것처럼 느껴진다. 내가 유독 약한 것처럼 느껴진다.
근데 사실 그 단단해 보이는 길도 수많은 발자국이 쌓인 거다. 그 발자국들이 눈에 안 보일 뿐이지, 없는 게 아니다.
어떤 길이 좋은 길인지는 가봐야 안다.
겉으로 단단해 보여도 자갈일 수 있다. 진흙처럼 보여도 아래는 바위일 수 있다. 미리 완벽하게 파악하고 들어갈 수는 없다. 근데 걸으면서 발 아래를 보는 것, 지금 어떤 감촉이 느껴지는지 무시하지 않는 것, 이건 할 수 있다.
무의식적으로 걷다가 정신 차려보니 여기였다면, 지금이라도 발 아래를 보면 된다.
나는 지금 어떤 길 위에 있는가.
단단하다고 믿었는가, 아니면 실제로 단단한가.
이 질문을 스스로에게 던지는 것. 그게 개발자의 멘탈 관리에서 가장 먼저 해야 하는 일이 아닐까, 하고 생각했다. 모니터링 없는 시스템을 운영하지 않듯이, 자기 자신에 대한 관찰을 멈추지 않는 것. 단단하다는 확신이 실제 상태인지 오래된 캐시인지, 가끔은 확인해보는 것.
