갑자기 이런 생각이 들었다.
좋은 코드를 작성하지 못하는 엔지니어는 좋은 코드를 작성하는 팀에서 함께하기 힘들다.
대규모 서비스를 하고 복잡한 도메인을 다루는 회사들은 왜 소프트웨어 장인을 필요로 할까?
간단하게 말하면 왜 잘하는 개발자만 뽑으려고 할까?
물론, 다양한 이유가 있지만 인지부하의 관점으로 생각해보게 되었다.
소프트웨어를 개발하는 과정에서 인지부하를 줄이는 것은 매우 중요하다.
복잡한 도메인 문제를 해결할 때의 개발자는 도메인 로직에만 집중할 수 있어야 하는데 다른 곳에서 인지 부하를 겪게 되면 뇌의 작업공간이 부족해져서 정말 필요한 문제를 해결하는 데 어려움을 겪게 된다.
결국 인지 부하를 겪고 있는 상황에서 추가적으로 문제를 해결하기 위해서는 많은 비용이 들 수 밖에 없다.
회사에서 동료들은 팀 컨벤션, 사내 라이브러리, 코드 리뷰, 페어 프로그래밍등의 활동을 통해 동료들간의 컨텍스트를 맞추고 코드 퀄리티를 유지하며 프로덕트를 개발하게 된다. 이렇게 회사 개발팀만의 스타일이 굳어진 상황에서 전혀 다른 스타일의 코드를 받아들이게 되면 그 자체가 비용이 된다. 그리고 이 비용은 기존 개발팀에 치명적인 문제를 야기할 수도 있다는 생각이 들었다. 물론 코드 스타일의 차이를 얘기하는 것은 아니고 소프트웨어의 퀄리티를 해치는 나쁜 코드를 말한다. 복잡한 도메인 문제가 계속해서 생기는 상황에서, 또 빠르게 개발해야 하는 스타트업에서 지속적으로 성장 가능한 소프트웨어를 개발하기 위해서는 뛰어난 엔지니어링 역량이 필요하기 때문이다. 그렇기 때문에 회사는 개발자를 채용할 때 정말 깐깐해질 수 밖에 없다. 본인들의 소프트웨어에 나쁜 코드를 넣고 싶은 회사는 없기 때문이다.
개발자로 취업이 정말 어려워진 상황에 우리가 쌓아야 할 역량은 큰 고민할 필요 없이 엔지니어링이라고 생각한다. 회사는 이윤을 추구하는 집단이다. 시간이 지날수록 소프트웨어는 개발에 드는 비용이 커지게 되는데, 이 비용을 줄이지 못하면 소프트웨어는 결국 손댈 수 없는 폭탄이 되버리고 말 것이다. 그리고 회사는 망할지도 모른다. 그러면 회사는 당연히 뛰어난 엔지니어링 역량을 가진 개발자를 뽑아서 소프트웨어를 개발해야 하지 않을까?
개발자가 어떤 회사에 채용되지 못했다는 것은 다양한 이유가 있을 수 있지만 결국엔 회사가 원하는 것을 개발자가 제공할 수 없기 때문이다. 그렇다면 회사가 원하는 것이 무엇인지 어떻게 알 수 있을까? 물론 회사마다 fit이 다르기 때문에 다양한 요소가 있겠지만 엔지니어링 역량은 모든 회사에서 개발자에게 원하는 역량이라고 확신한다. 우리는 확실한 것에 투자를 하면 된다. 엔지니어링 역량을 매일 길러야한다. 엔지니어링 역량을 충족시키고 그 외의 조건들이 맞는 회사를 찾아가면 된다.
'그냥 드는 생각' 카테고리의 다른 글
2022.07.05 ~ 2023.06.05 (1) | 2023.06.05 |
---|