프로그래밍을 처음 시작할 때, 많은 실수와 어려움을 겪게 됩니다. 15년 전의 저도 마찬가지였습니다. 만약 그 시절로 돌아갈 수 있다면, 지금의 경험을 토대로 몇 가지 중요한 조언을 해주고 싶습니다. 이 글은 그때의 저처럼 프로그래밍 초심자들이 더 나은 길을 찾을 수 있도록 돕기 위해 작성되었습니다. 이 조언들이 여러분의 개발자 여정을 조금 더 수월하게 만들기를 바랍니다.
1. 시스템 개선의 중요성
팀에서 시스템을 운영하다 보면 종종 실수가 발생하곤 합니다. 특히 새로운 팀원이 합류할 때 실수는 피할 수 없는 부분입니다. 이럴 때 가장 중요한 것은 실수를 줄일 수 있는 시스템을 개선하는 것입니다. 10분만 투자해도 큰 개선을 이룰 수 있습니다.
예를 들어, iOS 개발 시 CoreData를 사용할 때 UI 업데이트는 메인 스레드에서만 가능하다는 사실을 잊지 마세요. 구독 콜백이 메인 스레드와 백그라운드 스레드에서 모두 발생하면 문제가 생길 수 있습니다. 이를 해결하기 위해 구독 레이어를 업데이트하여 구독자가 항상 메인 스레드에서 호출되도록 변경했습니다. 이 간단한 변경은 전체 시스템의 충돌을 크게 줄였습니다.
2. 마음가짐의 변화
프로그래밍에서 중요한 것은 문제를 해결하는 과정에서 얻는 경험과 그로 인한 마음가짐의 변화입니다. 팀과 자신의 삶을 더 쉽게 만들기 위해 노력하는 것이 중요합니다. 버그를 두려워하지 않고 빠르게 해결하는 능력을 기르세요.
예를 들어, 첫 직장에서 데이터를 처리할 때는 빠르게 움직이며 가드레일에 의존했습니다. 그러나 두 번째 직장에서는 고가치 금융 데이터를 다뤄야 했기 때문에 작은 버그도 치명적이었습니다. 이런 상황에서는 완벽함을 추구하는 것이 필요했습니다.
3. 도구의 중요성
좋은 도구를 잘 다루는 것은 개발자의 큰 자산입니다. 에디터의 주요 단축키를 알고, 운영체제와 셸에 능숙해지세요. 빠른 타이핑과 브라우저 개발 도구의 효과적인 사용도 중요합니다. 새로운 엔지니어에게 가장 큰 그린 플래그는 도구를 잘 선택하고 능숙하게 사용하는 능력입니다.
4. 문제의 근본 원인 해결
버그를 표면적으로 해결하는 대신, 근본적인 원인을 찾아 해결하는 것이 중요합니다. 예를 들어, React 컴포넌트에서 user가 null인 경우를 처리하는 대신, 로그아웃 함수의 상태 업데이트 순서를 변경하여 문제를 근본적으로 해결할 수 있습니다. 근본적인 문제 해결은 향후 변경을 더 쉽게 만듭니다.
5. 직관의 중요성
프로그래밍에서 직관은 매우 중요합니다. 버그 보고서에서 “어라?” 하는 순간이 직관적으로 문제를 조사할 때 중요한 단서가 될 수 있습니다. git bisect와 같은 도구를 사용하여 문제를 추적하세요.
6. 피드백 메커니즘
피드백 메커니즘은 학습에 필수적입니다. 완벽한 코드를 작성하려는 시도는 때로는 피드백을 받을 수 있는 기회를 놓칠 수 있습니다. 빠른 배포와 피드백은 개발 속도를 높이는 데 중요합니다.
프로그래밍의 많은 부분은 균형을 찾는 것에 있습니다. 빠르게 코드를 작성하면서도 기술 부채를 최소화하는 것이 중요합니다. 테이블 설계를 신중하게 하고, 훌륭한 테스트를 추가하는 것이 중요합니다.
결론
프로그래밍 초심자들에게 중요한 것은 문제를 해결하는 과정에서 배우는 경험과 그로 인한 마음가짐의 변화입니다. 도구를 잘 다루고, 문제의 근본 원인을 해결하며, 직관과 피드백 메커니즘을 통해 학습하는 것이 중요합니다. 이 조언들이 여러분의 개발자 여정을 조금 더 수월하게 만들기를 바랍니다.
참고 자료: mbuffett.com, “A Bunch of Programming Advice I’d Give To Myself 15 Years Ago”