Software에서 중요한 것

(제목은 Software에서 중요 한 것이라고 달았지만, 이게 Software에서 중요 한 것인지 아니면 Software 회사에서 중요 한 것인지는 잘 모르겠습니다. 소비자 입장에서 이 둘은 동일하다고 주장합니다.)

소비자 제품을 내는 회사에 근무하면서 제품화에 가장 중요 한 게 무엇일까 하는 생각을 하게 됩니다. 해당 제품이 판매되는 시장의 성숙도에 따라 다르겠지만, 제가 볼 때에 단 한 번에 하나의 제품을 낸다면 가장 중요 한 것은 사용자에게 어필하는 기능입니다. 어떨 때에는 이게 메모리 크기 같은 특정 하드웨어 사용이나 지문 인식같은 센서, 아니면 디자인 일 수 있습니다. 하지만 해당 제품이 계속 후속 버전에 판매된다면 Software가 중요합니다.


제품의 연속성에서 Software가 중요 한 이유는 무엇일까에 대한 대답은, 모순되게도 Hardware 회사에서 답을 얻었습니다. Hardware 회사의 제품은 아무리 빠르게 제품을 출시 해도 그 특성 상 최소한의 기간이 필요해서, 개별 제품에 따라 다르지만 대부분의 경우 6~12개월의 라이프사이클이 있고 기존의 제품을 약간 수정해도 3개월이 필요합니다. 이러한 오버헤드 때문에 제품이 사용자의 Feedback을 시장에서 받아서 갱신되는 전체 Cycle에 한계가 있고, 이 속도의 상한은 제품이 출시되는 속도입니다.

Software의 특성이라고 이야기 하는 것은 만질 수 없는 것(= Soft 한 것)이라고 이야기하는데, 제품 측면에서 가장 중요한 Software의 특성은 제품의 Release 주기가 극단적으로 짧다는 점입니다. 다만 이러한 짧은 주기를 가지면서 제품을 빨리 출시하는 것이 Software를 얼마나 잘 다루는지 실력입니다.
예전의 Software 배포를 돌이켜 보면 다음과 같습니다.
  1. 1990년대까지 Linux 배포판은 부정기적이었고 이 때에는 제품들에 버전명을 1.0, 2.0 이렇게 붙였습니다. (오피스 같은 제품들도 그랬습니다)나름대로 Software가 완성되면 배포했고, 이런 일정은 자기 스스로 관리합니다. 
  2. 2000년대에 Ubuntu 배포판이 나왔을 때에 버전명은 14.04, 15.10 처럼 해당 연도/월 이 붙어서 출시되었고, 대부분의 Software들이 1년에 1번 또는 2번 제품을 출시했습니다. 이 정도를 할 수 있게 된 것은 요구사항을 예측 가능하게 조절 할 수 있는 경험과 역량이 쌓였고, 테스트 자동화를 통해서 상당 부분의 검증 프로세스를 줄일 수 있게 되어서입니다. 이런 일정은 현재의 Hardware 개발 일정과도 맞출 수 있고 제품 출시 시 소비자에게 제품을 적절히 Remind 할 수 있어서 대부분 이런 체계를 적용하고 있습니다.
  3. (물론 2000년대에 일부 이런 배포판들이 있었지만) 최근의 몇몇 배포판들은 Rolling Release라고 해서 별도의 버전이 따로 나오지 않고 계속 최신의 안정 버전이 유지되는 방식을 택합니다. Windows 10에서 이후 버전이 없다고 이야기 하는 것도 별도의 제품 군 없이 Feature를 작게 가져가면서 계속 버전업을 해서 시장의 Feedback을 빨리 받는 추세를 택한 것이라고 생각합니다. 사실 이러한 방법을 택하는 것은 별도의 Software 제품 보다는, (온라인) 서비스들이 택하는 방식입니다.

앞의 2번 까지는 몰라도 3번 상황이 된다면 Hardware가 Software 발전하는 속도를 따라가기 힘들게 합니다. 다만 선결조건으로 Software의 Release에 Bottleneck이 있어서는 안되기 때문에, 요구사항 자체가 Software에 친화적으로 설계되어야 하고, 모든 변경에 대한 Test는 자동화 되어서 검증에 대한 Overhead가 최소화 되어야 하고, 사용자에게 배포되는 Channel도 Overhead가 없어서 가장 빨리 사용자에게 전달되어야 하고, 사용자의 Feedback은 A/B Testing 등의 방법으로 빨리 수집 할 수 있어야 합니다.

위의 과정 중에 Bottleneck이 하나라도 있으면 전체 Process가 지연되고, 이러한 게 바로 따라잡기 힘든 Software의 격차입니다. 이렇게 Software를 잘 하기 힘들기 때문에 Software의 격차가 많이 나는 것이겠지요.


핑백

  • Mono log : Software Platform의 종류 2016-04-03 23:13:14 #

    ... 이전에 Software에서 중요한 것이라 글에서 내가 생각하는 Software에 대해 이야기 했었습니다. 여기에 한 발짝 더 나아가 Software Platform 에 대한 생각입니다 ... more