비전공자로 10년간 si sm굴러다닌 코더입니다.


많은 어린양들이 "개발이 재밌다"라는 이유로 개발전선에 많이 뛰어들죠.


제가 돌아다니는 si는 생각있는 전공자들이나 전공상관없이 어릴때부터 타고난 친구들은 절대 올일 없는 곳이지만, 

안타깝게도(?) 멋모르고 재밌다는 생각하나로 개발로 돈벌겠다고 오는 불쌍한 어린양들 상당수는 결국 갈곳은 si뿐 이라는 현실을 맞이하게 됩니다..


제 경험에 비춘 si에 대한 이야기를 해보고자 합니다. 사람마다 물론 생각이 다를 수 있을거라 생각합니다.

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

많은 개발 꿈나무들은 다양한 언어를 알아야하고, 상황에 맞는 디자인패턴과 자료구조를 직접 구현하고, uml로 깔끔하게 정리되는 군더더기 없는 객체구조 설계를 꿈꾸지요. 그러면서도 성능까지 갖춘 완벽한 프로그램을 만들거라 생각하며 오늘도 열심히 인터넷 블로그를 뒤지고계실겁니다.


자바와 파이썬과 노드의 벤치마킹을 중요하게 생각하고, 대세 언어가 뭔지, 새로 인기 끌만한 언어가 뭔지 구글링하면서 재미를 느낄겁니다.


훌륭한 사수가 있는 자체 서비스를 지향하는 대형 업체라면 이런것들에 대해 차근차근 길을 밟아갈 "가능성"은 있습니다. 물론 가능성입니다. 


하지만 안타깝게도.. 이걸 꿈꾸는 상당수의 개발꿈나무 여러분들은 우선 그런회사의 서류면접에서 광탈하고, 입사시험에서 좌절한뒤 면접에서 떨어지곤 더러운 스펙 세상 이라고 한탄하게 될겁니다.

그리고 나서 si쪽 페이가 쎄더라 라는 이야기에 혹하고 si로 빠지게 될 분들도 꽤나 많을 겁니다.


저는 애초에 대학졸업도 못한 놈팽이라 나이차고 돈이나 벌자고 취직하기 쉬운 si를 시작했고, 그게 어느새 10년이 훅 지나갔네요. 


Si 개발자로 필요한 스킬이 뭐냐고 물으면 아주 간단하게 


1. 우선 java jsp하실줄 알면 됩니다. 


얼마나 잘해야 하냐? 


그냥 적절한곳에 for if 문 잘 쓸줄알면 됩니다. While문 switch case문 같은거 잘쓰면 좋죠. 근데 보통 와일문 쓴 소스는 다 비슷하더이다. 인터넷 블로그 어딘가에 있는 소스 긁은 경우에나 좀 쓸려나요..


자료구조요? ArrayList, HashMap정도 외엔 라이브러리 까기전엔 다른 자료구조 구경하기도 어려워요.  

si개발자에게 자바가 자체적으로 제공하는 목록형 자료구조 뭐있는지 물어보세요. 인터넷 안보고 어래이리스트말고 다른 자료구조 대답하는사람 몇명이나 될지..


객체지향적 설계..같은건 윗사람이 해주겠지 하는 생각을 3년차쯤 되면 하게 될겁니다. 짬밥딸리면 설계 회의때 같이 들어갈 일도 없어요.


2. 그리고 스프링은 기본적으로 하게 됩니다.

스프링 빈이 뭔지만 알고 오토와이어드로 빈만 잘불러오면 오케이. 

전자정부 프레임워크 따라하면서 컨트롤러로 리퀘스트 매핑만 할줄알면 3-4년 개발할 기본은 다 갖추셨습니다.


3. Orm 프로젝트면 똥밟았구나 하고 보통 생각하게 됩니다. 100에 90은 마이바티스 돌리죠. 오라클이랑 mysql(mariadb)로 목록 페이징 정도 할줄알면 5년차까지도 거뜬합니다.


4. 자바스크립트.. 퍼블리셔가 복잡한건 해줄거고, 그냥 오래된 jquery 2로 셀렉터랑 ajax만 좀 공부하면 ㅇㅋ.

 

겨우 저딴걸로 개발이 되냐? 

하실지도 모르겠는데.. 저딴걸로 안만들면 더 큰일나는 경우 많습니다. 


원인은 다양합니다

1. 개발에 주어진 시간은 늘 부족합니다. 멋진 소스만들려고 소스 설계하고 리펙토링할 시간같은거 안줍니다.

개발자가 얼마나 못하면 야근하냐 하는 소리는 대형 si몇번 뛰어보면 절대 안나옵니다. 

야근.. 내문제가아닌 남탓을 원없이 찾을수 있습니다.


