brunch

You can make anything
by writing

C.S.Lewis

by 고코더 Feb 18. 2020

SI? SM? 어떤 걸 선택해야 할지 고민입니다.

개발자 청춘 상담실 #1 - 슈퍼루키의 고민


* 책으로 출간되었습니다.

해당 브런치에 남김 글은 초고입니다. 완성된 작품은 해당 "오늘도, 우리는 코딩을 합니다."로 출간하였습니다!! 완성된 글을 종이책의 정감과 편안함으로 읽어보시길 바랍니다^^ 

감사합니다.!!


http://www.yes24.com/Product/Goods/100514084



제 블로그를 구독하시는 20대 자바 개발자


안녕하세요! 시작하는 개발자님!


자신만의 북극성을 찾아라
-팀쿡(애플CEO) -


 봄이 오면 새싹들이 자라나듯 개발자에 봄은 첫 회사와의 인연일 것입니다. 이제 자라나는 어린 새싹들은 사람 발길에 치이지 않을까 동물들이 한입 베어가지 않을까 걱정이 많을 수밖에 없습니다. 아직 작은 시작이니깐요. 첫 회사에 들어가면 고민이 참 많습니다. 저도 그랬고요 이 길이 과연 옳은 방향 인지 한참을 고민합니다. 여유롭게 커피를 한잔 하다가도 길을 걸을 때도 심지어 꿈속에서도 시작의 설렘은 항상 나를 따라다닙니다. 그런 기대하는 마음들이 모여 더 잘할 수 있게 됩니다. 


 고민은 현재 내 상황과 바라는 마음의 이상이 다르기 때문에 일어나는 것입니다. 고민 없는 사람은 아마 없을 것입니다. "오늘 점심은 뭘 먹을까?", "지하철을 탈까? 버스를 탈까?", "if를 사용할까 case를 사용할까?", "회사를 이직할까?", "그 사람과 헤어질까?"" 등 매일 드는 사소한 고민부터 인생을 결정하는 중대한 고민의 생각을 떠안고 살아갑니다. 이렇듯 살아 있기 때문에 갓난아이가 아닌 이상 우린 모두 고민을 하며 살아갑니다. 저도 첫 회사에 취직했을 때 자연스럽데 드는 고민들이 많았습니다. "이 회사를 선택한 게 옳은 선택을 한 걸까?", "닷넷이 전망이 있을까?", "월급 조금 더 주는 데를 찾아볼까?" 그런데 이런 고민에 몰입하다 보면 복잡한 생각에 무력감이 들고 판단이 부정적으로 흘러 나쁜 결과를 상상하고 조바심으로 급박한 해결을 하게 되곤 합니다. 고민에 정복당하지 않기 위해서는 밀려드는 고민을 인정하고 다투지 않도록 하시길 바랍니다. 저는 고민이 나쁜 생각으로 이어질 때 청소를 하거나 운동을 합니다. 혹은 초콜릿을 먹으면서 호흡을 가다듬으면서 현재 내가 하고 있는 생각들을 글쓰기로 정리를 합니다. 하얀 종이장에 마음의 이야기를 모두 타이핑해놓다 보면 문장 끄트머리에 가서는 고민을 해결할 수 있는 정리된 생각이 흘러나오곤 합니다. 개발자님만의 고민을 처리하는 방식을 만들어 언제나 좋은 결과로 연결하시길 바랍니다.


 개발자의 길은 조금 특별하다고 생각합니다. 모든 분야에서 IT는 필수적으로 사용되고 있어서 나아갈 수 있는 길이 다양합니다. 시작하는 개발자에게 진로에 대한 고민은 앞으로 어떻게 좋은 프로그래머로 살아갈지에 대한 중대한 갈림길이기도 합니다. 지금 하는 고민들이 바람에 날아가 하늘로 흐트러지는 것이 아니라 땅에 떨어져 맺을 열매의 양분이 될 것입니다. 선택하는 길이 어디든 잘되실 거라 응원합니다.



SI(System Integration) 시스템 구축


