2023.06.16 개인 회고
비즈니스까지 생각하는 개발자가 되는건 쉽지 않다.
즉, 회사라는 이익 집단에는 그냥 프로그래밍만 잘 하는 사람보다는 프로그래밍을 이용해서 유저를 만족시킬 수 있고, 이에 따라오는 매출을 만들어 낼 수 있는 사람이 필요하다는 것이다.
… 중략
즉, 개발자는 단지 프로그래밍을 하는 사람이 아니라 자신이 소속된 조직의 제품이 시장에서 성공하기 위해 달리는 많은 팀원들 중 하나라고 말할 수 있으며, 그렇기 때문에 개발자는 프로그래밍에만 집중하는 것이 아니라 전체적인 조직의 비즈니스 이슈들도 함께 볼 수 있는 넓은 시야를 가져야 한다.
일 잘 하는 개발자는 왜 비즈니스까지 신경쓸까? (opens in a new tab) by Evan moon
이제껏 규모가 작은 스타트업(이전 회사는 인원은 많아도 굴러가는 모양새는 소규모 스타트업이나 다름없었다)에서 일을 하다 보니 스타트업에서 일한다는 것은 비즈니스까지 생각할 줄 알아야 한다는 것을 자주 느끼게 된다. 어찌 보면 당연한 이야기지만 회사의 임원급이 아닌 이상 이런 이야기는 스스로 떠올리긴 해도 마인드 자체를 장착하기는 생각보다 쉽지 않다.
쉽지 않지만, 스타트업에서는 정말 필요한 마인드 셋이라고 생각한다. 이런 마인드를 갖고 개발하고 회의를 참여해야 조금이라도 회사의 서비스를 이용하는 사용자를 고려하고 더 좋은 경험을 선사하기 위해 노력하지 이런 마인드 셋이 없다면 기능 개발만 완료하고 ‘나는 기능 개발했으니까 끝’이라고 생각하지 않을까?
(끝이긴 한데 내가 말하고자 하는 건 더 좋은 방향이 보여도 그것을 꺼내냐 아니면 보고 지나치냐는 것이다)
나는 내가 다니는 회사에 대한 주인의식을 가지고 있는가? 회사는 아니어도 내가 담당한 부분에 대한 오너십을 가지고 있는가?
더군다나 좋지 않은 설계를 개선하지 않고 그 위에 기능을 계속 붙힌다면 결국 좋지 않은 설계만 늘어날 수 밖에 없다. 개발은 매 기능을 만들 때마다 다 지우고 새로 시작하는 것이 아니라 이전에 만들어놓은 설계에 계속 이어 붙히는 것이기 때문이다.
일 잘 하는 개발자는 왜 비즈니스까지 신경쓸까? (opens in a new tab) by Evan moon
요즘 레거시 코드를 보면서 자주 하는 생각이다. 이미 유지보수가 힘들게 코드가 짜여 있지만 이를 갈아엎을 순 없다. 유지보수가 힘든 것이지 이미 돌아가고 있는 기능이고 새로 시작한다고 내가 짠 코드는 그 코드보다 낫다고 확실하게 말할 수 있을까? 비슷하면서 다른 유지보수가 힘든 코드를 만들어 낼 수도 있다.
그리고 이 착한 주인공과 다르게 유저들은 “왜 이래?”라는 생각을 하는 순간 더 이상 기다려주지 않으며, 개발자가 열심히 설계한 제품의 퀄리티를 보면서 감탄하지도 않는다. 유저들은 뭔가 이상하다고 생각이 드는 순간 여러분의 제품을 버리고 다른 제품을 사용할 것이기 때문이다.
… 중략
기본적으로 어플리케이션의 튼실한 설계는 당장의 단기적인 이익보다는 장기적인 관점에서의 이익으로 돌아올 가능성이 높기 때문에 내가 설계를 위해 투자하는 이 시간이 미래에 이익으로 돌아오지 못할 가능성이 더 크다면 그냥 설계를 대충 해버리고 일단 빠르게 기능을 만들어서 배포하는 것이 더 나을수도 있기 때문이다. 비즈니스는 항상 Cost vs Benefit이다.
일 잘 하는 개발자는 왜 비즈니스까지 신경쓸까? (opens in a new tab) by Evan moon
서비스를 이용하는 사용자는 까다롭다. 원래 되던 기능이 안 되면 기능이 고쳐질 때까지 기다릴 수도 있겠지만 동일한 서비스를 제공하는 다른 제품을 사용하러 떠나버릴지도 모른다.
레거시 코드가 답답하다고 기존 코드에 기능을 붙이는 것이 아니라 모든 것을 뜯어고치려고 하는 것은 회사를 운영하는 입장에선 받아들이기 힘든 결정일 수 있다.
비즈니스는 항상 Cost vs Benefit이다.
하지만 개발자로 일을 시작한 지 얼마 안 된 분들의 경우에는 넘치는 열정이 어플리케이션의 구조 개선이나 새롭고 효율적인 기술의 도입 같은 프로그래밍과 관련된 일에만 쏠리는 경우가 왕왕 있다. 사실 필자도 처음 개발자로 일을 시작했을 때 이런 비즈니스 적인 요소들을 전혀 고민하지 않고 레거시를 전부 리팩토링 해야한다고 이야기했다가 조금 더 시야를 넓게 가지라는 피드백을 받기도 했었다. (부끄럽지만 당시에는 그 분이 꼰대라고 생각했다…)
물론 필자도 개발자이기 때문에 변경에 열린 구조, 관심사가 명확한 모듈들, 사이드 이펙트가 없는 함수 같은 것들에 열광한다. 하지만 어찌 되었든 회사에 고용되어 수많은 이해관계자들과 내 제품을 사용하는 유저와 얽혀있는 몸이기 때문에, 현실적으로 이런 것들을 전혀 고려하지 않고 내가 하고 싶은 것들을 하기는 힘들다.
일 잘 하는 개발자는 왜 비즈니스까지 신경쓸까? (opens in a new tab) by Evan moon
지금도 비즈니스적인 요소들은 고민하지 않고 무언가를 도입하려 하거나 레거시를 뜯어고치고 싶다는 생각은 종종 든다. 하지만 생각만 할 뿐 오히려 팀원분이 그런 식으로 하려고 할 때 요즘은 제지하는 편이다.
제지하는 이유는 여러 가지이긴 한데. 우선 지금 회사에 본인이 하려는 작업에 대해 정확하진 못해도 어느 정도 일정 산출이 가능한 사람은 없다고 생각하기 때문(본인 포함)이고 레거시 코드를 뜯어고쳤을 때 이전보다 나아졌다고 명확하게 말할 수 없다고 생각하기 때문이다(어디서부터 건드려야 할지 감이 안 오는 것도 있다).
내가 하는 건 과연 리팩토링일까?
모양새만 달라졌을 뿐 제3의 개발자가 보기엔 여전히 복잡하고 유지보수하기 힘든 코드일 수도 있지 않을까?
이런 생각이 들 때마다 좋은 멘토 또는 회사 내 사수(시니어급)가 있는 것이 얼마나 중요한지 새삼 느낀다(물론 잘하시는 분이라는 가정하에).
내가 하고 싶은 서비스는 도대체 무엇일까?
이전에 떨어진 면접 중 다음과 같은 질문을 받은 적이 있었다.
“관심있거나 재미있어 하시는 서비스(혹은 도메인)는 무엇인가요?”
당시 나는
“글쎄요. 전 아직 다 재밌다고 느껴서 서비스가 큰 상관은 없는 것 같습니다”
정도로 대답했던 것 같다.
물론 면접장에서 답변으로는 0점이라고 생각한다. 똑같은 질문을 들었을 때 지금이라고 똑 부러지게 대답할 수 있을 것 같진 않지만 .. 아니 지금도 비슷하게 대답할 것 같다. 푸하하
비슷하게 대답할 것 같은 이유는 진짜로 여전히 비슷하게 생각하고 있어서인데 .. 잠깐 다른 이야기로 새보면 짧은 경력 동안 3가지의 서비스를 경험하는 중이다. 하나는 세금 관련, 하나는 블록체인 그리고 지금은 모빌리티
다시 돌아봐도 뭐 하나가 재미없다고 생각해 본 적은 없는 것 같다. 물론 블록체인은 프론트 입장에서 좀 불편함이 너무 많이 느껴져서 근처도 가지 않을 것 같지만 새로운 경험 자체는 재밌었다(메타마스크 .. 디지털 쪼가리에 돈이 어찌 이리 많이 붙는가 .. 아직도 이해는 잘 안된다).
이전에도 의문이 들었던 부분이지만 사람들은 자기가 어떤 서비스를 하고 싶은지 어떻게 그리 명확하게 정하는 걸까 .. 하고 싶다기보다 하나의 도메인 내에서 머무르는 것일까? 그것이 커리어와 같은 부분에서 유리하니까?
내가 하고 싶은 서비스란 것이 있긴 한걸까 .. 아직까지는 프론트엔드라는 분야가 좋고 React라는 도구를 좋아하는 것 같다.