0%

[생각] 개발자의 생산성

오늘은 개발자의 생산성은 어떤 것들이 존재하고, 실제 업무에서는 어떤 것들을 주로 사용하는 지에 대해서 알아 보자

Programmer Copetency Matrix 그게 뭔데?

처음 회사에서 아주 유능한 분을 통해서 알게 된 키워드가 Programmer Competency Matrix (프로그래머 적격성 매트릭스) 입니다.

사람을 채용할 때 어느정도 가늠해 볼 수 있는 지표 정도? 라고 생각하면 될 듯 하다. 레벨0 ~ 레벨3까지 프로그래가 기본적으로 갖춰야할 기본 지식 및 자격 요건에 대해서 표현했다. 처음에 이 표를 봤을 때 아무것도 선뜻 할 수 있는게 없어서 갈 길이 멀구나 생각했다. ㅠㅠ
이 중에서 되게 재미 있었던 부분은 shortcut(단축키)에 얼마나 능숙해서 실제 마우스를 쓰지 않고도 작업이 가능한지 이런 것들을 묻는 여부가 있었다.

당시에는 이게 왜 중요할까? 생각을 했다가 실제 vim을 매우 자유자재로 사용하는 (심지어 인텔리J에서) 모습을 보고 정말 반했던 적이 있었다. 아직까지 현업에서 그 정도의 숙련공은 마주하지 못했다.

그 때 부터 내가 가장 많이 사용하는 툴내에서 context switching이 자주 일어나는 것이 나의 업무 효율성에 매우 방해가 된다고 느꼈다.
slack, mail, 기획서(ppt) 등등… 아무리 모니터가 여러개가 있고 동시에 여러개를 창을 띄워 놓는 다고 하더라도 정작 내가 화면을 보는 것은 한 지점일 뿐이다. 라는 생각을 했다.

그래서 할 수 있는 모든 단축키 들을 배우고 최대한 마우스에 손이 가지 않는 선에서 나름의 단축키를 익혔다.
크롬탭을 이동하거나, 인텔리J에서 자주사용하는 찾기, 화면 분할, 디버깅모드 실행, 터미널 오픈 등등..

개발자에게 필요한 능력 ?

찾기 능력

보통은 어떤 문제가 발생했을 때, 그 문제가 발생한 부분을 slack을 통한 log를 통해서 몇번째 라인인 줄 알아 내는 것으로부터 시작한다.
이 경우가 아니라면, 새로운 기능을 추가해야 할 때 어떤 Controller, 어떤 Service인지 알아내야 하고, 자주 사용하는 메서드가 존재한다면 양껏 활용해야 한다.

영문 타이핑 매우 빠르게, 그리고 깔끔하게 쳐내는 것

보통 간단한 기능을 구현하거나, 기능을 작성할 때, 오타 없이 타이핑을 잘 치는 것도 매우 중요하다고 생각한다. 실제로 별거 아닌 부분이지만 이 부분을 얼마나 깔끔하고 정확하고 빠르게 치느냐에 따라서 결국 작성된 코드가 사람이 읽기 쉬운 코드여야 한다고 생각한다. 왜냐면 빨리 치는 사람들은 그 만큼 리팩토링에서 자유자재로 할 수 있고 틈만나면 이름을 더욱 멋지게(읽기 쉽게) 변경하기 때문에 결국에 읽기 좋은 코드를 만든다고 생각한다.

영어의 기본을 이해하는 사람

보통은 메서드명이 get~ findUser~ 동사 + 명사 형태로 이어지기 때문에 동사의 그 살아있는 감각 까지는 아니더라도, 어색하지 않은 동사 + 명사로 메서드명을 잘 짓는 것이 중요하다. 물론 이런 것들에 대한 노력을 하는 친구도 봤다. 직접 github의 소스를 뒤져서 이 경우에 사람들이 자주 사용하는 메서드를 검색해서 그걸 자기 걸로 만드는 친구를 보았다. 매우 멋졌다. 여러 분이 작성하는 모든 코드는 무조건 단 하나!!!!!!!!!

사람이 읽는다! 그렇기 때문에 읽기 쉬운 코드를 작성하는게 매우 중요하다!

코딩할 시간은 무조건 만들기

보통은 정신없는 스타트업이나 회의가 많은 조직에 들어가면 분위기에 휩쓸려 이것 저것 회의에 참석하고 결과를 만들어 내지 못하는 상황이 생각 보다 발생가능 하다. 적당히 자신이 꼭 필요하다고 느끼는 커뮤니케이션이 아니면 과감하게 거절해야한다. 반드시 자신이 결과를 만들어 내는(코딩하는) 시간을 확보해야 한다. 그 시간을 확보하지 못해서 일정에 차질이 생기는 것 만큼 무책임한 모습도 없을 것이다.

초기 프로젝트 셋업

회사에 들어가면 개발자는 인수인계를 받는 것을 소스코드를 통해서 받게 된다. 전체 서비스 단위로 설명을 듣고, 세부적인 모듈프로세스 중심으로 설명을 듣게 된다. 그리고 바로 코드를 읽어나간다. 무엇보다도 자기 자신이 개발자라면 초기 프로젝트를 구축하는 정도는 알고 있어야 한다. 백엔드/프론트를 떠나서 Monolithic으로 구성되어 있다면 더더욱 java, mvn, npm, tomcat의 기본적인 작동방식은 이해하고 셋팅하는게 중요하다. 누군가 해줄 수 도 있지만, 이럴 때 자기 자신의 블로그에 초기 셋팅과정 기록해 놓으면 얼마나 좋겠는가?

마치며

이 글이 다소 오해의 소지가 있을 듯 합니다. 저도 매우 부족함을 느끼는 개발자의 한 명이고, 스스로 정진하기 위해서 기록을 남깁니다.
훗날의 제가 봤을 때 글 내용의 어느 것 하나라도 전 보다 나아지길 바라며, 아주 짧은 식견으로 글을 썼습니다.
부디 오해 없길 바랍니다. ^^

Welcome to my other publishing channels