2년차 주니어 개발자의 자아성찰기

ashesglow·2020년 2월 8일
0

자아성찰?

自我省察, 내가 나 스스로 나의 내면의 나와의 대화를 통해 내 안에서 답을 얻어내는 것

대기업SI 2년차

스물 다섯.
운이 좋게도, 졸업도 전에 덜컥 목표로 하던 0순위 대기업에 합격해버렸다.
특별한 정량적인 스펙도 없는 지방대 출신에게 대기업이란 꿈의 직장이자 바라만 봐도 좋은 기업이었다.
(그 당시엔 그랬다.. 근데 지금은...같이 개발했던 애들 중에 지금은 내가 연봉 꿀린다..)

당시 정부에서는 '블라인드 채용'에 대한 목소리를 높이고 있었다.
인적성이나 코딩테스트를 통과하고 나서는,
창업, 개발에 대한 열정, 실제 수천만원 받고 일하던 다양한 실무 프로젝트 경험으로 나만의 강점들을 어필할 수 있었다.

블라인드 전형으로 지원한 모든 기업에서는 좋은 결과를 받거나, 진행중이었고,
대기업과 비슷한 연봉을 제시한 IT기업 공채에도 합격했다.
따지면 IT기업이 기본도, 상승도 훠얼씬 더 높긴 했다..
내 인생에서 잘못된 선택이란걸 했다...

그 중에서도 제일 목표로 했던, 연고지와 가까운 대기업을 선택했다.
연고지로 가고 싶다고 희망했고, 그렇게 되었다.

정말 열심히 노력했고,
앞으로의 내 인생은 내가 원하는 대로,
별다른 걱정없이 이곳에서, 나만의 인프라가 갖춰진 내 고향에서 즐겁게 생활할 것 같았다.

대학교 개발동아리 모임

대학시절 난 SW개발 동아리 생활을 했었다.
사실 경영정보학과 주도 개발팀이었는데,
지도교수님(IT전산원장) 강의를 듣다가 해당 팀의 존재를 알게 되었고
교수님과 구성원들의 면접을 거쳐 유일한 컴퓨터공학과 학생으로 들어가게 되었다.
(그래서 경영정보 복수전공을 같이 해버렸다.)

사실 학교 동아리의 개념은 아니고,
학교 지원 받는거 1도 없었고,
우리가 돈벌어서 사무실 임대비 냈었고,
스타트업 CTO분이 멘토로도 계셔서 주말마다 멘토링도 받았고,
나름 체계가 있던 중소기업(좋게 말하면 스타트업)이라고 봐야 하나..
나름 3,4학년에는 2년동안 회장까지 했다..
미팅이나 사업딸때 발표만 하는 바지사장이랍니다..ㅋ
주말 없는 9 to 9~12.. 열정페이..ㅎㅎ 추억이죠

무튼, 아직까지도 정말 좋은 추억이자 인생의 터닝포인트였다고 생각한다.
사무실에서 동거동락 하던 형, 친구들은 모두 서울, 경기권으로 올라가 취직을 했고,
그래서 출장 갈 일이 생길때마다 종종 같이 모이고, 만나게 된다.

자연스럽게 SI, 솔루션, 서비스 등 이런 회사에 대한 이야기들도 많이 듣게 되었고,
이때 처음 똑같은 개발을 하더라도,
다른 특성과 환경에 대해 제대로 깨닫게 되었다.

사실 취업할 당시에만 해도,
SI와 서비스 기업의 차이점에 대해서 솔직히 제대로 몰랐고,
막연히 대기업 이라는 타이틀, 높은 연봉과 좋은 복지.
이런 부분들만 보았던 것 같다.

이때까지만 하더라도, 그런 개발 환경이나 문화가 부럽다. 거기까지만 생각했다.
그래도 난 대규모 시스템을 개발하고 있었고,
만족스러운 환경과 연봉을 받으며 일을 하고 있었기 때문이다.

