SM은 시스템을 운영하거나 유지보수하는 업무입니다.
시스템 모니터링 : 시스템 성능을 실시간으로 모니터링하고, 이상 징후를 조기 탐지합니다.
기능 개발 : 반복적인 작업을 자동화하기 위한 도구를 개발/추가하여 운영 효율성을 높입니다.
시스템 유지보수 : HW/SW의 정기적인 점검 및 업데이트를 통한 시스템 안정성을 유지합니다.
보안 관리 : 시스템의 보안을 강화하고, 보안 사고를 예방합니다.
PM 작업 지원 : PM (Project Management)는 프로젝트 계획/실행/모니터링 등 전반적인 과정입니다. 필요한 경우 이를 지원합니다.
데이터 제공 : 데이터를 DB에서 추출하여 제공합니다.
시스템 안정화 : 시스템의 안정적인 운영을 위해 최적화합니다.
다양한 경험 : SM은 현업 담당자와 소통을 하는 경우가 있기 때문에 커뮤니케이션 능력을 향상할 수 있습니다. 또한, 개발할 때마다 시스템에 대한 깊은 학습이 필요하므로 프로그래밍 언어와 시스템 이해에 대한 경험이 증가합니다.
업무 지식 : 특정 분야에 대해 오래 근무한다면, 이에 대한 전문적인 업무를 많이 쌓을 수 있습니다. 또한, 비슷한 다양한 시스템을 경험하며 다음에도 활용할 수 있는 업무 지식을 얻을 수 있습니다.
워라벨 : SM은 고객사와 업무를 하는 경우가 많아 다른 개발자에 비해 워라벨이 좋은 편이며, SI에 비해 근무 강도가 낮은 편에 속합니다.
개발 경험 : SI에 비해 개발 경험이 적습니다. 이는 개발자로서 커리어 성장에 방해가 될 수 있습니다.
고객사에 따른 유동적 업무 : 고객사의 성격와 성향에 따라 업무의 강도 및 난이도가 달라집니다. 이는 안정적인 업무 환경을 추구하는 개발자로는 부정적일 수 있습니다.
갑작스러운 문제 발생 : 시스템 오류 발생 시 갑작스럽게 업무를 하는 경우가 많아, 불필요한 출퇴근이 필요합니다.
어려운 이직 : 적은 개발 경험에 따른 전문성 부족으로 이직이 어렵습니다.
SI는 시스템을 구축하고 개발하는 기능을 합니다.
문제 분석 : 고객의 요구사항을 분석하여 시스템의 필요한 기능을 분석합니다.
기능 설계 : 개발 가능한 형태로 기능을 설계합니다. 이 때, 시스템 간의 관계를 정의합니다.
기능 테스트 : 완성된 프로그램의 동작 여부를 단위 테스트부터 통합 테스트까지 진행하고 안정화합니다.
기능 검수 : 최종 시스템 배포 전 결과물이 제대로 구축되었는지 확인하고 인증받습니다.
개발 기회가 많다 : SI 개발자는 주로 대형 서비스 혹은 신규 기능 개발이 많습니다. 기존에 없던 것에서 만들어 내는 경험을 통해 프로그램 개발의 모든 부분에 관여할 수 있습니다.
시스템 구축 및 안정화 : 개발 과정의 전 분야에 참여하면서 개발 후 발생할 문제와 영향도 까지 어느정도 파악할 수 있는 전문적 지식을 가지게 됩니다. 또한, 웹에서는 풀 스택 개발자로 성장할 기회가 많습니다.
취업과 이직 : 다양한 학습 경험, 많은 개발 기회로 인해 커리어 상승으로 인한 취업과 이직이 쉽습니다. 이는 경력에 따라 프리랜서로 전환도 가능하며, 개발자로서 성장의 과정을 눈으로 볼 수 있어 동기부여의 측면에서도 좋습니다.
업무 강도 : 잦은 출장과 야근으로 인해 업무 강도가 많습니다.
열악한 근무 환경 : 근무 환경이 SM에 비해 상대적으로 열악할 확률이 높고, PM (Project Manager)의 성향에 따라 업무가 힘들 수도 있습니다.
제한된 지식 : SM에 비해 SI는 업무에 대한 이해도가 얕고, 자신이 하지 않은 부분에 대한 개입이 적어 전체적인 프로젝트에 대해서 잘 알지 못할 수도 있습니다.
SM : 개발 < 협업/지식, 워라벨, 사내 정치
SI : 기술 > 협업/지식, 실력 향상
처럼 대략적으로 나눌 수 있습니다.
사람보다 개발이 좋다면 SI, 개발보다 사람이 좋다면 SM 이렇게 단순하게 나눌 수 있겠지만,
기업마다 케바케이므로 이 부분을 맹신하기보다는 고려만 하시는 것이 좋을 것 같습니다.