개발자 이야기

개발자의 능력은 생산성 본문

개발이야기

개발자의 능력은 생산성

프란5 2015. 8. 24. 16:13
반응형

점점 개발이 쉬워지고 있다.

모바일 컨텐츠 개발만 봤을때, 10년전에 비해 생산성이 10배는 늘어난 듯하다.

그에 따라 사용자의 기대 수준 또한 오르고 있다.

개발자는 스스로 더 빨리, 잘 만들수 있는 방법을 찾아야 한다.


어떻게 하면 생산성을 높일 수 있을까?


1. 지금은 경험만큼이 중요한 것이 새로운 환경에 적응하는 것이다.


안드로이드나 아이폰 이전에는 경험에 많이 의존했다.

개발 자체의 진입장벽이 높았고, 경험이 많은 사람이 생산성이 월등히 높았다.

하지만, UI/UX를 플랫폼에서 지원하고, 오픈소스가 활성화 되고, 각종 자동화 툴이 나오면서 개발이 쉬워졌다.

이제는 누구나 개발을 시작할 수 있다.


나는 신입사원들이 들어오면, 요즘에는 어떤 툴을 사용하는지 묻곤한다.

개발자는 스케줄에 바빠서 또는 익숙했던 환경을 고수하기 때문에, 새로운 툴을 굳이 찾아가며 사용하지 않는다.

아직도 vi를 쓰는 사람이 있지만, 새로운 툴을 사용해서 손가락 연골을 아낄 필요가 있다.


나는 단순 노가다를 빨리 처리하는 사람을 좋아한다.

개발자라면 누구나 단순작업을 피할수 없다. 

이것을 곧이 곧대로 하는 사람이 있는 반면, 나름 머리를 굴리는 사람도 있다.

Commander어플리케이션 사용여부, 개발툴 단축키, 스크립트 사용... 

별거 아니지만, '어떻게 하면 개선할수 있을까?' 라는 생각은 개발자에겐 반드시 필요한 미덕이다.

이클립스를 쓴다면 Block Selection 정도는 써봤어야 하고, 파워포인트를 쓴다면 f4가 뭔지 정도는 알아야한다.



2. 빨리 만들기 보다는 잘 만들어야 한다.


사람들은 빨리 만들면 실력이 있다고 착각한다.

5층 빌딩을 지을 때, 가장 빨리 지어준다는 사람을 찾을것인가?

설계를 어떻게 했는지, 내장재는 어떤것을 썼는지, 절차는 지켰는지.. 

만들고나서 누수가 생기거나, 마감이 떨어지거나, 심지어 무너질수도 있다.


물론, 참고할만한 설계도나 자료를 이용해서 문제없이 지을수도 있다.


그러나, 빌딩은 공장에서 찍어내듯 똑같이 만들수 있겠지만, 누가 똑같은 앱을 만들겠는가?

앱개발은 내부구조를 알수 없을뿐더러 항상 새롭다. 그리고, 자주 기획이 바뀐다.


빌딩 짓는거로 시작했다가, 주상복합으로 바뀌더니, 마지막엔 아파트로 끝나는 경우도 있다.

수도시설 없이 5층을 지어놨더니, 수도 전기시설을 넣어달라고 하면 구멍뚫고 바로될까?

주상복합으로 1,2층은 층고를 높여달라고 하면 그게 가능한가?

소프트웨어 개발도 이거빼거 저거 넣어달라고 바로 되는게 아니다.


그나마, 경험이 많은 개발자는 벌어질 일을 대강 예상하고 대비를 해서 설계를 한다.

이런 이유(처리)로 개발이 더 오래걸리기도 한다.



한번에 끝나는 소프트웨어는 없다.

개발자의 능력은 얼마나 빨리 잘 수정할수 있는지도 포함된다.



3. 문제(예외상황)를 쉽게 찾을 수 있어야한다.


경험이 많은 개발자는 어떤 예외상황에 발생할지 대강안다.

네트웍이 끊겼을때 처리, 화면에 텍스트가 넘쳤을때 처리, 파일을 쓸수없을때의 처리 등등...

그리고, 기획서(요구사항)에 없더라도 미리 얘기를 하거나 알아서 처리를 한다.


하지만, 문제(예외)라는 것은 언제든 발생한다.


예전에는 이것을 어떻게 찾고 해결할지에 대한 비중이 가장 컸다.

그래서, 어떤 책에서는 개발자가 디버깅을 어떻게 하는지에 따라 개발자의 수준을 나누기도 했다.

물론, 지금도 이것은 중요하다.


각종 소프트웨어 개발지식(패턴, MVC모델, 응집도/결합도, ..)을 알고 사용해야되는 이유는 

재사용이나 개발팀간 원활한 커뮤니케이션도 있지만,

문제 발생시 이에 대한 빠른 응대가 가능한 이유도 있다.


요즘에는 툴이나 플랫폼에서 이에 대한 경고를 미리하는경우도 있다.

안드로이드의 경우에, onCreate에서 네트웍을 사용하면 Exception이 발생한다.

onCreate가 끝나야 화면이 나타나는데, 네트웍을 사용해서 응답이 늦으면 그것이 끝날때까지 검은화면이 나타나기 때문에 시스템에서 경고를 하는것이다.



4. 형상관리툴을 사용할줄 알아야한다.


개발은 혼자하는게 아니다.


svn, git과 같은 소스 관리툴은 기본이다.

개발을 하다보면, 다른사람과 협업해서 개발해서 코드를 합칠수도 있다.

이것을 합쳐서 테스트 하느라 버벅거리며 시간을 보낼수도 있다.

과거의 코드로 되돌리거나 참조할때, 언제 무엇을 수정한것인지 쉽게 찾아서 고칠수 있어야한다.

자신의 코드를 잘 관리하는 기술이 필요하다.


confluence와 같은 협업 툴을 사용할수 있어야한다.

각종 리소스나 진행상황을 공유하는 습관을 가져야한다.

메일을 사용해서 히스토리를 찾는 시간을 줄이고,

서로에게 이것저것 질문을 하기보다는 시스템에서 필요한 지식을 찾아가도록하여 일에 집중할 시간을 주어야한다.

또한, 새로운 팀원이 투입되었을때 누군가 가르쳐주는것이 아니라 시스템에서 일을 한눈에 알아 볼수 있도록 해야한다.



------------------------


소프트웨어 개발의 비용은 대부분 인건비이다.

개인의 생산성을 높이는 것, 팀의 생산성을 높이는 것.


그것이 개인이고 기업이고 살수있는 방법이다.

반응형