"기업이 필요로 하는 정보시스템에 관한 기획에서부터 개발과 구축, 나아가서는 운영까지의 모든 서비스를 제공하는 일"  -두산백과 - 


 SI를 좀 더 짧게 요약하면 "시스템을 구축하는 업무"라고 정리할 수 있을 거 같습니다. 과거에는 전산시스템을 구축할 때 기업에서는 자체적으로 시스템을 구축했지만 전산시스템이 복잡해지고 전문성이 필요해짐에 따라 시스템의 개발, 기획, 유지보수, 운영 등을 대신해주는 하청과 파견업체가 생겨납니다. 이러한 업무를 하는 회사를 SI기업이라고 말합니다.  SI형태의 기업으로는 'SAMSUNG SDS', 'LG CNS', 'SK C&C'가 대표적입니다. 


- SI 업무는 다음과 같은 단계로 진행됩니다.


1단계 분석 : 고객의 요구 사항 수집하는 단계

2단계 설계 : 개발 가능한 형태로 설계하는 단계

3단계 개발 : 분석, 설계를 통해 정해진 규격으로 프로그램을 구축하는 단계

4단계 테스트 : 완성된 프로그램을 테스트하고 안정화하는 단계

5단계 검수 : 계약대로 결과물이 구축되었는지 확인하고 인증받는 단계


저도 SI 기업에서 2011년부터 2016년까지 약 5년 동안 일해온 경험이 있습니다. 모든 일에는 일장일단 있듯 SI도 나름의 장단점이 있습니다. 이를 개인적인 경험으로 말씀드리겠습니다.


 SI의 기업의 첫 번째 장점은 시스템의 초기단계부터 완료까지 구축하는 경험을 얻을 수 있습니다. 개발자에게는 매우 값진 경험입니다. 처음 코딩용 컴퓨터를 구매할 때 조립하는 방법을 몰라 비싼 값의 완성형 데스크톱을 샀던 경험이 있습니다. 시간이 흘러 업그레이드가 필요해지고 램(RAM)이나 하드디스크(Hard Disk)등을 교체할 때마다. 컴퓨터 수리점에 가서 돈을 들여하고는 했습니다. 하지만 조립형 컴퓨터를 구매하고 직접 조립하고 나서부터는 직접 업그레이드도 할 수 있게 되었고 컴퓨터를 더 잘 알게 되었긴 기억이 납니다. 이처럼 전산 시스템을 뿌리부터 개발한 경험은 매우 값집니다. 개발적으로도 스킬이 많이 향상되지만 프로젝트 기간에 긴박한 상황에서 갈등과 협업 과정을 거치면서 대화 스킬까지 갖출 수 있습니다. 


 두 번째 장점으로는 다양한 분야와 기술을 경험할 수 있습니다. 배움의 기회가 매우 넓습니다. 각 프로젝트마다 산업분야와 프로그래밍 언어가 달라지는 경우가 많아서 제너럴리스트(generalist)로 성장할 수 있습니다. 일명 모든 소프트웨어 스택을 이해하는 개발자를 말하는 '풀 스택 개발자(Full-stack developer)'가 될 수 있습니다. 이는 요즘 기업이 선호하는 개발자 형태입니다. 저도 스킬적으로는 풀 스택을 지향하고 있습니다. 물론 개인 학습으로 충분히 다양한 언어들을 습득할 수 있지만 현업에서 실제 모델로 배우는 방법이 효과적이면서 빠르게 익힐 수 있는 장점이 있습니다. 


 세 번째 장점으로는 취업의 기회가 넓다는 장점이 있습니다. 비전공자이거나 취업시장에서 다소 약자인 경우에도 취직이 생각보다 쉽게 되는 경우가 많습니다. SDS와 같은 대규모 SI기업도 존재하지만 작은 기업이 절대적인 과반수를 차지합니다. 시장 규모가 크고 채용인원이 많기 때문에 프로그래머가 되고 싶은데 아직 갖춰놓은 스펙이 없는 경우 SI기업에서 실력을 쌓는 방법을 택하기도 합니다. 여러 SI기업의 면접을 보고 원하는 분야와 프로그래밍 언어를 선택할 수 있어 원하는 개발을 할 수 있다는 건 장점이라고 말할 있습니다.


