경영자는 기술 스택을 어떻게 다뤄야 하는가?
최근에 창업을 준비하는 사람들을 몇 명 만나서 이야기할 기회가 있었습니다. 각자 진출할 사업 분야나 가지고 있는 아이디어는 달랐지만 한 가지 공통적인 고민거리를 가지고 있었습니다. 바로 사업의 기술적인 부분에 있어서 이해도 부족하고 어떤 결정을 내려야 할지도 모르고 있다는 것이었습니다. 그리고 기술에 대해서 조금 위험한 오해를 하는 경우도 있었습니다.
이 글은 제가 그 사람들에게 해준 조언을 정리한 내용을 담고 있으며, 소프트웨어 관련 배경지식이 없는 창업자가 가지고 있는 오해를 푸는 것이 글의 목적입니다.
이 글의 독자에 대해서 두 가지 사항을 가정하고 작성했습니다.
-
일반적인 모바일/웹 어플리케이션을 만들고 있다. 예를 들어 하드웨어와 통합된 임베디드 소프트웨어 같은 다른 분야의 사업을 한다면 일부 내용은 적용될 수 없습니다.
-
기본적인 리서치는 진행해서 이 분야에서 사용하는 용어를 알고는 있으나 깊은 이해는 없는 상황이다. 용어라 함은 HTML, CSS, 자바스크립트, 프론트엔드/백엔드, 네이티브/하이브리드 어플리케이션 등의 용어를 염두에 두고 있습니다. 사업이라는 전체적인 틀 안에서 이러한 지식의 파편을 정리할 수 있도록 도와드리는게 이 글의 목적입니다. 기본적인 지식을 찾아보고 배우는데는 직접 검색하는 것이 가장 좋습니다.
먼저 기술 스택이라는 것이 무엇인지부터 간단히 설명하고 넘어가겠습니다. 사전적 정의는 없지만 일반적으로 소프트웨어를 만들기 위해서 사용되는 프로그래밍 언어와 도구 일체를 의미하기 위해 사용되는 용어입니다. 프로그래밍 언어, 데이터베이스, 개발 프레임워크 등 흔히 “기술적인 것들”이라 부를만한 것을 통칭하는 표현입니다. 마찬가지로 편의상 이 글에서도 기술적인 것들은 전부 기술 스택이라고 묶어 표현하겠습니다.
사업 아이디어가 시장 가치가 있다고 증명된 이후에나 기술 스택에 대해서 고민할 것
사실상 이 글을 쓰게 된 목적이자 가장 치명적인 문제입니다. 목재 책상을 파는게 사업 내용이라면 가장 중요한 것은 잠재 고객이 어떤 책상을 원하는지 파악하는 것입니다. 앉아서 참나무나 물푸레나무 중 어떤 목재가 더 좋을까 고민하지 말고 나가서 고객과 이야기하고 시장을 연구하세요. 필요하면 샘플 제품을 만들어서 테스트해보세요. 어떤 재료를 사용해서 책상을 만들지는 고객이 어떤 책상을 원하는지 파악하고 난 다음에 결정하는 것이 맞습니다.
이는 프로덕트/마켓 핏 조사라고 불리는데, 이 상식적이고 기본적인 사업 원칙은 제품이 소프트웨어일 때도 마찬가지로 적용됩니다. 그러니 성급하게 어떤 기술 스택을 사용할지 고민하지 말고 먼저 프로덕트/마켓 핏을 확인해보세요. 물론 특정 기술 스택을 사용하는 것이 사업의 핵심 경쟁력이라면 이야기가 다르지만 이 글을 읽고 있는 시점에서 이미 그런 사업이 아닐 가능성이 높다고 생각합니다.
중요한 것은 기술 스택이 어떤 특성을 가지고 있는가이다
스타트업이 사용하는 기술 스택은 다음과 같은 특성을 가지고 있어야 한다고 생각합니다.
-
높은 생산성
개발자가 가치 있는 소프트웨어를 빠르게 만들 수 있도록 해줍니다. 유지보수가 쉽도록 하는 것은 여전히 중요하지만 빠르게 최소 기능 제품을 만들 수 있는 것이 더 강조됩니다. -
적절한 신뢰성
일반적인 경우에는 잘 동작할 것이라고 신뢰할 수 있습니다. 커버하지 못하는 예외적 상황이 존재할 수는 있지만 대부분의 일반적인 버그와 보안 문제가 이미 해결되었습니다. -
개발자 고용 가능
필요한 경우 추가적인 혹은 대체 개발자를 고용할 수 있어야 합니다. -
커뮤니티의 도움
전문적인 기술 지원팀이 필요한 것은 아니지만 그래도 해당 언어나 프레임워크에 대한 질문을 대답해줄 수 있는 사람이 존재합니다.
달리 말하자면 최소한의 장애물만 겪으며 최대한 빠르게 제품을 만들 수 있어야 합니다. 2016년 10월 시점에서 스타트업 모바일/웹 어플리케이션 개발에는 네 가지 언어가 가장 인기 있습니다. 프로그래밍 언어/가장 인기 있는 프레임워크 형식으로 정리하면 다음과 같습니다.
- JavaScript/Node.js
- Ruby/Ruby on Rails
- Python/Django
- PHP/Laravel.
이 외에도 많은 언어/프레임워크가 존재하지만 스타트업은 보통 이 네 가지 중 하나를 사용합니다. 다른 기술 스택도 좋지만 스타트업에게는 덜 적합한데, 생산성이 낮거나 (예: C#/.NET, Java/Spring), 너무 최근에 나왔거나 (예: Elixir/Phoenix, Swift/Vapor), 너무 특이하거나 (예: Haskell/Yesod) 하는 이유 때문입니다.
이 시점에서 아마 이런 질문을 하고 계실 겁니다. 그러면 넷 중에서는 뭐가 가장 좋을까요? 엄밀히 따지면 무엇을 하고자 하는지에 따라 다릅니다. 각자 장점과 단점이 존재하거든요. 실질적으로는 무엇을 고르든 상관 없습니다. 일반적인 모바일/웹 어플리케이션에서 필요로 하는 기능은 전부 문제 없이 구현해 낼 수 있기 때문입니다.
위의 네 가지 모두 안정적인 선택입니다. 아니면 다른 기술 스택을 골라도 됩니다. 중요한 것은 그 기술 스택의 특성이기 때문에 앞서 말한 특성만 충족시킬 수 있다면 무엇을 선택하든 상관없습니다. 구체적인 사항은 CTO를 믿고 위임하면 됩니다.
그리고 사업이 커졌을 때 특정 기술 스택이 스케일링이 될 지 걱정하는 분들이 있어서 언급하겠습니다. 만약 아직 시제품을 만들어서 시장 반응을 확인해보지도 않은 어떤 예비 창업자가 와서 차후에 글로벌 경영을 할 때 제품 생산 수요를 감당할 수 있는 생산 시설을 갖출 수 있을 지 걱정된다고 말하면 어떻게 들릴 것 같나요? 지금 시점에서 소프트웨어가 스케일링할 수 있을지 여부를 고민하는 것은 이와 마찬가지입니다. 스케일링은 나중에 필요할 때 고민하고, 지금은 프로덕트/마켓 핏을 찾고 매출을 내는 것에 더 집중하세요.
기술 스택은 사업의 다른 분야에도 영향을 미칩니다
글의 앞부분에서는 기술 스택은 사업의 여러 요소 중 하나일 뿐이며 구체적으로 어떻게 구현이 되어있는지는 경영자에게 있어 크게 중요하지 않다고 계속해서 강조했습니다. 경영자의 역할은 큰 그림을 그리는 것이니까요. 하지만 개발자에게 있어서 기술 스택은 조금 과장해서 목숨만큼 중요합니다.
개발자의 이런 경향이 경영자에게는 어떤 의미를 가질까요? 가장 중요한 것은 어떤 기술 스택을 선택하는지에 따라서 채용 후보자의 수나 특성이 달라진다는 것입니다. 어떤 기술이 더 오랫동안 많이 사용되었을수록 해당 기술을 다룰 줄 아는 사람이 많다는 것은 상식적으로 추론이 가능합니다.
하지만 기술 스택에 따라서 개발자의 특성이 달라진다는 것은 조금 덜 직관적일 것입니다. 일반적으로 기술이 더 새롭고 쿨할수록 더 열정적이고 모험적인 사람들이 해당 기술을 사용하는 경향이 있습니다. 조금 삐딱하게 말하자면 익숙한 기술을 뒤로하고 새로운 기술에 뛰어들 만큼 정신나간 사람만이 새로운 기술을 선호합니다. 사람이 일반적으로 그렇듯이 개발자 중에서도 이런 성향을 가진 사람은 소수이며, 따라서 채용 후보자의 수도 더 적습니다.
예리하신 분이라면 제가 특정 집단이 더 실력이 있다거나 하는 말을 안 하고 있다는 점을 눈치채셨을 것입니다. 그렇게 간단한 문제가 아니거든요. 안정적인 기존 기술을 사용하는 사람의 수가 더 많기 때문에 통계적으로 실력 있는 사람의 숫자도 더 많을 수 있습니다. 또한 해당 기술을 오랫동안 사용해서 실력을 갈고 닦을 수도 있었구요. 반면 새롭게 유행하는 기술을 사용하는 사람 중에는 도전적인 정신을 가지고 꾸준히 새로운 것을 배우려는 사람의 비율이 상대적으로 높은데, 이는 실력 있는 개발자의 필수 요건 중 하나입니다. 결과적으로 말하자면 중요한 것은 결국 채용한 사람이 실력이 있는가인데, 이건 또다른 장문의 글이 필요한 주제기 때문에 여기서는 생략하도록 하겠습니다.
기술 스택에 따라 회사와 개발자는 서로에게 특정한 성향을 기대하게 된다
기술 스택에 대한 이야기로 돌아갑시다. 회사가 어떤 기술 스택을 선택했는지에 따라서 어떤 성향의 개발자를 원하는지도 간접적으로 전달이 된다고 이야기했습니다. 회사에게 그런 의도가 없었더라도 공고를 보는 개발자는 그런 부수적인 메시지를 읽어냅니다.
마찬가지로 개발자도 회사의 기술 스택을 보고 그 회사가 어떤 곳일지에 대한 인상을 받게 됩니다. 이건 기술적이기보다는 심리적인 작용입니다. 어떤 사람을 처음 만났을 때 말투나 옷차림 등에서 1초도 안 되어서 첫인상을 결정하는 것과 비슷합니다. 새롭고 쿨한 기술 스택을 사용하는 회사는 흥미로운 일, 수평적 구조, 빠른 업무 페이스, 개인적인 성장등의 가치를 연상시킵니다. 하지만 재정적 불안정성에 대한 걱정도 연결되어 있습니다.
기술 스택이 사업에 미치는 또다른 영향이 여기서 드러납니다. 바로 문화적인 기대입니다. 회사가 특정 기술에 딸려오는 문화적·조직적 기대를 충족시키지 못할 경우 개발자는 빠르게 실망하고 의욕을 잃게 될 수 있습니다. 단, 재정적 불안정성에 대한 예상은 물론 충족시키지 않을 수록 좋습니다.
어떤 기술 스택이 유행을 타는지나 어떤 문화적 기대가 특정 기술에 딸려오는지는 명확히 정리할 수 없습니다. 올 가을 패션 트렌드를 정확히 파악하는 것이 어려운 것과 마찬가지입니다. 최선의 방법은 지속적으로 다른 개발자들과 소통하고, 패션 트렌드를 꾸준히 지켜보듯이 기술 동향도 꾸준히 지켜보는 것뿐입니다.
행운을 빕니다
글 내용을 요약하자면 다음과 같습니다. 회사 경영자로서 프로덕트/마켓 핏을 찾는 것에 집중하고, CTO를 신뢰하고 구체적인 기술적 결정을 위임하고, 기술 스택이 HR이나 기업 문화 등 다른 영역에 어떤 영향을 미치는지 인지해두는 것입니다. 할 일이 조금 많게 느껴질 수도 있지만 경영자로서 당연히 해야 할 일이기 때문에 해내는 것 외에는 다른 수가 없습니다. 긴 글 읽어주셔서 감사합니다.