롱런하는 개발자가 가져야 할 5가지 덕목

소희 ·2020년 11월 29일
10

함께 일하는 팀원의 추천을 받아 The Pragmatic Programmer (실용주의 프로그래머) 라는 책을 읽기 시작했습니다. 적절한 비유와 설명 덕에 쉽게 읽힐 뿐만 아니라 일터에서 기억하고 적용해 보면 좋을 포인트가 많습니다. 그중 가장 첫 장에서 말하는 실용적인 개발자의 태도를 글로 정리해보았습니다.

1. 책임감

"Pragmatic philosophy is the idea of taking responsibility for yourself and your actions in terms of your career advancement, your learning and education, your project, and your day-to-day work (topic 2)".
실용적 철학은 경력 발전, 학습 및 교육, 프로젝트 및 일상 업무 측면에서 자신과 행동에 대한 책임을 지는 것이다.

책의 중심이 되는 실용주의적 개발 철학은 '책임감'으로 시작합니다. 저자는 개발자가 자신을 발전시키고 일을 대함의 책임감에 대해 말합니다. 그리고 변명이나 '모르겠다'라는 소극적인 태도가 아니라 지금은 모르더라도 배워나가겠다는 적극적인 태도로 일하는 것의 중요성을 강조합니다.

개발자라는 직업을 선택하는 많은 분들이 이미 이런 태도를 가지고 공부해온 경우가 많을 것 같습니다. 이런 태도를 유지한다면 꾸준히 성장하는 개발자가 될 뿐만 아니라 팀에 큰 자산이 될 것이라는 생각을 해 봅니다.

2. 깨진 창문은 즉시 수리

"Don’t leave “broken windows’’ (bad designs, wrong decisions, or poor code) unrepaired. Fix each one as soon as it is discovered (topic 3)".
"깨진 창문"(잘못된 디자인, 잘못된 결정 또는 잘못된 코드)을 수리하지 않고 그대로 두지 마십시오. 발견되는 즉시 수정하십시오.

사실 깨진 창문의 비유는 일상생활의 많은 부분에 적용될 수 있습니다. 사람과의 관계, 건강, 어쩌면 집안일에서도 계속해서 삐걱대는 부분을 고치지 않고 무시하면 언젠가 손쓸수 없을 만큼 커버린 문제를 마주하게 될지도 모릅니다.

이와 같이 우리는 일을 하다가도 자주 깨진 창문을 발견합니다. 조그마한 버그일 때도 있고, 눈 감고 넘어가면 괜찮을 법한 잘못된 코드일 수도 있습니다. 저자는 이런 부분들을 계속 무시하고 나간다면 우리도 모르는 사이에 수많은 깨진 창문이 컨트롤할 수 없을 만큼 늘어날 수 있음을 경고합니다. 그렇기에 우리는 계속 코드를 수리하는 책임을 가지고 있음을 잊지 말아야 합니다.

3. 완벽주의는 버릴 것

"Don’t spoil a perfectly good program by overembellishment and overrefinement. Move on, and let your code stand in its own right for a while. It may not be perfect. Don’t worry: it could never be perfect (topic 5)".
지나치게 꾸미거나 세분화하여 좋은 프로그램을 망치지 마십시오. 코드를 잠시 그대로 두십시오. 완벽하지 않을 수도 있습니다. 걱정하지 마세요. 완벽 할 수는 없습니다.

저자는 개발자를 화가에 비유합니다. 화가가 그림을 그려 자신이 표현하고 싶은 작품을 완성해 나가는 것처럼 개발자들도 다양한 도구와 로직을 통해서 구현하고 싶은 서비스를 만들어 낸다는 것입니다.

중요한 것은 화가들이 완벽하게 그림을 완성하고 싶어서 페인트를 덧입히고 또 덧입히다 보면 어느 순간 너무 과해져 자신이 처음에 가지고 있었던 목표와 멀어지는 경험을 한다는 것입니다. 이것은 개발 환경에서도 자주 찾아볼 수 있습니다. 가장 완벽한 코드를 짜려는 완벽주의보다는 충분한 정도를 알고 멈출 수 있는 용기도 필요합니다. 필요하다면 다시 돌아와 수정, 보안하면 됩니다.