2. 사람마다 실력은 다른데 결국 그 실력차 나는 소스 합쳐서 돌려야합니다. 통일성이라는 이름하에 소스는 하향평준화 되는게 일반적입니다.


3. 내가만든거 내가 서비스하는게 아니라 또 다른 누군가가 내 소스를 갖고 운영을 해야합니다. 내딴에는 멋지고 짧고 간결한 소스지만, 남의 눈에는 이해안가는 소스가 되면 욕처먹습니다.


자바 1.8이 들어온지 이미 몇년이 지났음에도, 람다식으로 리듀스잘걸어서 수십줄될거 몇줄로 줄여서 만들면 그렇게만들면 누가 고치냐고 욕쳐먹는 바닥이죠.


신기술. 새버전. 이런것들은 si와 세상에서 가장 먼이야기라고 생각하시면 마음 편합니다.


그리고 거기에 리눅스 명령어 몇개. Ls -lrt. Tail grep. Find grep. Touch mkdir rm 등 아주 기초 정도만 쓸줄알아도 역시 몇년간 오케이.


여기까지 보고나면 많은 사람들이 생각할겁니다. 허접들 개꿀 땡보네.


실제로 저만큼만 딱 안채로 연차만 채운 개발자들은 허접 개꿀 땡보 인정합니다.


 5-6년차 넘어가면 강제로 설계와 공통단으로 들어가는 일이 생깁니다. 

저 스킬외에 공부를 하지않은 개발자들은 그시기에 보통 나가 떨어지거나 뻔뻔해집니다.

이때부터 갑자기 난이도가 급상승합니다. 내가 만든 공통이나 설계를 갖고 위의 스킬만 가진 개발자들이 개발을 하거든요.. 

그리고 이때부터 개발쪽이 아닌 배포나 형상관리, 서류 작성, 서버 튜닝등 코딩 외적인 부분에 대해 알아야 할 시기가 됩니다. 

하기싫어도 몰라도 연차가 깡패니 스택오버플로우님 믿으면서 할수밖에요.


그러면 개발은 언제해?... 결국 꿈에 그리던 완벽한 프로그램은 저 작업들이 익숙해져서 외워서 하거나 내 클라우드 서버에서 언제든 받을 수 있게 될 시점까지 저멀리로 사라집니다.


이제 익숙해지고.. 그럼 이제 내 꿈을 찾아 개발자가 되어봐야지! 할때쯤이면 애 키우느라 바쁜 시점이 되어버리지요.


완벽한 프로그램대신 손에익은 톰캣이랑 mysql 내 클라우드 서버에 설치한뒤 내가 좋아하는거 홈페이지 깨작 대는 정도나 할려나요?


같은말을 좋게 포장해서 이야기하자면 전반적인 개발 프로세스를 다 알만큼 열심히 공부해야 si가 될수 있다 이런내용인데요. 

사실 아무리 포장해도 적당히 얇고 넓게 알정도면 si에 가장 맞는 스택이다라는건 어쩔수 없을거같습니다.


물론 굉장한 분들도 si에 계십니다. 대형프로젝트 들어가보면 저른분들도 있구나 하는 감탄사가 절로 나오는 분들 계세요.

하지만 연차가 올라갈수록 깨닫죠. 아 난 저사람이랑은 달라.


대신 si에 가장 크게 요구되는 능력은 다른데 있습니다.

바로 "파악"하는 능력입니다.

잘하는 si개발자와 못하는 si개발자를 가르는 

1차요소는 오류 파악능력입니다.

로그보는 능력하나로 개발속도 차이 어마어마하죠.


2차요소는 기존소스 파악 능력입니다.

내가 직접 복잡한걸 만들어내는 일은 정말 드뭅니다.

찾다보면 비슷한소스 있고, 그거 가져다쓰는 경우가 대다수죠. 남의소스 잘보고 잘가져오는능력. 웃기지만 정말 중요합니다..


3차요소는 분위기 파악능력이죠. 개발하는곳 분위기보고 개중 실력있는 개발자랑 빠르게 친해지고 같이 밥먹는 사이 되는거. 이거 은근 큰 능력입니다.


오늘도 불철주야 고생하시는 si 동료분들. 

건강 잘 챙기시고, 부디 코딩은 일로 하지만 개발은 잊지마시고, 저같은 코더가 아닌 개발자가 되시길 바랍니다.


그리고 개발 꿈나무 여러분들! 

여러분들의 미래는 밝습니다. 

개발은 취미로도 언제든 할 수 있어요. 

본인이 싹수 있다고 생각하시면 스펙부터 준비하시고, 아니라면 부디 미래의 직장에 대해서도 깊이 생각하시길 빕니다.


여기까지 다읽으신 근성러들에게 감사드립니다. 태클은 괜찮지만 레드카드 받을만한 태클은 자제부탁드립니다(?). 허접한 글 이만 마칩니다.