일정이 이미 지연된 프로젝트에 땜빵으로 들어갔다.
(업무 기반 특성, 규모 작은 그룹사, Only 국내 등 상용 솔루션 안썼고 자체개발 커스텀 ERP) 
진짜...ㅎㅎ 막 개발해놨더라..ㅎㅎ (신규개발인데..?)
너네 개발기간 끝났는데 어쩔꺼냐 나는 잘못도 없이 입사해서 지연된 프로젝트에 뒤늦게 들어가서 
특정 파트에서는 이거 설계 이상하다 이렇게 해야 하지 않냐 하며 외주사 이사님이랑 설계부터 뜯어고쳐서 다시 개발했다..ㅋㅋ 
당연히 이미 지연된 프로젝트에 들어갔으니 주말 풀출근도 했다. 
외주사에서 밥은 계속 다 사주더라.. 우리가 사야 하는거 아님..?
직영 인력이라곤 나 혼자였고, 
당시 내 상위자/평가자는 내가 어떤 업무를 하는지 야근을 하는지, 주말출근 하는지도 몰랐고 
(생각해보면 이 사건 전에, 당시 팀장님과 뭐가 있었던 것 같기도 하다.. 너무 솔직해도 안된다 사회생활은..)
어떤 교육도 없이 갓 뽑은 신입사원이 직영 혼자로 그냥 파트 맡아서 설계부터 개발까지 했다.
직영 사수 한명 없이, 물어볼 사람 한명 없이... 중소SI 인력파견업체냐고...ㅋ
뭐 나야 잡일하는거보다 개발하는게 좋긴 했는데, 
과연 나처럼 그래도 학부때부터 돈 받으면서 개발해본 신입사원이 아니면 개발을 아예 할 수나 있었을까? 
게시판 CRUD나 쳐주면 다행이지 않을까...?
웹 하던 사람한테 갑자기 모바일도 해달라고 하질 않나..(나 갓 입사한 신입사원이라니까..)
설계가 이상해서 외주사 이사랑 같이 회의하면서 설계를 고치질 않나.. 
창업까지 갔던 자산관리 시스템 할때 수없이 전문가 멘토링 받으면서,ERD 설계 해본 경험이 살렸다..
(EX. 고민하고 또 고민하며 몇 번이나 갈아엎었던..) 
이걸 어떤 신입이...
무슨 스타트업 가서 북치고 장구치고 다해버렸네...ㅋ
근데 이미 일정 지연된 프로젝트에 충원으로 들어갔으니, 당연히 적자에 사건사고가 많을테고.. 
내가 아무리 잘하고 여기서 인정받던 말던, 돈이 안되니 뭐 그렇고..
인사상으로 여기 와있는것도 아니었음..ㅋ 뭐 무튼..

다들 2~3년차가 되고, 꾸준히 노력하던 형은 이직을 성공했다.
대기업에다 누구나 아는 커머스 기업이고, 개발 환경, 기술, 문화 모든것이 다 만족스럽다고 했다.
연봉, 복지 등 남부럽지 않은 대우를 받는 걸 보며 진심으로 축하해 주었다.
또, 그런 환경에서 하고 싶은 일들을 하는 형이 부러웠다.

SI에서 SM으로

ERP 개발 후,
안정화 기간에 다른 사이트에 SM으로 투입이 되었다.
동시에 두 회사의 일을 했다.
(오전에는 A그룹사, 오후에는 B그룹사 이렇게..
심지어 인수인계 기간이나, 이슈 상황에는 원격으로 붙는게 아니라 실제 A, B회사 왔다갔다 하기도 했다..)

못해먹겠다고 퇴사한 사람 대응으로 급하게 들어가게 되었는데,
지금까지의 JSP가 아닌 AngularJS로 되어 있는 시스템이라 새롭게 뭔가 해볼 수 있을 것 같아서 좋았다.

  1. 연초 + 합병 이슈로 많은 화면 개선, 신규 개발
    양방향 바인딩부터 아무것도 몰랐는데 구글링 하면서 Angualr에 많이 익숙해졌다.
  2. ng-gird 관련 성능이슈가 많아 페이징 관련 공통 모듈을 만들어 개선
  3. 프로세스에 대한 반영이나, 통계 화면, 쿼리를 개선하면서 성능을 개선
  4. 매 년 가변적 구성되어야 하는 5천줄 통계 쿼리 -> 동적 쿼리활용 3천줄 (기존 하드코딩..)
  5. 정산체계 변경, 타 시스템 연동 통합 정산시스템 구축 등..
View 만 만들고 메뉴에 지정하면 자동으로 그리드 구성되는 게 궁금했는데..
지정한 View 읽어서 칼럼 파싱하고 저장해서 순서 정하는 것
시스템 파트나, 템플릿, 프로젝트 구조 파보면서도 많이 배웠던 것 같다.
이렇게 다 파보고 난 다음에 통합 정산시스템 개발할 때에는 정말 깔끔한 소스가 나오게 되었다.

신규로 내가 정확하게 다 알고, 활용할 것만 다이어트해서 가져오고, 확장성 있게 만들었다. 
정산 기초데이터 특성이 다른 3개 시스템 (연동, 매칭, 정산시) 
각 시스템별이 아닌 전부 기능별 공용으로 사용하는 컨트롤러(angular의 컨트롤러)로 만들었다.