SM(System Management) 시스템 운영, 또는 유지보수


"SM은 일반적으로 고객의 정보시스템 기능을 장기 계약하에 지속적으로 관리하고 운영하는 것으로 하드웨어, 소프트웨어, 하드웨어와 컴퓨팅, 비즈니스 애플리케이션, 네트워크, 인프라 등을 개발·운용·유지 보수하고 이를 향상하는 서비스를 말한다." - 한경 경제용어사전-


 SM 이란 단어를 짧게 요약하면 "시스템을 운영하는 업무"라고 정리할 수 있습니다. 시스템을 관리하는 관리자로 운영에 초점이 맞춰져 있는 업무를 말합니다. 시스템의 운영에 대한 전반적인 업무를 담당합니다. 회사 시스템이 문제없이 작동되도록 유지하는 업무를 말합니다. SM을 담당하면 대상 시스템을 오랫동안 담당하게 됩니다. 기업에서 자체적인 전산팀에 취직한다면 SM 업무를 맡게 됩니다. 


SM은 다음과 같은 업무를 진행합니다.


1. 오류 수정 - 시스템 오류를 수정

2. 기능 개선 - 기능을 수정하거나 불편요소를 개선

3. 기능 추가 - 필요한 기능을 추가 개발

4. 데이터 제공 - 요구하는 데이터를 데이터베이스에서 추출

5. 시스템 안정화 - 시스템 운영을 위한 안전화


 SI기업에 5년을 제외하고는 여행, 방송, 도서 미디어 분야에서 SM 업무를 담당하였습니다. 현재는 도서분야에서 담당자로 일하고 있습니다. 개인적인 경험으로 해당 업무의 장단점을 말씀드리겠습니다. 

 

 SM 업무의 첫 번째 장점은 하나의 시스템을 깊게 경험할 수 있습니다. 시스템 운영 인력이 상주하는 곳은 큰 시스템일 경우가 농후합니다. 큰돈을 들여 구축하여 오랫동안 발전시켜온 프로그램은 많은 기술들이 녹아 있습니다. 대형 시스템이 가지고 있는 완성도 높은 프로그램은 생각보다 보고 배울게 많습니다. 만약 하나의 프로그래밍 언어를 깊게 공부했다면 다음 언어도 좀 더 쉽게 학습이 가능한 거처럼 큰 시스템을 분석한다면 또 다른 프로그램을 분석하고 설계하는데 큰 도움이 됩니다.

 

 두 번째 장점으로는 한 분야의 깊은 업무지식을 경험할 수 있습니다. 어떻게 보면 코딩 기술보다 이러한 전문적인 업무지식이 대접받는 경우도 많습니다. 해당 산업분야와 스페셜리스트(Specialist)로 성장할 수 있습니다. 특정 산업분야에 오래 근무하게 되어 전문가 될 수 있습니다. 이렇게 쌓은 경험 차후에 컨설턴트로 활약이 가능하고 강의도 할 수 있습니다.  미래의 알파고보다 코딩을 잘할 수 없는 사람의 한계를 본다면 이런 전문적 지식을 쌓는 것도 나쁘지 않다고 생각합니다. 저는 미디어 분야에서 계속 일해왔고 현재는 도서와 관련된 IT시스템 전문가가 되기 위한 목표가 있습니다. 자신이 관심 있는 분야에서 일한다면 좀 더 재밌게 일할 수 있는 특징이 있습니다.

 

 세 번째 장점으로는 워라벨이 좋은 경우가 많습니다. 물론 회사마다 다를 수 있습니다. SI가 워라벨이 나쁘다는 건 아니지만 SM 업무가 비교적 SI기업의 비해 근무강도가 낮은 경우가 많습니다. 대기업에서 SM 업무를 맡게 된다면 신규 프로젝트도 SI기업을 통해 진행하기 때문에 비교적 부담이 적은 편에 속합니다. 



