개발자의 SI, SM 진로 선택
개발자로서 SI, SM 어떤 것인지 알아보았다. 각기 그 나름의 장단점이 있다. 하지만 이런 장단점은 일반적인 것이다. 모든 현장이 다 이렇다고 할 수 없다. 회사에 따라 Case by Case인 경우가 더 많다.
SI, SM 선택도 중요하지만 좋은 환경의 회사를 찾는 것이 중요하다. SI, SM에 대한 일반적인 편견과 내 적성은 SI, SM 중 어떤 것이 맞을지 살펴보도록 하자.
SI와 SM에 대한 단편적인 편견이 있다. 일부는 맞는 수도 있지만, 다 그런 것이 아니다. 이러한 편견은 의사결정에 좋지 않은 영향을 준다. 단순 이분적으로 장단점을 나누지 말고, 다를 수 있는 부분도 있다는 것을 염두에 두어야 한다.
개발자 실력이 늘 수 있는 조건은 무엇일까? 새로운 기술이나 더 어려운 개발 기회를 가질 수 있고, 또 더 실력이 좋은 개발자로부터 도움을 받을 때 실력이 는다. SI개발자라도, 빠듯한 프로젝트 일정이라는 제한에 얽매이다 보면, 개발 품질보다 개발물량 해소에 매달린다. 그래서 옆에서 허접한 초급 코딩을 봐줄 시간이 없다. 오류만 없다면 넘어간다. 이런 현장에서는 코딩 실력을 키우기 어렵다. 현장에서 학습할 여유가 없다면 실력을 키우기 어렵다.
반면 SM개발자라도 주변에 좋은 선임 개발자가 있으면, 하나하나 배울 수 있는 더 좋은 기회를 만들 수 있다. 프로젝트는 일회성이지만, SM은 장기간의 관계를 유지할 수 있어 지속적인 학습이 가능하다.
개발자 실력은 이런 환경적인 요소도 무시 못하지만, 더 중요한 것은 실력을 키우겠다는, 본인 의지가 더 중요하다.
주변에 실력자는 어디에든 있기 마련이다. 찾아가서 배우려고 하면 대부분 마다하지 않는다. 하지만 찾아가는 개발자는, 그렇게 많지 않은 것 같다.
일반적으로는 맞는 말이다. 일정이 있는 프로젝트를 하다 보면 개발 시간이 부족하기 마련이고, 야근으로 시간을 벌충하는 경우가 많다. 그러나 최근 근로시간 규제에 따라 근무 환경이 많이 변했다.(앞으로 또 어떻게 될지 모르겠지만~) 예전보다 야근이 줄은 것은 확실하다. 그러나 오픈 전 최종 테스트와 같은, 업무가 긴박하고 집중이 필요한 시기는, 야근이 불가피한 경우가 많다.
평상적인 유지보수를 하는 SM이라도, 담당하는 시스템이 많으면, 매일 야근하는 경우가 많다. 업무 시간 중고객, 현업 전화로 시달리다가, 업무 끝나고 난 저녁에 쌓여있는 수정 요구 프로그램을 개발해야 한다. 업무시간은 전화응대, 밤에는 프로그램 개발과 같은 식으로, 야근이 자연스레 공식화된다.
프로그램 수정의 양이 많으면 별도 SI프로젝트로 해결해야 하는데, 비용을 절약하기 위해 유지보수 인력 SM을 활용하는 회사도 많은 점, 눈여겨봐야 할 것이다.
개발자로서 출발한 후 경력 관리를 신경 쓰지 않을 수 없다. 다른 직종 보다 개발자는 움직이는 직업이다. 개발자는 과거의 경력으로 능력을 평가받는다. 초급 개발자 시절에는 개발능력으로 평가받지만, 개발 경력이 쌓이다 보면 개발 능력 이외에 다른 능력도 요구된다. 따라서 초급 이후에 어떤 능력을 전략적으로 키워야 할지, 심사숙고할 필요가 있다.
SI개발자는 짧은 기간에 많은 프로젝트를 할 수 있어 많은 경력을 쌓을 수 있다. 반면, SM개발자는 한 업무에 오랫동안 유지 보수를 하기 때문에 경력의 가짓수가 상대적으로 적다. 프로젝트 수에서는 SM개발자가 불리하지만, SM개발자는 도메인 업무에 전문성을 키울 수 있다.
개발자가 경력이 쌓이면, 단순 개발 실력뿐만 아니라 업무에 대한 전문성을 가진 개발자를 더 선호하는 경우도 많다. SM개발은 개발 이외에 업무적인 측면에서 능력을 키우기 위해 관련 공부를 하는 것도 필요하다.(금융 시스템 SM개발자가 개인적으로 금융연수나 금융관련 자격증을 취득하는 경우도 많다.)
SI, SM 직무의 특성을 잘 이해했다. 그러면 어떤 선택을 하는 것이 잘 한 선택일까? 본인이 개발자로서 어떤 길을 가고 싶은가, 또 나는 어떤 성향인가에 따라 선택 기준을 세울 수 있을 것이다.
나름 개인의 특성을 고려해서 유리한 선택 방향을 살펴보자.
먼저 SI직무가 유리한 적성은,
▶ 힘들더라도 다양한 개발 사이트에서 개발 기술을 익히고 싶다.
▶ 프로젝트 전체 과정을 경험하고 싶다.
▶ 한 가지 일을 끝없이 계속하는 것보다 짧은 기간 집중해서 일을 완성하는 것을 좋다.
▶ 보통의 일상적인 휴일보다 야근하더라도 한 번씩 장기간의 휴가를 가는 것이 좋다.
▶ 낯선 환경과 새로운 사람을 만나는 것을 좋아하는 편이다.
▶ 회사 소속 개발자로 보다 자유로운 프리랜서 개발자를 할 생각이다.
반면 SM 직무가 유리한 적성은 다음과 같다.
▶변화무쌍한 업무보다 안정된 테두리에서의 업무가 좋다.
▶개발 기술도 중요하지만 도메인 업무 지식이 더 적성에 맞다.
▶주변 사람들과 안정적이고 원활한 인관관계로 신뢰를 잘 형성할 수 있다.
▶상대방의 불만에 쉽게 흥분하지 않고 차근차근 조리 있게 설명을 잘하는 편이다.
▶일상적인 소소한 부당한 일에 대해 잘 인내하는 편이다.
SI, SM직무 선택 시 고려할 수 있는 개인의 특성들이다.
필자가 생각하는 보편적인 개발자의 진로는 다음과 같이 그릴 수 있다. 한 가지 유념할 것은 처음 SI, SM을 선택했다고 계속 그렇게 해야 된다든지, 또 그럴 수밖에 없다든지 하는 것은 아니다. SI 하다가 SM 할 수 도 있고 또 반대일 수도 있다. 직장이다 보니 마음대로 선택 못 하는 경우도 많다. 개인적인 의견이니 참조만 하기 바란다.
초급이나 신입개발자는 프로젝트를 경험하는 것이 좋다고 생각한다. 프로젝트에서 본인의 역할이 아주 제한 적이겠지만, 시스템이 만들어지는 프로젝트의 전체 과정과 개발자 이외 다양한 직군의 사람들이 하는 일을 보는 것은 중요하다.
힘들더라도 적어도 3~5년 기간을 가지는 것이 좋다고 생각한다. 이 시기에 다양한 프로젝트를 통해 적어도 2가지 개발 언어와 관련 프레임워크 주 무기로 만들어 놓아야 한다. 개발 기술은 짧은 시간(밤을 새워서라도)에 집중적으로 흡수하는 것이 좋다. 처음 어렵지만 기술은 한번 익히고 나면 다음은 쉽게 확장할 수 있다.
초급 이후에 본인의 판단에 따라 SI개발자로 계속 가든지, SM을 하든지 선택할 수 있다. SI개발자로 계속 가면, 중급 개발자로서 좀 더 어려운 비즈니스 로직 중심의 개발자로 성장할 수 있을 것이다. 이후 고급 개발자 레벨이 되면, 개발자 외에도 프로젝트 관리자(PM), SW아키텍트, 또 업무 개발자가 아닌 공통 개발자로 역할을 고도화할 수 있다.
SM개발자는 업무 전문성이 더 깊어지게 되어, 고급 개발자가 된 경우에도 조직 차원에서 의존성이 더 높아지는 경우가 많다. 따라서 그 일을 자의 반 타의 반 떠나기 어려운 경우가 많다. SM개발자가 아니면 도메인 전문가로서 업무 전무가가 필요한 프로젝트에서 업무 설계 역할을 하던지, 컨설팅으로 직무를 전환할 수 있다.
체계적이고 보완된 내용으로 브런치 글과 같은 이름으로 출간을 하게되었습니다. 아래의 링크를 통해 자세한 내용을 확인할 수 있습니다.
교보문고
나에게 맞는 IT 직업 찾기
예스24
나에게 맞는 IT 직업 찾기
알라딘
나에게 맞는 IT 직업 찾기
개인의 진로에는 다양한 변수가 존재한다. 당연하다. 긴 시간을 경력을 쌓다 보면 변수가 없는 것이 이상할 것이다. SI개발자가 되고자 했는데, SM부서로 발령이 나서 처음부터 마음에 안 드는 길로 갈 수 있다. 그러나 본인이 가고자 하는 커리어 패스가 명확하다면, 한번 달라졌다고 실망하지 말자. 대신 본인의 실력을 쌓자.
개발자 실력을 직무 환경에 맡겨 두지 말고 본인의 의지에 문제로 생각하자. 실력을 갖추고 있으면 기회는 오기 마련이다.
지금까지 개발자 직무에 대해 거의 다 살펴본 것 같다. 다음 편에는 IT의 종합예술(?) 프로젝트에 대해 알아볼 것이다.