본문 바로가기
일상/리뷰&후기

[생계형 개발자 SI에서 살아남기] 정리 및 리뷰

by GangDev 2024. 3. 22.

SI란?

System Integration의 약자. 시스템 개발을 뜻한다. 어떤 사이트나 프로그램이 필요한 사람에게 돈을 받고 제품을 만들어주는 사업이 SI 사업이다.

SI에서 애자일은 안 되고 워터폴은 되는 이유

SI에서는 비용으로 환산되는 시간이 고정되어 있기 때문.

SI에서 성공한 프로젝트란 고객 만족이 아니다. 정해진 시간 내에 기능 목록이 몇% 이상 완성되었는지가 성공의 기준.

기획서 관련

요구사항 변경을 기획서에 반영하고 그 기획서를 바탕으로 수정하기엔 시간이 부족하다. 기획서는 기획서대로 개발은 개발대로 되는대로 진행한다.

데이터베이스 중심 프로그래밍

SI는 대부분 데이터베이스 중심 프로그래밍을 한다.

쿼리가 전부다

모든 비지니스 로직이 데이터베이스에 녹아있는 것을 뜻한다.

이유: 변경사항이 발생했을 때, 만약 비즈니스 로직이 자바 소스 코드에 녹아있다면, 자바 소스코드도 변경해야 한다.

시간은 없는데 수정할 사항이 많다면 야근으로 이어진다. 그러므로 개발자들은 "뭐든지 담을 수 있는 객체"를 활용한다. 대표적인 것이 Map과 List. 쿼리의 변화에 프로그램이 영향을 최소한으로 받는 형태로 개발한다.

모든 로직을 데이터베이스 저장 프로시져에 작성한다. 이유는 위와 동일하다.

JPA를 쓰지 않는 이유

JPA를 쓰면 데이터 핸들링을 자바에서 하기 때문에 비지니스 로직이 프로그램에 녹아들어간다. SI 개발 철학과 안 맞다.

SI에서 비지니스는 쿼리에 있어야 한다.

스타트업에서 필요한 기술 스택

스타트업은 대부분 자체 서비스를 만들기 위한 개발을 한다 >> 더 오래갈 수 있는 단단한 코드를 만들려고 한다.

만든 사람이 유지 보수해야 하기 때문에 코드에 업무 도메인이 가능한 한 많이 녹아 있는 형태로 만든다.

>> 스크립트 언어 + 아무거나 DB + 좋은 설계 + 최신 프론트엔드 프레임워크

SI에서 필요한 기술 스택

남이 쓸 프로그램을 만든다 >> 단단히 만들 필요가 없다: 프로그램을 내가 유지 보수하는 게 아니기 때문.

코드에 업무 도메인이 없으므로 SI는 데이터베이스가 모든 것이다.

>> Java(Spring) + 안정성 높은 DB (RDBMS 한정) + 좋은 쿼리 작성 능력 + 안정된 프론트엔드 솔루션

개발 가이드 꼭 참고하기

나중에 중고급 때는 직접 설정할 수 있어야 한다.

확장에 열려 있는 구조로 개발하기

SI에서는 개발은 최소한의 수정만을 필요로 하는 방법을 추구하기 때문.

파일을 가능한 적게 바꾸는 구조를 유지하기 위해선, 특정 값을 담기 위한 클래스(DTO, VO)를 만들어선 안 된다.

Map과 List를 활용하면 굳이 여러 파일을 고칠 필요가 없어진다.

빠른 개발의 단점: 기술적 부채

기술적 부채는 당장 문제는 해결했지만 이를 위해 코드가 복잡해지고 중복이 많이 발생하며 여러 코드 간에 같은 논리가 적용되지 않게 되는 현상을 말한다. 이를 개선하기 위해 끊임없는 리팩토링이 필요하다.

SI 개발 방식: 서버 사이드 렌더링

서버 사이드 렌더링: 서버에서 최종적으로 웹 브라우저에서 보여주게 될 html을 만들어내고 클라이언트에서 표현하는 방식. 서버 렌더링을 하는 이유는 시스템을 확장할 일이 없기 때문.

클라이언트 사이드에서 제어할 경우, 속도 문제, SEO 문제, 보안 문제 등을 고려해야 한다.

SI 특징 : 취업과 이직이 쉽다

SI는 늘 만성 인력부족에 시달린다. 그래서 신입에게 요구하는 수준이 낮다: 도망가지 않을 사람

정부 지원과 단가 마진이 월급을 주고 더불어 회사에도 이익을 안겨주기 때문에 SI 회사는 어떻게든 인력 수를 늘리려고 한다.

회사 종류별 특징

솔루션 회사: 자체 솔루션을 만든다. 급여는 보통 수준. 자체 개발 제품이 판매가 엄청나게 잘 되지 않는 이상 연봉이 올라갈 확률은 낮다.