4. 나만의 지식 포트폴리오

"You must invest in your knowledge portfolio regularly, even if it’s just a small amount. The habit is as important as the sums, so plan to use a consistent time and place, away from interruptions (topic 6)".
소량이라도 지식 포트폴리오에 정기적으로 투자해야합니다. 습관은 합계만큼 중요하므로 중단없이 일관된 시간과 장소를 사용하도록 계획하십시오.

계속해서 변해가는 개발 환경에서 늘 성장해야 하는 것은 어쩌면 개발자의 숙명 같습니다. 저자는 이런 성장을 포트폴리오에 투자하는 것으로 표현합니다. 재무 포트폴리오처럼 현명한 투자를 해야 한다는 것입니다. 곧 대체되는 언어를 배우는 것보다는 무엇이든 빨리 습득할 수 있는 능력을 기르는 등으로 시간과 에너지를 잘 사용해야 합니다.

이 챕터에서는 다양한 방법으로 개발자가 자신의 지식 포트폴리오를 성장시킬 수 있는 방법을 소개합니다. 예를 들어, 한 해에 적어도 하나의 새로운 언어를 배운다든지, 개발/일반 서적을 읽는 것, 밋업에 참여해 새로운 능력을 키우는 것 등입니다. 이력서에 들어가는 한줄을 만들려는 것 보다 중요한 것은 사고 능력을 확장시키는 활동을 해야 한다고 저자는 말하고 있습니다.

5. 소통능력

"Having the best ideas, the finest code, or the most pragmatic thinking is ultimately sterile unless you can communicate with other people (topic 7)".
최고의 아이디어, 최고의 코드 또는 가장 실용적인 사고를 갖는 것은 다른 사람들과 의사 소통 할 수 없는 한 궁극적으로 무균 상태입니다.

아무리 번뜩이는 아이디어나 완벽한 코드가 있더라도 효과적인 소통 능력이 뒷받침되어야 그 빛을 바랄 수 있다는 것입니다. 개발자는 코드와만 소통하는 것이 아닙니다. 팀원들, 클라이언트, 매니저, PM, 등등 다양한 사람들과 대화하면서 의견을 주장하기도 하고 설명하기도 합니다. 책에서는 자신의 말을 듣는 대상을 이해하고, 필요한 정보를 전달하는 능력을 키우는 것이 중요함을 다시 한번 강조합니다.

소통 능력이야말로 많은 시간 투자하고 연습해야 할 중요한 지식 포트폴리오의 부분이라는 생각이 들었습니다. 더디더라도 계속 연습하고 꾸준히 사람들 앞에서 소통하는 것의 중요성을 느낍니다.

정리

개발자라면 어떻게 하면 더 유능한 개발자가 될 수 있을까, 한번쯤 고민해 볼 것입니다. 중요한 것은 가지고 있는 지식과 스킬이 다가 아니라는 것입니다. 그것보다 어쩌면 더 습득하기 어렵지만 오래가지고 갈 수 있는 책임감, 소통 능력, 꾸준한 자기 개발과 결정 능력을 키우는데 집중하는 것이 롱런하는 개발자의 필수 조건이 아닐까 생각해 봅니다.


  • 사용한 이북에 페이지 정보가 없어서 인용문과 책 내용의 참고 위치는 topic 으로 명시했습니다.
  • 원문 인용문 아래 한국 번역을 넣었고 이는 구글 번역기를 사용한 후 맥락에 맞게 수정했습니다.
  • 이미지 크레딧: Photo by Kelly Sikkema on Unsplash
  • 글 컨텐츠 크레딧 - 책: Thomas, D., & Hunt, A. (2020). The pragmatic programmer: Your journey to mastery. Boston: Addison-Wesley.
profile
소프트웨어 엔지니어 🖥

3개의 댓글

comment-user-thumbnail
2020년 11월 30일

👍

답글 달기
comment-user-thumbnail
2023년 1월 5일

잘 보고 갑니다👍

답글 달기
comment-user-thumbnail
2023년 7월 17일

좋은글이네요 잘보고갑니다. :)

답글 달기