유능한 개발자는 IT업계에서 연예인과 같은 존재다. 유능한 개발자에 대한 수요는 끊이지 않기 때문에 다양한 규모의 기업에서 최고의 대우를 받으며 일할 기회를 얻는다. 그러나 이런 유명 연예인급 지위를 얻기까지는 오랜 시간이 걸린다. 기업에서 유능한 개발자로 이름을 알리기 위해서는 이에 걸맞은 수준급 기술과 행동 습관을 숙지하는 것이 좋다.
IT 실업률은 2.6%로 매우 낮은 편이기 때문에 개발 인력을 확보하기 위한 경쟁은 치열하고 기회는 많다. 그러나 최상위 계층으로 올라서기 위해서는 그만한 노력이 뒷받침돼야 한다. 대부분의 IT 직업과 마찬가지로 개발자에게도 효과적인 경력 관리와 기술을 향상하기 위해 집중해야 할 여러 영역이 있다. 이를 위해 경력이 높은 현직 개발자와 채용 담당자에게 개발자의 전문성 신장을 위해 역량을 갖춰야 하는 부분에 대해 조언을 구했다.
1. 최신 기술 동향을 따라 잡기 위해서는 계속 공부해야 한다
끊임없이 변하는 최신 기술 동향에 발맞추기 위해서는 개발자도 ‘발전’해야 한다. 책이나 신문기사, 학원, 개발자 모임, 컨퍼런스, 기업이 제공하는 내부 교육 등을 통한 학습은 모두 개발자의 기술을 신장할 수 있는 좋은 방법들이다.
옴니TI(OmniTI)에서 15년 이상 개발자로 일해온 로버트 트리트는 “소프트웨어 개발 영역은 너무나 빨리 변화하기 때문에 현재 어떤 기술로 작업하든 5년 이내에 그 기술의 여러 측면이 달라지며, 10년 후에는 완전히 사라질 수도 있다"며, “새로운 기능이 추가되거나 실행 방법이 변경되는 새 버전의 소프트웨어를 늘 접해야 한다. 따라서 지금 업무에서 사용하지 않더라도 새로운 기술을 꾸준히 학습할 방법을 찾아야 한다. 사이드 프로젝트(Side Project)와 오픈소스 커뮤니티에 참여하거나 다양한 기술을 사용하는 기업에 입사하는 것도 좋은 방법”이라고 말했다.
2. 문제해결능력
윈터와이먼(WinterWyman)의 정보 기술 검색 부문 수석 부사장 겸 파트너인 트레이시 캐시먼은 “일부 기업은 문제 해결 능력을 대단히 중시해서, 코딩 실무 면접 대신 논리 시험이나 퍼즐 면접을 본다. 이런 기업들은 특정 언어로 코딩하는 능력이 아닌, 창의적인 문제 해결 능력을 높이 산다. 많은 기업이 애플리케이션의 종류에 따라 각기 다른 언어를 사용하므로, 필요한 언어와 도구로 쉽게 전환할 수 있는 사람을 원한다”고 말했다.
3. 의사소통과 대인기술
내성적이고 자신을 드러내지 않는 IT 인력의 시대는 갔다. 상황에 따른 커뮤니케이션 방법을 잘 아는 IT 전문가가 대접받는 시대다. 캐시먼은 “과거 개발직은 대부분 혼자 일했기 때문에, 가끔 직원들과 잡담을 나눌 수 있을 정도면 됐다. 지금은 대부분의 개발직에서 일정 수준 이상의 대인 기술을 요구한다. 특히 애자일(Agile) 방식을 선호하는 개발직에서는 이와 같은 요구 사항이 두드러진다. 가장 극단적인 예는 두 명의 개발자가 적극적으로 협력하며 서로의 작업을 점검하는 짝 프로그래밍(paired programming)”이라고 말했다.
웹 아키텍트인 브라이언 듀너번트는 의사 소통에 대해 “고참 개발자가 되면 일에 싫증을 내거나, 사용자의 버그 보고나 신참 개발자가 제기한 문제를 무시하기 쉽다. 이런 안일한 의식에 빠지지 않도록 스스로를 통제해야 한다. 물론 보고된 문제들이 치명적인 문제로 이어지는 경우는 거의 없지만, 그렇다 해도 부하 개발자를 교육하거나 고객을 도울 기회가 될 수 있다. 게다가 보고 내용이 틀리지 않은 경우도 있는데, 덕분에 문제를 해결하고 새로운 것도 배울 수 있게 된다”고 설명했다.
4. 인맥과 개인 브랜딩
대부분의 사람들은 인맥을 통해 다음 직장을 찾는다. 기술 분야에서는 그 비율이 더욱 높다. 브랜딩의 핵심은 차별화다. 인맥과 브랜딩의 조합은 구조조정, 인원 감축, 외주에 대한 효과적인 방어책이다. 그러나 링크드인에 연결을 추가하는 것이 전부가 아니다. 핵심은 관계를 발전시키는 것이다.
캐시먼은 “좋은 소식은 개발자라면 대부분 인력 시장에서 수요가 높다는 점이고, 나쁜 소식은 인맥 구축을 위해 적극적으로 노력하지 않을 경우 앞에 높인 기회를 놓치기에 십상이라는 것이다. 개발자들의 링크드인 프로필을 보면 거의 작성되지 않은 채 방치된 경우가 많다. 구인업체들의 연락을 받는 것이 귀찮아서일 수도 있지만, 이 경우 링크드인에서 직접 채용에 나서는 채용 담당자들의 눈에도 띄지 않게 된다. 최소한 모임에 참석하고 인맥을 넓혀나가야 한다. 대부분의 채용은 지인 추천이나 사전에 누구에게 어떤 기술이 있는지 아는 경우에 이뤄진다”고 말했다.
트리트는 “전문성 영역에서 자신을 더 드러내고자 하는 개발자에게 가장 좋은 브랜딩 방법은 자신이 익힌 기술과 참여한 프로젝트를 보여주는 기술 블로그를 운영하는 것이다. 이와 같은 개인 브랜딩을 해두면 특정 주제나 기술에 대한 전문가를 찾는 잠재적인 구인자의 눈에 잘 띄게 된다”고 말했다.
5. 코드 문서화와 정돈
서식이 엉망이거나 문서화되지 않은 코드를 붙잡고 문제를 해결하려는 개발자는 별로 없다. 그러나 이런 일은 항상 있게 마련이다. 다른 사람들의 코딩 스타일을 어찌할 도리는 없어도, 자신의 결과물은 항상 깔끔하고 이해가 가능하도록 해야 한다. 트리트는 “이 영역에서 집중해야 할 부분은 새로 프로젝트에 가담한 사람이 빠르게 진도를 따라잡고 개발 프로세스의 많은 부분, 예를 들어 구문 검사, 코드 서식 지정과 같은 지루한 작업을 상당 부분 자동화할 수 있도록 하는 능력이다. 깔끔한 코드와 문서화는 이러한 목표를 달성하는 데 도움이 되지만 그것 자체가 목표가 아닌, 목표를 위한 수단일 뿐임을 명심해야 한다”고 말했다.
앱 개발업체인 텔라힐림 LLC(Tellahilim LLC)의 소유자 조지 리우는 “내 철학은 대부분의 전문 소프트웨어 엔지니어의 철학과 마찬가지로 내 작업의 결과물이 곧 내 얼굴이라는 것이다. 설계가 잘 되었으면서도, 작성도 잘 된 코드는 자신의 직업과 고객에 대한 존중을 드러낸다”고 말했다.
6. 명명기능 마스터하기
명명 규칙에 대한 생각은 개발자마다 다르다. 그러나 어떤 경우든 코드를 읽고 이해하기 쉽게 만들기 위한 전략은 필요하다. 옴니TI의 부사장이자 소프트웨어 개발자, 솔루션 설계자인 레온 페이어는 “명명 규칙의 핵심은 일관성이다. 후임자가 이해할 수 있는, 언어적으로 의미있는 패턴을 선택하면 된다. 실제 패턴은 다양할 수 있다. 특정 명명 규칙을 강제해야 하는 경우는 이전에 규정된 표준을 사용해 프로젝트에 코드를 추가할 때”라고 말했다.
7. 애자일 방식에 친숙해지기
캐시먼은 “애자일은 오늘날 대다수의 개발직에 적용되는 방법론이다. 어떤 팀이 폭포수와 애자일방식을 혼합했다면, 이는 보통 어떠한 형태로든 지속적으로 소프트웨어를 개발하고 배포한다는 뜻이다. 기업은 반복적인 개발에 적응하고, 성과를 낼 수 있는 인재를 원한다”고 말했다.
트리트도 이에 대해 동의하면서도, 한 가지 주의사항을 당부했다. 트리트는 “전통 방식의 소프트웨어 개발 방법론은 지고, 개발을 짧은 시간에 반복하는 방법론으로 옮겨가고 있다. 개발자들이 애자일 방법론을 공부하는 것은 가치가 있지만, 실제 현장에서 이를 적용할 때 종종 다른 방식으로 해석되곤 한다. 여기에는 지속적인 지원과 배포도 포함된다. 유연성과 일반적인 소통은 소프트웨어 개발에서 중요한 부분이므로, 개발자는 이에 대비해야 한다”고 말했다.
8. 모바일 플랫폼에 익숙해지기
IT업계 전문가들은 개발자로 성공하기 위해서는 모바일이 필수 요건이 아니라고 하면서도, 전세계적으로 모바일 시장이 커질수록 모바일 개발자에 대한 수요와 지위도 높아진다고 강조했다.
트리트는 “소프트웨어 개발만으로도 시장성이 충분하다는 이유로 개발자들은 모바일 개발 역량을 기르기보다는 필요한 경력만 쌓고 있을 수 있다. 그렇긴 하지만, 모바일 플랫폼은 빠른 속도로 데스크톱 플랫폼을 대체하고 있기 때문에 개발자는 모바일 플랫폼과 관련된 기술에 친숙해지는 것이 중요하다. 최소한 웹 개발자라면, 반응형 디자인과 모바일 퍼스트(Moile First) 방법론을 공부할 필요가 있다”고 말했다.
캐시먼은 “전세계적으로 모바일의 중요성을 인식하고 있으며, IT업계도 마찬가지다. IT업체는 안드로이드냐 아이패드냐에 따라 고객의 수요에 맞춰 모바일 서비스를 적극 개발하고 있다. 모바일 기술을 활용해보지 않은 개발자는 곧 경쟁력을 잃을 수도 있을 것”이라고 덧붙였다.
9. 프로젝트 관리기술
만약 더 나은 일자리를 찾고자 한다면, 프로젝트 관리 기술은 개발자의 시간과 자원을 투자할 만한 가치가 있다. 트리트는 “항상 개발자에게 프로젝트 관리 기술을 익혀서 프로젝트에 영향력을 미치는 역할을 맡으라고 독려한다. 사실 프로젝트 관리는 개발과 다를 바 없다. 프로젝트 관리 역할이 주어지지 않은 개발자는 자신이 참여하는 프로젝트에 영향력을 끼칠 수 없다. 개발에서 사용하고 있는 몇 가지 방법론을 프로젝트 관리 기술에 적용해보는 것도 좋은 방법이다”고 설명했다.
10. 자바스크립트, CSS, HTML5 기술
중소규모 IT업체에서 근무하는 많은 개발자는 멀티플레이어가 되어 웹과 관련된 작업을 처리할 수 있어야 한다. 물론 웹 관련 기술은 필수는 아니지만, 이 역할을 할 수 있는 개발자를 원하는 채용 담당자를 만나게 될 수도 있다. 캐시먼은 “웹/UI 기술을 갖추고 있으면 만능 기술자가 될 수 있다. 개발자는 멀티플레이어가 되어야 한다. 규모가 큰 팀에는 애플리케이션의 디자인 요소를 담당하는 프론트엔드(Front-end) 개발자가 따로 있을 수 있겠지만, 보통 하드코어(hard-core) 개발자에게 프론트엔드 작업이 부여되는 경우가 많다”고 말했다.