효율적인 개발자 목표 설정 가이드
글을 쓰게 된 이유
기존에는 설계에 대한 가이드라인
을 작성해 보려고 했지만 출장 동안 단 한 글자도 작성하지 못한 채 1주가 지나갔기 때문에 주제를 바꿔서 어떻게 목표를 선정할 것인가?
를 주제로 정답은 정해져 있지는 않지만 어떤 식으로 접근해 보면 좋을지를 작성해 보고 저의 이야기도 글에 녹여보려고 합니다
한 가지 더 과도한 정보라고 생각하나 최근에 회사 내에서 깊은 교류 관계는 없었던 분이지만 그분의 상황에 대한 미숙한 대처
로 인해서 회사에 불미스러운 일이 발생했습니다. 앞선 일과 관련하여 징계
나 시말서
의 유무를 떠나 회사 구성원에게 차가운 시선을 받는 것을 보며 총을 쥔 사람이 내가 아니라면 총구는 누구에게나 향할 수 있다
라는 생각을 하게 되었습니다
일이 옳으냐 그르냐를 떠나서 누구나 그런 일에 직면할 수 있을 것이며 이에 대한 빈도를 줄이거나 능동적으로 대체할 수 있게끔 하기 위해서는 자아 성찰의 기회가 필요하다고 생각했습니다.
결론적으로 나는 어떤 사람
어떠한 개발자
가 되어야 할 것이며 어떠한 목표를 향해 달려야 하는가 대해 고민을 하게 되어 이러한 글을 작성하는 상황까지 이르게 되었습니다.
잡설이 조금 길어졌던 것 같네요. 바로 글에 대한 본론으로 넘어가 보도록 하겠습니다
무엇을 하고 싶은가요
과거 제가 취업 준비생이던 시절 어떤 기업에서 면접을 봤던 적이 있습니다. 그 기업의 CTO님께서 저에게 하신 질문입니다. 무엇을 하고 싶으신가요?
저는 이 질문에 대해서 그냥 백엔드 개발
을 하고 싶다는 단순한 답변을 드렸던 적이 있습니다.
물론 당연하게도 의도
는 그것이 아니었을 것이고 그걸 물어본 게 아니라고 이야기 해주셨습니다. 질문 답변도 잘하고 있었는데 아마 그 때 이것 때문에 불합격 한 것 같네요
현재 시점으로 돌아와서 과거에 받았던 질문의 의도를 생각해 보면 어떤 목표를 가지고 도착 지점으로 향할 것인가라는 이야기라고 생각합니다. 물론 아닐 수도 있습니다. 혹시나 이 글을 보시는 CTO님 자신의 이야기라고 생각된다면 답변 부탁드립니다
저는 이 질문을 보면 포켓몬스터
의 이브이
가 생각나더라고요 이브이는 기본적인 형태에서 무려 8종으로 진화할 수 있습니다. 진화의 돌
이라는 물품으로 어떠한 형태로 진화가 가능하고 또한, 특정한 기술
을 익힌 채 레벨을 올려도 다른 형태로 진화가 가능합니다. 엄청난 가능성
을 품고 있는 포켓몬입니다.
사람에게도 동일하게 적용되며 그 안에 직업 내에서도 이를 설명 가능합니다. 여러분도 그렇고 저도 포함되며 무한한 가능성을 가지고 있으며 다양한 형태로 진화할 수 있습니다.
다양한 형태(=분야)
로 진화에 대해서 개발자
를 예시로 들어보도록 하겠습니다.
- 프론트 엔드(Front-End)
- 백엔드(Back-End)
- 데브옵스(DevOps)
- 데이터 사이언(Data Scientist)
전부 나열하기에는 너무 많을 것 같아서 생각 나는 정도만 적어보았습니다. 저는 이것들은 어떻게 보면 종착점
이라고 생각합니다.
과거에 제가 이야기 한 것처럼 백엔드 개발을 하겠다(=백엔드 개발자가 되겠다)는 단순하게 최종적인 종착점(=목표)을 이야기한 것입니다. 왜 하고 싶으며 어떻게 할 것이며 어떠한 결과를 낼 것인지에 대해서 없는 것입니다.
그렇다면 어떤 식으로 목표를 잡아야 할지에 대해서 한번 이야기해 보도록 하겠습니다.
개발자로써의 목표
개발자로서 가질 수 있는 목표는 어떤 것들이 있을까요? 간단하게 몇 가지만 나열해 보겠습니다
- 팀을 원활하게 돌아갈 수 있게끔 하는
협업 능력
향상 - 새로운 기술을 습득하여
기술적 역량
을 향상하는 일 오픈 소스
프로젝트에 기여하는 일- 개발 커뮤니티나 개인 블로그에
지식 공유
활동
여기서 항목으로 적은 것들 말고도 더 많은 목표가 존재할 것이라고 생각합니다만 일단 이것 들을 가지고 이야기 해보도록 하겠습니다. 만약 과거로 돌아가서 면접을 다시 본다 가정하고 이 중에서 하나의 항목에 대해서 답변을 했다고 해도 미래는 바뀌지는 않았을 것입니다. (과학적으로 불가능하다 그런 이야기를 떠나서 말입니다)
아직은 어떻게(How)
에 대한 추가적인 방법에 대해서 설정하지 않았기 때문일 것입니다. 지식 공유
활동을 하는 것을 목표로 잡고 있다고 해도 무언가 일어나는게 아니며 아직은 어떻게 할 지가 정해진 상태는 아닙니다.
조금 더 살을 붙여보자면 특정 기간
에 몇 개가 될 수도 있을 것이고 일정 기간 마다
글을 작성해서 지식 공유 활동을 한다로 정리해볼 수 있을 것 같습니다. 여기서 확장하여 작성한 글을 통해 회사
나 동호회
에서 특정 주기마다 발표를 하겠다 등으로 점진적
으로 확장해 나갈 수 있을 겁니다.
인간으로써의 목표
조금 더 큰 분류로 넘어왔다고 생각이 드네요 앞서 설명한 개발자로써의 목표와 현재의 인간으로써의 목표가 겹칠수 도 있을 것 같습니다.
여러 항목이 존재할 것 이라고 생각하는데 이것도 한 번 정리해보도록 하겠습니다
경제적인 자유
를 획득하는 것- 끊임 없는 자기 계발과 학습을 통한
자아 실현
- 대외 활동을 통한 여러 사람과의 사회적인
관계 형성
여기서도 개발자로써의 목표를 설정했던 방식과 동일하게 어떻게
할 것인지에 대한 세부적인 사항을 선정해야 할 것입니다. 조금 차이가 있다면 인간
으로써의 목표는 개발자
로써의 목표보다 조금 더 볼륨이 클 확률이 높다는 것 입니다.
간단한 예시를 들어본다면 만약에 경제적인 자유
를 얻는 것을 목표로 잡는다고 하고 10억
을 모으기 라고 한다면 세부적인 목표를 설정한다고 하여도 상당히 장기전으로 갈 것이며 성공하지 못할 확률도 높을 것 입니다.
게임으로 비교해보자면 게임 클리어에 10~20년 혹은 그 이상 걸리는 게임이 존재한다면 어떨 것 같으신가요? 아무리 재밌는 일이라도 언젠가는 흥미를 잃게 되는 순간도 올 것입니다.
목표를 설정하되 하나의 목표에 너무 얽매이는 일이 발생하면 안 될 것이라는 이야기입니다. 결국에는 도착지에 도착하는 시간만 다를 뿐
꼭 주어진 길로만 가야할 이유는 없습니다. 오히려 반대로 샛길이 지름길
이여서 더 빨리 도착할 수 도 있다고 생각합니다.
목표는 중요하지만 목표를 부가적인 도구라고 생각하고 너무 얽매이면 반대로 독이 된다
결과에 대한 검사
목표를 정해서 실행 했다면 이 목표로 인해 산출된 결과(Result)
가 존재할 것 입니다. 결과에 대한 검사는 부족한 점을 보완하기 위한 필수적인 작업이라고 생각 합니다.
만약에 기술역량 향상을 목표로 삼았다면 언어
일 수도 있을 것이며 프레임 워크
나 개발 도구
등에 대한 숙련도가 올라갔을 것이며 큰 차이는 보이지 않을 수 있지만 코드 가독성
이나 유지 보수성
향상이 일어 났을 것 입니다.
협업 능력 향상이 목표 였다면 팀과의 원활한 소통이 일어난다거나 자잘하게 발생하는 이슈의 빈도가 적어졌다 등의 여러 결과가 일어날 수 있을 겁니다.
물론 유의미한 결과를 못 낸 경우도 존재할 겁니다. 새로운 기술을 습득 했지만 기술 습득 기간을 짧게 잡아서 심도 있는 지식을 얻지 못했 다는 경우도 존재할 겁니다.
이런 식으로 결과를 나열해 보면서 얻은 점
과 부족해서 보완할 점
을 나열하면 다음에 있을 목표 선정 때 좀 더 확실한 목표를 잡고 결과에 도달할 수 있을 거라고 생각합니다.
끝 마치며
벌써 한 해의 끝을 향해 달려가고 있네요 저는 이번 한 해 엄청 정신 없이 보내서 시간 가는 줄 몰랐네요 좋은 일도 많았고 반대로 아쉬운 일도 여러 번 있었지만 그래도 결과적으로는 즐거운 한 해를 보낸 것 같습니다. 크리스마스를 차갑게 보내는 것만 빼면 말입니다 🥶🥶🥶
몇 주 뒤인 다음 해에는 작년에 대한 회고록을 작성해 보면서 이야기를 정리하고 나아가서 새로운 새해 목표를 한 번 선정해봐야 겠습니다.
긴 글 읽어주신 것에 대해서 감사의 말씀 전달드리며, 다음에는 조금 더 좋은 글 보여드릴 수 있도록 노력하겠습니다.
감사합니다.