소프트웨어 엔지니어가 해야 하는 3가지 고민

먼저 소프트웨어 엔지니어(Software Engineer)라는 말을 이루는 단어를 하나씩 살펴보겠습니다. 우선 "소프트웨어"란 말에 들어 있는 부드럽다(soft)라는 말은 곧 제품이 변하기 쉽다는 이야기입니다. 페이스북은 2004년에 생겼지만, 17년이 지난 지금 이름만 그대로지 같은 제품이라고 하기 어려울 것입니다. 하지만 코카콜라를 생각해보면 수십년간 브랜딩이라는 측면에서 변화는 있어왔지만 제품 자체의 큰 변화는 없었습니다. 여기서 소프트웨어 산업의 특이점이 나옵니다. 소프트웨어는 계속 변할 수 있다는 것. 사업이란 것이 제품을 통해 고객을 만족시키고 이를 통해 수익을 창출해야 합니다. 그런데 그 고객을 만족시킬 수 있는 제품이 계속 변할 수 있다는 것은 변하는 고객의 니즈 또는 더 많은 고객의 니즈를 만족시키도록 제품 자체가 변할 수 있다는 것입니다. 결국 이런 산업에서 얼마나 빠르게 제품을 고객의 니즈에 맞게 변화시킬 수 있는가가 경쟁의 핵심입니다. 두번째로 "엔지니어"를 보면, 다음은 위키피디아 Engineer 페이지에 나와 있는 문장입니다. The work of engineers forms the link between scientific discoveries and their subsequent applications to human and business needs and quality of life. 즉, 엔지니어는 과학적인 발견과, 그것을 사람/사업의 필요에 따라 연결시켜주는 사람이라는 것입니다. 흔히 우리나라에서는 엔지니어를 기술/연구 쪽에만 특화된 전문인으로 보지만, 실제 엔지니어의 정의는 그렇지 않습니다. 엔지니어는 과학자가 아닙니다. 엔지니어는 기술과 사업을 연결시키는 사람이죠. 그래서 회사에 속해 있는 엔지니어라면 어떻게 기술을 활용해서 "사업을 성공시킬 수 있는가"를 고민해야 합니다. 물론 사업에 따라 새로운 기술을 개발한다든가 특허를 낸다든가 등의 활동이 사업의 성과에 굉장히 크리티컬 할 수도 있습니다. 하지만 대부분의 사업에서는 그렇지 않습니다. 이미 대중화된 기술이라 하더라도 이 기술을 자신들의 사업에 어떻게 적용하는가가 엔지니어가 풀어야 할 중요한 숙제입니다. 특히 지금과 같은 클라우드 시대에서는 전문적인 기술이 필요한 영역은 해당 기술에 특화된 클라우드(I/P/SaaS 등) 업체들이 제공합니다. 고객에게 직접 서비스를 제공하는 회사의 인하우스 엔지니어는 이런 외부 클라우드 서비스를 얼마나 잘 이해하고 / 활용할 수 있는가가 경쟁력이 될 것입니다. (반면 클라우드 형태로 서비스를 제공하는 딥테크 기업들에서는 기술/연구 쪽에 더 특화된 엔지니어에 대한 수요가 많을 것입니다.) 이와 연결해서 소프트웨어 엔지니어가 고민해야 할 3가지에 대해 이야기 하고자 합니다.(지금 보니 신뢰성도 연결해서 이야기 했으면 좋았겠다 싶지만 이번엔 스킵!) 1) 확장 가능성 어떻게 제품을 확장과 변화에 쉽게 대응할 수 있게 만들 수 있는가? 이런 것을 아키텍처 라고 합니다. 미래 우리 제품에 어떤 변화가 필요할 지 모릅니다. 따라서 엔지니어는 쉽게 이런 방향으로 제품이 변할 것이다...라고 가정하면 안됩니다. 제품에 생각지 못한 변화가 생길 것이라 생각하고 최대한 유연하게 제품의 아키텍쳐를 설계하는 것에 대해 고민합니다. 2) 생산성 어떻게 높은 코드 퀄리티를 유지하여 생산성을 높일 수 있는가? 협업하는 사람이 많을 수록 커뮤니케이션 코스트도 높아지고, 제품의 복잡도도 커져서 생산성이 떨어질 수 밖에 없습니다. 이런 문제를 해결하기 위해 코드 퀄리티를 높이도록 노력해야 하며, 어떻게 더 나은 협업을 할 수 있을지 고민합니다. 3) 고객 가치 제안 어떻게 제품에 필요한 중요한 아이디어를 낼 수 있는가? 엔지니어가 기술에 대해서 낼 수 있는 아이디어는 또 크게 2가지를 생각할 수 있습니다. 이미 정해진 아이디어가 있을 때 같은 효과를 내면서 더 싸게 만드는 것. 모든 엔지니어는 이 영역까지는 커버를 해야 합니다. 여기서 중요한건 단순히 “같은 기능을 더 싸게” 만드는 방법이 아니라, “같은 효과를 내면서 더 싸게” 만드는 방법이란 것입니다. 즉, 단순히 구현만 고민하는 것이 아니라 아이디어 자체의 변형을 고민해야 합니다. 이를 잘하기 위해서는 아이디어가 사용자와 사업에 미치는 영향을 잘 파악할 수 있어야 합니다. 사업에 성과를 가져다 줄 새로운 아이디어를 내는 것. 기술에 대한 얕은 지식으로 생각해낼 수 있는 아이디어에는 한계가 있습니다. 기술을 알아야 그 기술을 활용해서 할 수 있는게 무엇인가 생각할 수 있습니다. 엔지니어가 이런 지식을 활용해서 사업에 큰 성과를 낼 수 있으면 좋습니다. 이 역할은 엔지니어로서는 “하면 좋은 것”의 영역이면서 잘하기 어려운 영역이지만, 그 임팩트가 매우 크다고 할 수 있습니다.

다음 내용이 궁금하다면?

지금 간편 가입하고 다음 내용을 확인해 보세요!

또는

이미 회원이신가요?

2023년 1월 9일 오전 6:14

 • 

저장 197조회 9,217

댓글 0