SI 기업에서 얻을 수 있는 것
SI 기업에는 다양한 장점이 있지만, 개인적으로 "커뮤니케이션 능력 강화"가 가장 큰 장점이지 않나 싶다.
하지만 커뮤니케이션 능력 강화 못지않게 중요하다고 생각하는 장점이 또 있다.
바로 다양한 기술 스팩트럼을 의사와 상관없이 알아가고 경험할 수 있다는 점이다.
프로젝트가 많으니 기획에 따라 필요한 기술 스택이 다를 때도 있고, 같은 기술 스택이어더라도 다른 라이브러리를 사용하고 시도해 볼 수 있다.
덕분에 프론트엔드 영역에 있어 SI 개발은 우리에게 보다 다양한 경험과 폭넓은 지식을 가질 수 있는 기회를 제공해 준다.
하지만 이 말은 다르게 해석될 수 있다.
다양한 경험은 "얕고 넓은 지식"으로 보일 수 있고, 폭넓은 "깊이가 없는 개발자"로 보일 수 있기 때문이다.
프론트엔드 개발자로서의 우려와 내 생각
SI 기업에서 프론트엔드 개발자가 된다는 것은 "반복적인 퍼블리싱으로 인해 퍼블리싱만 할 줄 아는 개발자"로 살아가는 것이 아닐까 하는 의문을 들게 한다. 실제로 이에 대해 동료 개발자 분들이나 다른 지인들로부터 비슷한 말들을 들어봤다.
어느 정도 동의하지만, 글쎄?라고 생각하는 부분도 있다.
분명 SI가 주력 업무인 회사이다 보니 UI를 구성하는 퍼블리싱을 많이 하게 되고, 개발자로서의 커리어에서 발전이 없어 보일 수 있다.
하지만 프론트엔드 개발자와 퍼블리셔의 결정적인 차이가 무엇인가? 바로 동적 UI 설계와 컴포넌트화 등을 통한 코드 경량화, 이미지를 포함한 정적 리소스의 효율적인 관리에 있다고 생각한다. 우리는 효율성에 미쳐있다.
프론트엔드 개발자는 이 부분을 실무를 통해 배워간다.
비슷한 디자인으로 공용 컴포넌트를 사용했다가 optional props가 지나치게 많아져 다른 사람은 사용하지 못하는 경우, 만들다 보니 캡슐화(encapsulation)가 제대로 이루어지지 않아 서비스 로직이 한 곳에 엉켜있어 사이드 이팩트 대응이 어려운 경우 등 우리는 같은 코드를 만들더라고 효율적이지 못한 코드를 만들거나 경험하고 있다.
이런 코드를 보면서 늘 드는 생각이 있다.
"아, 나는 저러지 말아야지."
하지만 쉽지 않다. 어느 순간 그들과 하나 된(?) 나를 발견할 수 있다.
그럼에도 SI에서 일하고 있는 프론트엔드 개발자(나)는 오늘도 더 나은 개발자가 되기 위해 노력하고 있다.
우리가 추구해야 하는 것은 바로...궁극의 효율이 아닐까.
프론트엔드 코드를 효율적으로 관리할 수 있게 구성하고, 문제없이 작동하게 한다는 것은 매우 중요하다. 서비스 출시 후 유지/보수적으로 유리한 것은 물론이고 프로젝트의 수명을 길게 유지할 수 있는 중요한 요소이기 때문이다.
나 자신에게 비추어 보더라도 개발을 처음 배울 때와 현재의 내가 만드는 웹사이트에는 큰 차이가 있다.
겉보기에는 같을 수 있지만, 보다 동적이면서도 자연스러운 UI를 제공하고, 더 적은 라이브러리와 효율성 높은 코드를 통해 쾌적한 앱 환경을 구축해 사용자 경험을 제공하는 웹 사이트는 실제 사용 과정에서 그 차이가 극명하게 드러난다.
"그냥 인부"와 "좋은 인부"
이를 위한 예시로 "건물 인부"가 있지 않을까 싶다.
어떠한 건물을 짓기 위해서는 건물 인부가 반드시 필요하다. 그만큼 건설 현장에는 수요도 많고, 공급도 많다.
하지만 건설 현장에서 "좋은 인부"가 되기 위해서는 몇 가지 조건을 충족해야 할 것이다.
먼저 건설 현장에서 제공된 장비를 능숙하게 다룰 줄 알아야 한다. 장비의 정확한 용도나 사용처를 모른다면 건물을 지을 수 없기 때문이다.
여기에 건설 도면의 "규칙"을 이해하고 있어야 한다. 규칙을 이해함으로써 인부는 현장에서 다치지 않고, 현재 건설 중인 건물에도 어떠한 하자나 문제가 없이 지을 수 있다.
또한 효율적으로 움직일 줄 알아야 한다. 정해진 기한 내에 필요한 자재들과 기술들로 건물을 온전히 짓기 위해서는 빠르게 움직이고 대응할 수 있어야 한다.
마지막으로 어떤 상황에도 대응할 수 있는 능숙함이 있어야 한다. 현장에서 어떠한 일이 일어나더라도 상황에 대응하고 주변 인부들과 능숙하게 소통해 건설 일정에 차질이 없게 준비해야 한다.
현장에는 다양한 인부가 있을 것이다.
특정 기술에 능숙한 인부, 빠르고 효율적으로 움직일 줄 아는 능숙한 인부, 이제 갓 들어와 모든 것이 어설프지만 열심히 일하는 인부 등등.
하지만 결국 "좋은 인부"는 손에 꼽히고, 여러 건설 현장에서 늘 필요로 한다. 세상에는 지어야 할 건물이 너무 많기 때문이다.
물론 난 실제 건설 인부 일을 해보지 않았기 때문에 정확한 사정이나 필요한 능력은 알지 못하지만, 내가 생각하는 "좋은 인부"가 되기 위한 조건은 위와 같다고 생각한다.
인간군상이 담긴 모든 곳이 그러하듯, 개발의 세상도 같다고 생각한다.
우리가 "좋은 인부"가 되어야 하는 이유
그렇다면 좋은 인부가 되는 것에 어떤 장점이 있을까?
쓰임새가 많다는 것은, 쓰일 곳이 많다는 얘기와 같다.
개발자도 결국 직업이다.
삶에서 "나"라는 사람의 개성을 나타내는 정체성 중 하나이자 원동력이기도 하지만, 내가 살아가기 위한 수단이다.
우리는 개발자 "개인"으로서의 경쟁력(역량)도 갖춰야 업계에서 살아남을 수 있을 것이다. 누구든 내 자리를 대체할 수 있다면 내 일자리는 안전하지 못하다. 내 쓰임새가 없다면, 회사에서 대가를 지불할 이유가 없기 때문이다.
자신의 쓸모를 세상에 증명하고, 이를 대가로 내가 원하는 삶을 살아가는 것.
어찌 보면 당연한 일이고, 근본적인 일이다.
결국 내가 말하고 싶은 것은 "SI 기업에서도, 프론트엔드만의 길이 있다고 생각한다."라는 것이다.
그렇다면 그 길이 좁은가?
나는 아직 그 답을 내놓을 만큼 경력이나 능력이 있지도 않다고 생각하고, 이는 사람의 관점마다 다르다고 생각한다.
마치 누군가에게는 "오리"가 보이고, 다른 누군가는 "토끼"가 보이는 것처럼!
다만 개발자는 "좋은 인부"가 되기 위해 끝없이 시대의 흐름에 적응해야 한다고 생각한다. 그렇기에 사람들은, 그리고 우리 개발자들은 개발자라는 직업에 대해 "평생 배워야 하는 직업"이라고 말한다.
개인적으로 이는 매우 즐거운 일이라고 생각한다.
무엇보다도...
"좋은 인부"는 돈도 잘 받는다.
'개발자 일기 > 기록' 카테고리의 다른 글
[글또]개발자 심민섭의 삶의 지도 (10) | 2024.09.22 |
---|---|
[Mac]개발자의 맥북 초기화 전 백업 및 초기 설정 (0) | 2024.05.17 |
간단한 용어 정리 (0) | 2024.03.01 |
11월 개발 일기 (0) | 2023.11.26 |
(근황) Ready to Go (0) | 2023.05.16 |
댓글