brunch

프로그래머가 가지고 있으면 좋은 태도

by 취한하늘

좋은 프로그래머가 되기 위해서


프로그래밍의 세계에 입문하는 사람이라면 누구나 좋은 프로그래머가 되고 싶을 것이다. 그리고 이를 위해, '무엇을' 학습해야 할지 알아보고 그것을 달성하기 위해 노력할 것이다. 하지만, 좋은 프로그래머는 무언가를 알고 있는 것만으로 되지는 않는다. 필요한 지식과 기술을 습득하는 것도 물론 꼭 필요한 일이지만, 거기에 좋은 태도가 더해져야 좋은 프로그래머가 될 수 있다. 지식과 기술은 충분하지만 좋은 태도를 가지고 있지 않아 좋은 프로그래머로 인정받지 못하는 사람들이 업계에 더러 있다.

그렇다면, 어떤 태도가 프로그래머에게 필요한 태도일까? 사람마다 생각하는 것이 조금 다를 테지만, 프로그래머 경력을 10년 이상 쌓은 사람으로서, 그리고 프로젝트 리더의 관점으로 프로그래머를 본 경험이 있는 사람으로서, 내가 생각하기에 프로그래머가 가졌으면 하는 태도를 몇 가지 나열해 보고자 한다.


귀찮은 일을 성실히 수행하는 것


프로그래밍이 재밌어서 프로그래머가 되었지만, 막상 해보니 재미없고 귀찮은 일도 많았다. 예를 들어, 코드를 처음 작성할 때는 재밌지만, 한번 작성한 코드를 다시 깔끔하게 정리하는 일은 무척 귀찮았다. 새로운 콘텐츠를 만드는 일은 재밌지만, 예전에 만들었던 것을 다시 만드는 일은 귀찮았다. 심지어, 다른 사람이 만든 코드를 수정해야 하는 일은 더 귀찮았다. 코드를 테스트하기 위해 잡다한 상황을 일일이 만들어 시험해보는 것도 귀찮았고, 주석을 열심히 달고 문서를 만드는 것도 귀찮았다.

귀찮은 일이 안 해도 되는 사소한 일이라면 나를 그렇게 귀찮게 만들지는 않았을 것이다. 어떻게 보면 중요한 일이기 때문에 귀찮기도 한 것 같다. 그리고 이런 귀찮지만 중요한 일을 성실하게 수행하는 것이, 프로그래머가 가져야 하는 좋은 태도 중 하나이다.

귀찮은 일을 미루고 잘 안 하는 프로그래머가 더러 있다. 그러면 본인은 귀찮은 일을 피해서 좋을지 몰라도, 동료들은 그 사람 때문에 힘들어질 수 있다. 지저분한 코드가 되어 다른 사람이 그 코드를 사용하기 어렵게 되고, 테스트가 제대로 되지 않아 테스터나 다른 협업자들이 시간을 낭비하는 일도 생긴다. 그 사람이 퇴사하고 나면 그 사람이 작성한 코드가 폐기되기도 하고, 적절한 기록이 남지 않아 과거에 어떻게 일을 했는지 아는 사람이 없게 될 수도 있다.

귀찮은 일을 성실히 수행하는 사람도 그 일이 귀찮은 것은 마찬가지다. 귀찮지 않아서가 아니라 해야 하는 일이기 때문에 하는 것이다. 그리고 엔지니어는 그런 작업도 마다하지 않아야 한다. 제품과 프로젝트의 완성도가 엔지니어에게 달려있기 때문이다.


새로운 문물에 관심 갖는 것


프로그래머의 세계는 애석하게도 기술의 유통기한이 존재하는 세계다. 젊었을 때 한번 배워두면 그걸로 평생 먹고살 수 있는 세계가 아니다. 그보다는 계속 공부해야 하고 새로운 지식과 기술을 습득해야 하는 세계다. 그런 것으로부터 벗어나기 위해 관리직으로 넘어갈 수도 있는데, 사실 관리직으로 가면 그쪽에도 배워야 할 것이 산더미 같다는 것을 알게 된다. 결국, 평생 학습에 자신이 없으면 프로그래머가 되는 것을 다시 생각해 보는 것이 좋다.

새로운 것을 배운다고 해도, 그것이 이미 습득하고 있는 기술과 비슷한 것이면 배우는 데 큰 어려움이 없다. 그런데, 가끔은 큰 변화가 발생하고, 그에 따라 정말 새롭다고 느껴질 만한 것을 학습해야 할 때도 생긴다. 나는 처음으로 만든 게임이 3D 게임이었는데, 2D로 게임을 만들다가 3D 게임 프로젝트에 참여하게 된 프로그래머는 큰 변화를 겪어야 했을 것 같다. PC 게임을 만들던 프로그래머들이 모바일 게임을 개발하게 되는 경우나, 클라우드 환경을 처음 사용하는 경우 등, 낯선 것에 익숙해져야 하는 상황이 프로그래머에게는 종종 발생한다.