스타트업: 자체 서비스 제작. 적은 자본으로 시작하기 때문에 투자 받은 것이 아닌 이상 현금 유동성이 떨어진다. 급여를 낮추는 대신 지분으로 옵션을 주는 경우가 많다.

SI: 누군가가 시스템을 만들어달라고 의뢰하면 인건비를 받고 만들어주는 곳. 상품의 가치가 아니라 인건비 기반이기 때문에 성공/실패에 대한 리스크가 현저하게 적다.

연차와 실력은 비례하지 않는다

실력은 경험에 비례하지 시간에 비례하지 않는다. 초급이라는 핑계로 넘어가지 말고 모르는 것은 꾸준히 배워서 메꾸도록 하자.

실력이 경력만큼 못하는 경우

고급이지만 중급 단가를 받고 이제껏 해왔던 것만 계속한다.

분석 설계는 다른 사람이 하는 곳으로 들어간다.

신입이란

신입은 회사에서 짐짝같은 존재. 그렇다고 가만히 있으면 안 된다. 다들 아무것도 못 한다고 인식하고 봐줄 때 조금씩 하는 방법을 배워야 한다.

중급자, 고급자가 되면 코드 하나하나에 책임감을 실어야 한다.

오버스펙으로 일하는 것

SI에서는 못하는 사람보다 잘하는 사람한테 일이 몰린다. SI에서 잘한다는 기준은 빠른 기간 내에 개발을 마친다는 것.

일을 일찍 끝내면 더 많은 일이 몰린다.

스카우트를 제의하거나 높은 연봉인상을 제안하는 이유는 이 사람이 본인의 몸 상태를 생각하지 않고 오버스펙으로 일하기 때문

SI가 재미없다고 느껴지는 이유

스타트업이 리스크를 지고 있는데도 즐거워하는 이유는 자기가 만들고 싶은 제품을 만들기 때문.

SI에서 만드는 프로그램은 개인이 재밌어할 만한 거리가 그다지 없다.

자본주의에서는 더 재미없는 걸 하는 사람에게 더 많은 급부를 제공한다.

SI에서 근무하는 태도 관련

일단 먼저 해보고 질문하기

혼자서 자립하려고 노력하기: 혼자서 뭘 못하는 사람은 사실 남에게 도움받는 걸 당연하게 생각하는 사람

좋은 대우를 받으려면 그에 상당하는 무기를 가져야 한다: 빠른 개발 속도, 업무 파악 능력, 성실함, 문제해결능력

지각하지 않기

막무가내식으로 일을 시킨다면 거부할 줄도 알아야함: SI에서의 업무는 통상 할 수 있는 것보다 조금 더 많이 준다. 열심히 하거나 조금만 늦게까지 일하면 처리할 수 있는 정도.

SI 일자리 고르기

SI 업체 정직원일 경우 대부분 회사가 가라는 곳에 가서 업무한다. 반면 프리랜서들은 직접 프로젝트를 찾아서 한다.

정규직이라고 해도 어느 정도 경력이 쌓이면 작은 신청권이나 거부권이 생기기도 한다.

인터뷰할 때 일하는 환경을 확인한다: 실제로 일하는 곳과 다를 경우 거절한다.

환경에 대해 물어봤을 때 얼버무리면 거절한다.

면접관의 용모도 체크한다. 퀭한 얼굴이면 내가 일했을 때 그렇게 될 가능성이 크다.

화장실을 체크한다. 화장실이 안 좋으면 작업 환경 또한 그러할 확률이 크다.

보도방

보도방이란 "개발 관련 직군 인력 중개 사무소". 실제론 인력만 넣어주고 프로젝트에는 아무 관여도 하지 않는다.

보도방이 욕 먹는 이유: 하청의 재하청. 영세함으로 인한 급여 지급 불확실성

SI는 필요악: 재하청을 금지시켜버리면 보도방 사이에서도 규모에 따라 독과점이 발생할 수 있다.

보도방 걸러내는 법:

IT 노조 사이트 확인. 

인터뷰 결과를 말해주지 않는 곳:  일정에 혼란을 주기 때문.

SI 장점: 돈

기본적으로 페이가 센 편이다. 18년 기준 초급기술자 월평균 약 440만원, 중급 약 490만원, 고급 약 630만원, 특급 약 840만원.

야근 관련

웬만큼 손이 빠르지 않는 이상 온종일 일해도 업무가 보통 남아 있다. 집에 일찍 가면 일이 없는 줄 알고 더 준다.

업무 능력이 뛰어나면 그냥 눈치 보지 말자.

SI 프리랜서는 디지털 노마드가 아니다

SI는 대부분 외부에서 접근 할 수 없는 환경에서 일한다. 일하는 내부망과 외부와 접속되는 외부망이 분리되어 있고 내부망에 접근하려면 인가가 필요하다. 외부망이 막혀 있는 경우도 많다.

 

---

23년 7월 15일 작성된 글입니