[생각] 스스로 새기는 원칙
February 2024
2023년 회고 글은 생각이 너무 많아 썼다 지웠다를 반복하다가 안쓰기로 했다. 느낀 바 중 하나는 원칙이 없어서 상황에 따라 대응하는 경우가 많았다. 이번 글에서는 제 스스로 느끼고 지속해서 가져갈 할 개발 혹은 생활 원칙들을 생각해봤다.
TLDR
- 누울 자리는 없다
- 정보 단식을 하자
- 쓰레기가 보이면 줍자
- 항상 기록하라
- 한점 부끄러움 없는 코드를 작성하라
- 운동하라
- 반란군처럼 투쟁하라
- 쿨병걸린 자들 멀리하기
- 재밌는 것 금지
- 항상 단순하게
- 유연한 원칙주의자
누울 자리는 없다
내 행동은 단순히 안락함을 추구하기 위함이 아니다. 나는 의식적으로 도전적인 길을 선택했으며, 그에 따른 책임을 완전히 이행해야 한다. 목표는 단순히 무언가를 얻기 위함이 아니라, 지속적인 발전을 위한 방향성을 설정하고 그 방향으로 나아가기 위해 이 일을 하고 있다. 편안히 누워있지 말고, 일어나서 노력해야 한다. 깊이 고민하고, 또 고민하자. 고민은 성장을 가져오고, 더 많이 고민할수록 개선이 이루어진다. 때로는 바로 시도해보는 것이 고민의 해답이 될 수 있다. 시도 자체로 끝내지 말고, 그 시도로 얻은 경험을 바탕으로 더 깊이 고민하고 개선해 나가자.
정보 단식을 하라
현대인들은 정보에 중독되어있다. 유튜브, 커뮤니티 사이트, 페이스북, 인스타그램, 틱톡 등 다양한 플랫폼을 통해 끊임없이 자극적인 정보를 찾아 헤맨다. 마치 자극적인 정크푸드가 몸을 해치고 비만을 초래하는 것처럼, 쓸모 없는 정보들은 우리의 뇌를 불필요한 것들로 가득 채우며 사고력을 떨어뜨린다. 이러한 유혹에 휘둘리지 않고, 비록 당장에는 재미없을 수 있지만 보다 건전하고 유익한 정보를 찾아내는 노력이 필요하다.
쓰레기가 보이면 줍자
쓰레기는 어디에나 널려있다. 거리뿐만 아니라, 내 프로젝트의 코드나 업무 과정에서도 발견된다. 이런 문제들은 주변에서 누군가가 해결하기를 기다리는 것들이지만, 실제로는 쉽게 나서서 해결하려는 이가 드물다. 이러한 상황에서 나는 먼저 나서서 해결의 주체가 되어야 한다. 쓰레기를 치우는 일은 겉보기에 간단할 수 있으나, 실제로는 그렇지 않은 경우가 많다. 바로 이러한 이유로 많은 사람들이 선뜻 나서지 않는 것이다. 하지만, 이러한 어려움 속에서 고민하고, 그 과정을 통해 성장할 수 있는 기회를 발견할 수 있다. 까다로운 일을 처리함으로써, 조직 내에서의 내 영향력이 점차 커지는 것을 체감할 수 있다.
조직은 이런 적극적인 구성원들이 많아질수록 버려진 쓰레기 없이, 불필요한 레거시와 비효율적 업무 프로세스가 만들어내는 기술 부채 문제나 병목 현상에서 벗어나 목표 달성에 더 유리한 상황을 맞이할 수 있다. 이러한 조직에서 일하면, 개인과 조직이 함께 성장하며, 이는 나에게 큰 도움이 된다. 반대로, 문제가 쌓여도 기존 방식을 고수하게 하고, 문제 해결을 방해하는 조직이나 문제를 만드는 사람들로만 가득 찬 조직은 나에게 도움이 되지 않는다. 쓰레기를 치우는 습관이 지치지 않도록, 그런 환경에서는 적절한 시기에 떠나는 것이 중요하다. 그렇지 않으면, 점점 그 조직과 닮아가며 쓰레기조차 인식하지 못하게 된다.
항상 기록하라
지난해 나는 글로 기록하는 일을 게을리 한 것을 가장 큰 과오로 꼽는다. 바쁜 일정도 한몫 했지만, 기록할 가치가 있는 사항들이 있음에도 불구하고 간단한 메모나 그림으로만 대충 마무리지어 기록하지 않았다. 내가 생각했던 것은, 잘 정돈된 글로의 기록을 마치 코딩처럼 여기며, 마인드 맵과 같이 생각에 가까운 단위로 기록할수록 그것이 더 효율적인 기록 방법이라고 여겼기 때문이다. 하지만, 이런 접근 방식은 잘못되었음을 깨달았다. 실제로는 기록에 더 많은 고민과 정리를 기울여야만 그것을 온전히 내 것으로 만들 수 있다. 업무적인 면에서도, 많이 기록하고 개선점을 성찰하는 습관을 가져야겠다.
한점 부끄러움 없는 코드를 작성하라
모든 코드 라인은 그 자체로 의미를 가져야 한다. 내가 작성하는 코드는 각 단락마다 명확한 의미를 부여받아야 하며, 이는 수년 전 대학에서 배운 방식일 수도, 어제 읽은 '클린 코드'에서 얻은 인사이트일 수도 있다. 다양한 방식으로 표현될 수 있으나, 모든 단락에는 분명한 목적이 존재해야 한다. 단 한 줄의 코드를 위해서도 깊은 고민이 필요하다. 한번 작성되고 배포된 코드는 수정이 어려운 경향이 있다.
코드의 퀄리티를 유지하기 위해 필요한 최소한의 시간은 반드시 확보해야 한다. 긴급한 상황이라도, 협업자나 상사의 부탁으로 서둘러 작성된 코드가 배포되면, 그 결과에 대한 책임은 전적으로 나에게 있다. 그 코드는 사내 리포지토리에 남게 되며, 그것을 본 누군가는 그 코드만으로 나를 평가하게 된다. 나중에 누군가가 그 코드를 수정해야 한다면, 그 과정에서도 나에 대한 평가가 이루어진다. 문제가 발생할 경우, 협업자나 상사가 책임을 나에게 전가하는 상황도 발생할 수 있다. 후에 부정적인 평가를 받고 싶지 않다면, 최소한의 퀄리티를 유지하기 위해 노력해야 한다.
정상적으로 작동하는 코드라도, 성급하게 작성된 경우 리팩토링이 어려워진다. 급하게 작성되어 결합도가 높고 복잡할수록, 리팩토링 과정에서 버그가 발생하기 쉽다. 리팩토링 후에 발생하는 버그는 개발자의 책임이다. 따라서, 기한을 맞추기 위해 급하게 작성된 코드는 리팩토링하기 어렵다.
따라서, 깊은 고민을 거듭하자. 작업 완료의 기쁨은 잠시 뒤로하고, 코드를 작성하기 전과 Pull Request를 하기 전에 각각 5분 더 신중히 검토하자. 심지어 배포 전일지라도, 작은 실수 하나가 나에 대한 부정적인 평가로 이어질 수 있으며, 이는 동료의 시간도 소모하게 된다. 개발 팀은 스포츠 팀과 같다. 모든 개발 프로세스는 축구에서의 패스, 드리블, 골처럼 유기적으로 이루어져야 한다. 실수는 발생할 수 있으나, 그것이 권리는 아니다.
운동하라
시간을 투자하여 운동을 시작하자. 하루에 한 시간, 혹은 이틀에 한 번씩 운동하는 것만으로도, 하루를 더욱 에너지 넘치게 보낼 수 있다. 때로는 운동하는 시간이 아깝다고 느껴져 다른 일에 그 시간을 쓰고 싶을 때도 있지만, 한 시간의 운동 투자가 몇 배의 스태미너 증가로 이어진다는 사실을 기억하자. 이는 분명 시간 대비 효과적인 투자다.
반란군처럼 투쟁해라
항상 투쟁을 해야 한다. 현 상황에 순응을 하면 고민하지 않게 되고 고민하지 않게 되면 성장하지 않는다. 투쟁은 모든 곳에서 이뤄져야 한다. 이는 개발 커뮤니티에서 유통되는 정보를 비판적으로 분석하고, 잘못된 부분을 정확하게 지적하는 것에서 부터 시작된다. 이렇게 하지 않으면, 잘못된 정보가 우리의 지식 체계에 오랜 시간 동안 머무를 위험이 있다.
회사의 개발도 투쟁적으로 해야 한다. 부당한 관리를 받았을 때, 그것이 나와 동료들에게 끼치는 부정적 영향에 대항하기 위해 목소리를 높여야 한다. 팀과 개인의 성장을 방해하는 요소가 있다면, 그것에 대해 적극적으로 대응해야 한다. 심지어 코드 작성 과정에서도, 우리는 개선과 발전을 위한 의미 있는 투쟁심을 담아야 합니다. 진정한 개선은 익숙한 것을 넘어서 더 나은 대안을 모색하는 과정에서만 생겨난다. 투쟁 없이는 개선이 생기지 않는다. 익숙한 것을 버리고 더 나은 것을 찾아가는 과정이 투쟁이다.
쿨병걸린 자들 멀리하기
주변에 과도한 자신감을 보이며 모든 업무를 가볍게 여기는 사람들이 있다. 어려운 업무도 쉽게 보이게 하여, 필요한 검토와 고민 없이 처리하려는 경향이 있다. 이런 태도를 가진 사람은 고민과 고려가 필요할 어려운 업무에 무조건 적인 긍정적인 판단만 내리면서 팀 내 소통을 어렵게 한다. 동료들이나 지도해야 할 후배들에게 쉬운데 왜 못하냐며 부당한 압박을 가할 수 있다. 이러한 행동은 종종 업무의 부담을 다른 팀원들에게 전가시키며, 그 결과로 생산적인 학습 환경이 아닌, 어려운 작업 환경을 조성한다. 보이면 최대한 피해야 한다. 새로운 기회를 모색하는 것이 필요할 수도 있다.
재밌는 것 금지
사람이 가장 뭔가 의지를 다지는 연초임에도 대부분 시간을 요즘 유행하는 옛날 메이플과 팰월드를 하며 보냈다. 재미 수치가 일정 수준을 넘어가는 것들은 단기적인 중독 증상을 가져와서 생산성에 부정적인 영향을 준다. 하루에 한 두시간 정도 하면 더이상 재미가 없는 것들이 좋다. 과거 수험 생활 중 받았던 조언처럼, 휴식 시간에도 너무 과하게 생산성 있는 활동보다 재미있는 활동은 자제하는 것이 좋다. 시간이 흐르면 과하게 재미있었던 경험들도 추억으로 남지만, 달성하고 싶은 목표가 있다면 그러한 유혹으로부터 거리를 두는 것이 중요하다.
항상 단순하게
모든 것을 가능한 한 단순하게 유지하자. 단순함을 추구하는 것은 본질적으로 모든 것을 추상화하는 과정이다. 추상화란 복잡한 요소들을 제거하고, 공통적인 요소들을 하나로 묶어 전체를 단순화하는 작업을 말한다. 이 원칙은 개발 작업뿐만 아니라 우리의 일상 생활에도 적용된다. 삶의 복잡도를 줄이고, 우리가 무엇을 추구하며 어떤 목표를 달성하고자 하는지를 명확히 함으로써, 우리의 생활을 더욱 명확하고 의미 있게 만들 수 있다.
유연한 원칙주의자
개발자로서 경력을 쌓아오면서 겪은 실수들과 그로부터 얻은 교훈들은 이 원칙들을 만드는 데 큰 영감을 주었다. 사람은 실수를 반복하는 존재이지만, 이러한 원칙들을 가까이 두고 실천함으로써 실수의 빈도를 줄이고, 심지어 같은 실수를 저지르더라도 빠르게 인식하고 수정하는 데 도움이 되기를 바란다. 경력을 더 쌓아감에 따라 이 원칙들은 추가되거나 수정될 수 있다. 현재의 원칙들은 내 경험에서 비롯된 일종의 가설에 불과하다. 가설은 직접 실천하고 반성하며 지속적으로 개선해야 한다. 원칙은 지킬 가치가 있지만, 영원불변의 것은 아니다. 이러한 원칙들이 설정된 궁극적인 목표는 더 나은 사람이 되는 것이다. 따라서 원칙이 그 목표에 방해가 된다면 언제든지 수정하거나 폐기될 수 있어야 한다.