SI는 개발자의 무덤?, SM은 실력 없는 개발자? 


 SI를 개발자의 무덤이라고 표현하는 경우가 간혹 있습니다. 합숙까지 이어지는 잦은 야근과 을의 위치에서 당하는 갑질 등으로 2~3년 안에 그만두고 이직하게 된다는 말에서 나온 표현입니다. SM은 코딩보다 문서작업과 사내정치에 신경 써야 하는 분위기 때문에 개발실력이 초급 수준으로 낮다고 표현합니다. 두 업무를 경험해본 입장에서 인정할 수 없는 표현들입니다. 우선 회사, 부서, 팀마다 가지고 있는 분위기는 다릅니다. SI라고 하지만 워라벨이 좋은 근속 높은 곳도 존재하고 SM이라고 해도 개발실력이 뛰어난 회사도 많습니다. 이분법적으로 나누기에는 무리가 있다고 생각합니다. 


 시스템 운영으로 회사를 간다고 해도 신규 개발이 없는 것은 아닙니다. 업무에서 필요한 부분을 따로 시스템을 조직하여 신규 기준 운영 개발자로 프로젝트를 진행하기도 합니다. 시스템 구축으로 프로젝트에 들어간다고 해도 완료 이후에는 유지보수를 위한 운영 업무를 맡게 될 수도 있습니다. 고급 개발자가 만들어 놓은 노하우를 분석하며 하나씩 고쳐보는 것과 좋은 개발자들과 협업으로 현장에서 배울 수 있는 두 방법 그 어느 것도 배움의 자세만 유지된다면 나쁠 게 없어 보입니다. 



어떤 개발자가 될지 고민부터


 이제 막 시작하는 개발자들에게는 어떤 언어로 회사를 선택해야 할지, 어떤 분야에서 일해야 하는지에 대한 진지한 고민이 필요하다고 생각합니다. 저는 미디어 온라인 콘텐츠 분야에서 일을 해왔습니다. 언어와 상관없이 회사의 방향과 업무가 마음에 들면 회사에 입사했습니다.  그래서 전 원하는 회사와 분야에서 일하기 위해 풀스택을 지향한다고 말합니다. 친한 동료 개발자는 자바 전문 기술자가 되기 위한 목표를 잡고 달려왔습니다. 저와 반대로 분야와 상관없이 자바 기술력 좋은 회사라면 업무와 상관없이 입사하곤 했습니다. 두 사람 모두 각자의 환경에서 성장하고 있고 다른 방식으로 성공을 향해 가고 있습니다. 


 저는 개발자님이 지금 당장 해야 하는 건 현재 회사에서 인정받는 개발자가 돼야 합니다. 그러고 나서 분야 전문가가 돼야 할지 언어 전문가가 돼야 할지 고민을 해야 한다고 생각합니다. 물론 지금 당장 선택은 무리입니다. 아직 코딩에 코짜도 모르니 지금 당장 주어진 업무를 하다 보면 저절로 떠오르고 내 성향을 알아가는 단계가 될 것입니다.


 그리고 현업에서 배우는 것만으로 학습은 충분하지 않습니다. 아무리 좋은 선임을 만나고 고급 기술을 가진 회사를 만났다고 해도 개인 흑습은 필수입니다. 회사에서 사용하는 기술이 전부가 아닙니다. 그리고 만약 수준 낮은 업무를 한다고 할지라도 내가 운영중인 시스템에서 보태져야 할 부분을이 무엇인지 고민하면서 연구하고 개발해본다면 또 다른 장점일 수 있습니다. 


조금 천천히


 주변에서 들려오는 충고는 원래 내 문제보다 더 크게 들려옵니다. 아직은 신입 개발자입니다. 여유가 있습니다. 입사한 회사에서 최선을 다해 맡은 임무를 수행하면서 고민해보세요. 그럼 보이지 않던 시야들이 개발자님을 한 발자국씩 안내할 것입니다. 그렇게 나아가다 보면 하고 싶은 개발들이 저절로 떠오를거라 생각합니다. 





작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari