그냥 코딩을 계속해
Source: Dev.to
Introduction
우리는 버그를 고치러 갔는데, 쉬운 수정이라고 생각했지만 하루의 대부분을 그 문제를 해결하려고 보내는 날이 있습니다. 해결하지 못하면 오후 내내 그 일만 생각하게 되고, 실력에 의문을 품고, 머릿속으로 모든 과정을 되새기며, 이렇게 간단한 문제가 왜 이렇게 오래 걸리는지 궁금해집니다.
이것은 모든 개발자가 겪는 답답한 루프입니다. 다른 접근법을 시도하고, 문서를 읽고, 에디터를 재시작해도 여전히 해결되지 않으면, 자기 의심이 떠오릅니다: “내가 이걸 할 수 있을까? 이제는 알아야 하지 않을까?”
하지만 진실은 이렇습니다: 코딩할 때 바보같이 느끼는 것은 전혀 괜찮습니다. 초보부터 시니어 엔지니어까지 모든 개발자는 정확히 그런 순간을 겪습니다. 코딩은 올바른 문법을 입력하는 것만이 아니라, 인내와 문제 해결, 그리고 때로는 물러설 줄 아는 능력까지 포함합니다. 길을 잃거나 막히는 느낌은 배우는 가장 어려운 부분을 하고 있다는 증거일 뿐입니다.
You’re Always Learning (and Forgetting)
제가 수년간 받아들인 한 가지는 코딩에 있어 배움은 끝이 없다는 것입니다. React에서 Vue로 전환하거나, Node 프로젝트를 오가면서 각 프레임워크가 어떻게 구조화되는지 계속해서 새로 고쳐야 합니다. 오래된 프로젝트를 열어 “컴포넌트가 어떻게 연결됐는지 기억한다”고 생각했지만, 절반 이상의 문법을 잊어버린 경우가 많습니다.
처음엔 그게 굉장히 답답했습니다. 백번 사용한 것을 어떻게 잊을 수 있냐고 스스로에게 물었죠. 시간이 지나면서 깨달은 건, 모든 것을 기억하는 것이 아니라 막혔을 때 어디서 찾아볼지 아는 것이 더 중요하다는 것이었습니다. MDN이든, Stack Overflow든, 혹은 6개월 전의 내 레포든, 올바른 답을 빠르게 찾는 능력이 모든 메서드나 라이프사이클 훅을 외우려는 노력보다 훨씬 가치 있습니다.
좋은 개발자의 진짜 스킬은 완벽한 기억력이 아니라 적응력입니다. “이건 기억이 안 나지만, 어떻게 찾아낼지는 안다”라고 차분히 말할 수 있다면, 이미 전투의 절반을 승리한 셈입니다.
Story Time: When I Felt Dumb
제가 최근에 바보같이 느꼈던 경험은 며칠 전 일어났습니다. 영상 변환기 애플리케이션을 작업하고 있었고, Node.js 애플리케이션 간에 스트리밍 파일을 다루는 것은 여러 번 해본 일입니다. 스트림 로깅도 자주 사용해서 익숙한 영역이어야 했죠.
첫 번째 문제는 제가 만든 파일 체크에서 시작되었습니다. 모든 파일 청크가 최종 파일에 스트리밍되기 전에 사용 가능한지 확인하고 싶었습니다. fs를 이용해 각 파일이 존재하는지 15초까지 기다리는 백‑오프 함수를 설정했죠. 파일들은 정상적으로 존재했지만 테스트 실행 중 일부 출력 파일이 손상된 것을 발견했습니다. 몇 시간을 들여 함수를 다시 작성하고 디버깅했지만, 파일은 존재했으니 뭐가 문제일까 고민했습니다.
그때 깨달았습니다. 파일이 존재한다는 것만 확인했을 뿐, 파일 크기는 확인하지 않았던 것이죠. 제 함수는 기술적으로 존재하지만 완전히 비어 있는 파일도 통과시켰습니다. 결국 0바이트 파일 문제를 쫓는 데 몇 시간이 허비되었습니다.
두 번째 문제도 마찬가지로 어리석게 느껴졌습니다. 파일 체크가 끝난 뒤 청크들을 하나의 파일로 스트리밍했는데, 작은 테스트 파일에서는 잘 동작했지만 큰 파일로 넘어가자 데이터가 누락되는 현상이 나타났습니다. 버퍼의 백프레셔를 처리하지 않아 스트림이 과부하돼 중간에 데이터를 버리는 상황이었죠. 이를 발견했을 때는 부끄러움을 느끼며 커피를 마시고 잠시 떠났습니다.
솔직히 그 짧은 휴식이 가장 큰 도움이 되었습니다. “바보”가 되는 것이 문제가 아니라 인간이라는 사실이 문제라는 것을 일깨워 주었거든요. 때때로 정확히 무엇을 하고 있는지 알고 있어도 가장 단순한 디테일을 놓칠 수 있습니다.
Step Back to Move Forward
그 디버깅 세션은 때때로 코드를 떠나는 것이 가장 좋은 해결책이 될 수 있다는 확실한 교훈을 주었습니다. 커피를 마시며 잠시 물러난 것은 포기한 것이 아니라, 뇌를 식혀 문제를 있는 그대로 볼 수 있게 만든 것이었습니다. 몇 시간 동안 같은 몇 줄을 바라보면 코드를 읽는 대신 기대하는 대로 보게 됩니다. 바로 그때 물러설 때입니다.
거리두기가 최고의 디버깅 도구가 될 수 있다는 것을 배웠습니다. 산책을 하든, 작업을 바꾸든, 혹은 코드를 다른 사람에게 설명하든, 간단한 관점 전환이 몇 시간 동안 바라보던 코드를 깨우는 경우가 많습니다. 한 번은 오후 내내 코드에 빠져 있었는데, 동료가 한 번 훑어보는 순간 내가 놓친 문제를 바로 찾아냈던 적이 있습니다. 겸손하면서도 위안이 되는 경험이었죠. 때때로 터널 비전을 깨는 데는 또 다른 눈이 필요합니다.
잠깐의 휴식뿐 아니라 과거 코드를 되돌아보는 것도 큰 도움이 됩니다. 자신이 얼마나 성장했는지 확인할 수 있거든요. 이제는 다르게 할 수 있는 부분, 더 깔끔하게 만들 수 있는 로직, 당시엔 몰랐던 패턴들을 발견하게 됩니다. 일상적인 문제 해결에 파묻혀 있으면 자신의 진전을 잊기 쉽지만, 스타일과 이해도가 어떻게 변했는지 보는 것은 조용히 성장하고 있다는 좋은 증거가 됩니다.
결국 이런 리셋이 필요하다는 건 전혀 부끄러운 일이 아닙니다. 코딩은 완벽한 집중을 지속해야 하는 끝없는 고된 작업이 아니니까요. 실수, 지연, 혼란스러운 순간 하나하나가 다음 번에 문제를 더 잘 다루게 하는 뇌의 학습 과정입니다. 짧은 휴식, 새로운 시각, 혹은 오래된 코드를 스크롤하는 것만으로도 내일은 웃으며 넘길 수 있는 문제를 피할 수 있습니다.
You Won’t Be Good at Everything
또 하나 오랜 시간 받아들여야 했던 사실은, 모든 분야에 능숙해질 수는 없으며 그것도 전혀 문제되지 않는다는 것입니다. 기술 세계는 방대합니다. 좋아하는 생태계 안에 머물러도 도구, 프레임워크, 라이브러리는 끝없이 늘어납니다. React에 자신감이 붙었지만 Vue로 옮기면 다시 제로부터 시작하는 느낌을 받을 수 있죠.
모든 것을 마스터하려는 시도는 불가능하고, 솔직히 필요하지도 않습니다. 경험을 쌓을수록 좋은 개발자는 모든 것을 아는 것이 아니라, 자신의 강점을 알고, 호기심을 유지하며, 적응하는 사람이라는 것을 깨닫게 됩니다. 자연스럽게 특정 주제, 도구, 기술에 전문성을 갖게 되는데, 이는 새로운 것을 모두 쫓기보다 호기심이 이끄는 방향으로 깊이를 쌓아가는 과정입니다.
비교 함정에 빠지기 쉽습니다. 소셜 미디어를 스크롤하거나 누군가 멋진 무언가를 만들면 “나는 뒤처진 걸까?” 하는 생각이 듭니다. 하지만 그렇지 않습니다. 각자의 두뇌는 다르게 작동하고, 기술 여정도 각기 다릅니다. 중요한 것은 계속 배우고, 실험하고, 모든 것을 한 번에 알 필요가 없다는 허락을 스스로에게 주는 것입니다.
Conclusion
코딩 중에 바보같이 느끼는 것은 나쁜 개발자라는 뜻이 아니라, 진짜 개발자라는 증거입니다. 잡아야 할 버그, “왜 놓쳤을까?” 하는 순간, 문서를 다시 읽으며 어떻게 동작하는지 기억하려는 시간—이 모든 것이 과정의 일부입니다. 이런 순간들이 당신의 사고 방식, 디버깅 방법, 문제 접근 방식을 형성합니다.
과거 코드를 되돌아보면 자신이 얼마나 성장했는지 실감하게 됩니다. 한때 헷갈리던 부분이 이제는 명확해지고, “그때는 충분히 좋다”고 생각했던 지저분한 로직이 더 나은 아이디어를 떠올리게 합니다. 이런 반성은 부끄러워할 것이 아니라, 성장에 대한 축하입니다. 매번 좌절스러운 세션과 늦은 밤의 “아하!” 순간을 통해 조용히 발전해 온 것입니다.
그러니 좌절의 소용돌이에 빠졌을 때 기억하세요: 이것은 정상이고, 인간적인 반응이며, 당신이 배우고 있다는 신호입니다. 잠시 쉬고, 도움을 청하거나, 그저 한 걸음 물러서 보세요. 새로운 눈으로, 맑은 마음으로 돌아와서 퍼즐의 또 다른 조각을 맞출 수 있을 겁니다.