이렇게 개발을 할 때에는 그래도 난 좋은 환경이구나..
개선을 위해 소스 분석을 하고 나면, 분석한 파트부터 시작해서 점차적으로 리팩토링 해 나가고,
시키지 않아도 내가 개선 건들을 찾아서 먼저 개선하고 개발하는게 재미있었다.

제조기업의 IT환경

그런데 이 이후부터 명확한 한계가 보이기 시작했다.

  • 좋은 코드
  • 유지보수가 쉬운 코드
  • 확장성이 좋은 코드
  • 품질이 좋은 코드
  • 테스트 코드

전부 제조기업의 IT 환경에서는 들어보기 힘든 말이다.

이곳에서는 좋은 코드에 대한 기준은 없다. 그걸 판별할 수 있는 사람도 없다.
작동하는 코드만 있을 뿐이다.

테스트 코드의 중요성도 모르고, 이해하려고도 하지 않고, 앞으로도 그럴 것이다.
여기서는 테스트 코드 또한 개발 비용일 뿐이다.
제조 기업의 IT 전산실은 절감해야 할 비용이기 때문이다.

추가로 다른 업무를 맡게 되었다.
어쩔 수 없는 걸 알지만, 레거시 코드들의 유지보수는 진짜 지옥이다..

심지어 특정 모듈 PL/SQL 5만 라인 패키지를 보면, 정말 보기 힘들다.(근데 가장 자주 봐야하는 모듈)
개발은 빨라도 유지보수가 힘든게 PL/SQL..
JAVA 딴에서 로직이 처리되는게 있으면,
조금씩이라도 옮겨나가고 개선해 나갈 텐데 모든 게 전부 DB에 있다. 
이전 맡은 시스템들도 차근 차근 PL/SQL을 걷어 낸 적이 있지만, 이건 거의..

심지어 소스 관리도 안되어 있다는게 심각한 수준이다.
외주를 주고 개발했던 파트들..

CI/CD 환경까진 바라지 않더라도,
배포 할때마다 클래스 파일 백업받아 놓고,
디컴파일 해서 비교하고 배포에만 엄청난 시간을 소모해야 하는 건가..
기존에는 데이터 수정으로 땜빵 때우던 것들이 많아 반영해야 될 게 앞으로도 많을 것 같은데,
배포에만 이렇게 시간을 쏟는게 회의감이 든다.

더 문제는 뭐냐면 뭐가 맞는 소스인지 아직은 나도 모른다는 것이다.
맡은지 얼마 되지 않아 도메인에 대해 완벽히 파악이 되지도 않았고, 업무에 대한 이해도 부족하다.
1. 서버1
2. 서버2
3. SVN 에 있는 소스

소스가 다르다는 가정 하에 뭐가 맞는 소스고, 난 어디서 작업을 해야 하는 것인가.
혼재되어서 작업을 했다고 가정하면.. 더 심각하다.

기존 SM 인력이 아닌 특정 사이드 프로젝트 같은 경우 외주를 준 경우도 많다고 하는데..
검수도 제대로 안된 것 같고, 무엇보다 소스가 없는 경우도 있고(?!), 혼재되어 있다.

그리고 보통 한 화면, 한 기능이라도 컨트롤러, 서비스.. 등 여러 파일이 연관되어 있을 텐데..
앞이 까마득하다..

어찌되었든 어떻게든 한다고 보고.
레거시 프로젝트는 어쩔 수 없는걸 아는데...

문제는 신규 프로젝트 또한 과거의 방식대로 개발한다는 것이다.(전부는 아니지만..)
이유는?
1. 갑사의 비용절감
2. 기존의 개발자들이 PL/SQL 개발자

마찬가지로 마이/엑스플랫폼, 넥사크로..
이게 plsql보다 더 심각한건데 아무도 모름..
한국의 그들만의 리그.. 폐쇠된 자체 스크립트..
이정도 함수조차 없다고..?
ECMA는 개나 주세요..ㅎㅎ
시대를 좀 봐주었으면... 왜 모사는 저렇게 가고 있는지..
어떤 이유인지..
(자바가 프레임워크라고 하는 곳.. 예전에는 스트럿츠 썼더만.. 자바라 하면 스프링인지 스트럿츠인지 어떻게 구별합니까..)
(오픈소스 안된다면서 스프링은? ㅎㅎ)

바로 위만 좀 봐도.. 모사도 차세대 react로 가고 있잖아요..ㅠㅠ
신규는 다 바꾸고 있는데 왜..여긴..ㅠㅠ
react 갖다주면 쓸수있는 사람 없어서 이건 못할듯...
이러니까 현타가 오지..