평소에도 새로운 것에 관심이 많은 프로그래머는 그런 변화에 좀 더 잘 적응하는 것 같다. 낯선 것에 대해 두려움도 적고, 무언가 변화가 필요할 때는 이미 어느 정도 정보를 가지고 있는 경우도 많다. 그래서, 변화가 오히려 기회가 되기도 한다. 따라서, 새로운 것에 적극적인 태도 또한 좋은 프로그래머가 되는 데 도움이 되는 태도라고 할 수 있다.


잘 설명하는 것


이것을 태도라고 하기에는 좀 그렇지만, 좋은 프로그래머가 되기 위해 가졌으면 하는 덕목이라서 포함시켜 봤다. 좋은 선수는 경기 결과로 말을 하고, 좋은 배우는 연기로 말을 한다고 한다. 좋은 프로그래머도 프로그램의 품질이 일단 가장 중요할 것이다. 그런데, 자신이 만든 프로그램을 잘 설명하는 것도 좋은 프로그래머가 되기 위해 필요한 요소 중 하나이다.

기획서는 누구나 알아볼 수 있는 언어로 작성되고, 이미지나 소리도 많은 사람들이 그 내용을 이해할 수 있다. 하지만, 프로그래머가 작성한 코드는 같은 프로그래머가 아니면 그 의미를 이해하기가 어렵다. 물론, 코드가 만들어내는 게임 동작이나 화면은 사람들이 확인할 수 있지만, 제품이나 서비스를 계속 유지하고 관리해야 하는 측면에서는 코드 수준에서도 설명이 잘 되어 있는 것이 더 좋을 것이다.

설명을 잘하면 동료 프로그래머들과 시너지를 내기에도 좋다. 프로그래머끼리도 일일이 다른 사람의 코드를 직접 들여다보기는 쉽지 않다. 그래서 먼저 자신의 코드를 설명하고 거기에 대해 의견을 구하는 것이 좋은 방법인데, 그러자면 내 작업을 상대방에게 잘 이해시킬 수 있어야 한다.

프로그래머의 작업에 대해 조직에서 문서 작성을 요구하는 경우도 있지만, 그런 요구가 없더라도 프로그래머 스스로 문서를 작성해 보면 좋다. 그런 과정을 통해 자신의 코드를 더 잘 이해하게 된다. 여기에, 문서를 논리적으로 작성해 보려는 시도를 하면 논리력도 올라갈 것이다. 사실 코드를 작성하는 것과 문서를 작성하는 것에는 공통점이 많아서, 문서를 계획하고 작성하는 것을 반복하면 코드 품질을 향상하는 데에도 도움이 된다.


좋은 선수는 좋은 태도를 가지고 있다


좋은 경기력만으로 좋은 선수가 되기는 쉽지 않다. 좋은 선수들은 대체로 좋은 태도 또한 가지고 있다. 훈련에 임하는 태도나 동료를 대하는 태도 등에서도 좋은 선수들은 좋은 모습을 많이 보여준다. 그리고 그런 좋은 태도들이 꾸준히 그 선수의 역량을 향상해 그들을 좋은 선수로 만들어 준 것이다.

지식과 기술에는 유효기간이 있다. 새로운 지식과 기술은 기존의 지식과 기술을 낡은 것으로 만들어 버릴 수 있다. 하지만, 태도에는 유효기간이 사실상 없다. 좋은 태도는 평생 동안 프로그래머에게 도움을 주고 그를 좋은 프로그래머로 이끈다. 그런 면에서, 무엇을 학습해야 할지 궁리하는 만큼 어떤 태도를 나의 것으로 만들지도 같이 고민하면 더 좋을 것이다.


1. 귀찮은 일을 성실히 수행하는 것

프로그래머의 세계에는 귀찮지만 중요한 일이 많이 있다.

귀찮은 일에 성실히 임하는 프로그래머는 프로젝트의 완성도를 높이고 동료를 힘들지 않게 한다.

2. 새로운 문물에 관심 갖는 것

낯선 것에 익숙해져야 하는 상황을 종종 만나게 된다.

평소에도 새로운 것에 적극적인 프로그래머는 변화에 잘 적응하고 오히려 기회로 삼기도 한다.

3. 잘 설명하는 것

자신의 작업을 잘 설명할 수 있으면, 협업이나 학습에 도움이 된다.

문서를 논리적으로 작성하는 습관은 코드의 품질 향상에도 기여한다.

keyword
이전 26화기획자가 가져야 하는 특별함