무튼 이런 이유로 신규 프로젝트 조차도 이런 PL/SQL로 개발되고 있다는 것이다..
(물론 모든 프로젝트가 다 그렇지는 않다.)

PL/SQL이 물론 장점도 있고 단점도 있지만,
정말 명확한 단점 (요즘 피부로 느끼고 있는..)
1. 유지보수

이걸 내가 직접 겪고 있는데 레거시야 그렇다 쳐도,
만약 새로 맡게 되는.. 신규 프로젝트들 또한 저렇다면?
일을 하면서 정말 괴로울 것 같다..

또 이곳의 환경에서 내가 아무리 개발로 공부를 한다고 해도,
개인적인 공부에서만 끝나고 실무에선 적용할 수 없으니 많이 아쉽고,
하는 업무도 앞으로는 개발자로서의 커리어와는 점점 멀어지는 것 같아서 불안하기도 하다.

이게 지방에서의 한계인가 싶기도 하고...

무엇보다 2년이라는 재직기간 동안 기술적으로 성장 자체가 없는 것 같다.

  • 대학시절 3년간 개발해왔던 경험을 바탕으로 개발 업무를 수행한 것.
  • 코드 리뷰 등 개발 문화가 좋은 환경이거나, 코드 리뷰를 요청해볼 사람이 없다.
  • 같이 성장할 수 있는 사람은 더더욱 없다.
  • 늘 똑같은 개발스텍, 환경, 심지어 퇴보하는 PL/SQL, 신규조차 자바7로 개발하는..
    (자바8 부터 지원되는 스트림이 뭔지도 모르는 환경, 1X버전이 나오는데 아직도 7을 쓰는..)
  • 앞으로는 더 기술보단 업무적으로 성장하길 바란다. (개발보단 관리 역량)

개발 프로젝트를 하기도 하고, 대규모 프로젝트의 구조 등 성장은 하기야 했겠지만
좋은 개발 문화나 환경에서 성장한 주니어들에 비해 한참이나 모자란 것 같다..

자아성찰

그래서 내가 하고 싶은 말이 뭔데?

  • 기술적으로 성장할 수 있는 서비스 기업에 가고 싶은거야?
  • 정년 보장/연고지인 회사에서 안정적으로 다니고 싶은 생각이 있는거야?

솔직히 나도 내가 뭘 원하는지 모르겠다.
정말 차라리 회사가 너무나도 별로였으면, 벌써 박차고 나갔을 것 같다.
벌써 미친듯이 공부하며 준비해서 진작에 이직을 했을 수도 있다.

최근 들어서 많은 일들이 있었는데, 아직까진 개발자로써의 성향이 많이 남아 있는 것 같기도 하다.
2가지의 선택지가 있는데..
1. 연고지, 내 인프라 이런 것 다 버리고 생활비 이런거 신경쓰지말고 내가 하고 싶은 일을 하자.
2. 그래도 연고지에서 돈도 모으면서, 평생 집도 한채 못사니, 지방에서 좋은 집 사서 안정적으로 살자.

사실 환경적인 문제가 제일 큰 것 같기도 하고..
서울이 그렇게 집 값이 비싸지 않았으면 진작에 박차고 올라갔을 것 같기도 하다.

하지만 섣부른 선택은 하지 않으려고 한다.
그리고 대안 없이 지르지도 않을 것 같다.

내 스스로 나에게 충분히 물어볼 것이다.

  • 평생동안 지금의 열정처럼 개발 공부를 할 수 있을까?
  • 개발자로 살아가면 40, 50대가 되어서도 살아남을 수 있을까?
  • 내가 정말 인정받을 수 있는 개발자로 성장할 수 있을까? 우물 안의 개구리가 아니었을까?
  • 지금의 회사에서 업무적으로 성장하는 건 어떨까?
  • 개발 공부는 지금처럼 퇴근하고 취미로 하기 때문에 재미있는 게 아닐까?

날 잘 아는 동아리 형,친구들은 한번 도전해 보라고 한다
실력이야 너무 잘 아니까 기회가 되면 사내추천을 해준다고도 한다.

하지만 아직까지 내 결론은 나지 않을 것 같다.
앞으로도 멈추지 않고 꾸준히 공부는 할 것 같다.

정말 좋은 기회가 생겨서 다른 선택을 할지,
이대로 시간이 흐르면서 이런 커리어로는 가고 싶어도 갈 수 없게 될지..

나와의 대화는 하고 있지만,
아직 내 안에서 답은 얻지 못한 것 같다.
결혼도 해야 하잖아..ㅠ

0개의 댓글