일반적으로 하나의 앱을 만들 때 컨셉을 결정하고 이에 대한 아이디어를 구체화한 다음 요구사항이 명확해지면 UI Flow를 그리게 된다.
이 때 한국적인 방식(?)으로 일을 한다면, 기획자나 디자이너 또는 두 파트 함께 이에 대한 UI Flow를 그리게 되고 개발자에게 전달된다.
개발자에게 전달된 flow는 한 번 이상의 feedback을 주고 받으며 개발에 들어가게 된다.
이 feedback의 대부분은 가능한지 혹은 불가능한지, 작업 공수에 대한 얘기가 될 것이다.
또한 더 자세히 들여다보면 OS 버전에 따른 기능의 가능, 불가능 혹은 많은 공수 투입이 결정된다는 것이다.
예를 들어,
최신 OS에서는 아주 멋진 디자인 feature가 추가가 되었고 디자이너도 이를 자신의 프로젝트에 꼭 도입을 하고 싶어한다고 간주하자.
물론 개발자라고 그런 욕심이 없을까? 삼위일체(?)로 모두 해당 기능을 꼭 적용해보고 싶어할 것이다.
하.지.만! 개발자는 여기서 한 가지 고민을 하게 될 것이다.
고민의 내용은 최신 OS에서만 구현이 쉽게 되지만, 구 OS에서는 구현이 쉽지 않다는 것이다.
결국 개발자는 기획자에게 확인을 한다. 호환 OS의 범위. 즉, deployment OS target을 어떻게 결정할 것이냐고.
그럼 기획자는 대부분 사용자의 현재 OS 분포도를 찾게 되고 여기서 결정 근거를 찾게 된다.
어랏? 그런데 아직 바로 이전 OS 사용자가 아직 30%정도나 된다고 간주를 해보자.
이 30% 버리기 쉽지 않으니 이전 OS까지 지원을 하겠다고 개발자에게 통보하는 경우가 있을 것이다. (아마 대부분이라고 본다.)
개발자는 이 얘기를 다시 전해듣고는 새로운 기능에 대해 설명을 한다.
내용인즉슨, 구 OS에서 구현이 쉽지 않으니 시간이 꽤 걸릴 것이라고..
여기서 PM(Project Manager)은 어떤 결정을 해야 옳을까?
UI/UX에 대한 특장점을 가질려는 목적을 예로들어 비교를 해보겠다.
PM A와 B를 비교해보도록 하자.
A PM : 30%의 유저도 중요하다. 따라서 구 OS도 지원해야하며, 조금의 시간은 할애해주겠다. 어떤 OS에서든 동일한 기능으로 나타나게 해달라.
B PM : 30%의 유저도 중요하지만 나머지 70% 유저에게 새로운 경험을 선사하고 싶다. 구 OS 사용자는 최소한 사용할 수 있게 해주고, 우리는 최신 OS의 SDK를 이용해여 새로운 경험을 주도록 하자.
두 PM의 입장은 어느 쪽이 잘되었고 어느 쪽이 잘못되었다고 할 수 없다.
이유는 관점의 차이일 수 있으며, 환경의 차이로 달라질 수도 있다.
이 얘기를 전해들은 개발자의 반응은 어떠할까?
A PM의 얘기에 대한 개발자 반응 : 괜히 일 만들지말고 common 하게 하자. 최신 OS의 새로운 feature는 개인 프로젝트에서나 적용해보고 익히지.. 괜히 이런 기능 된다고 했다가 기본 기능도 제대로 못하겠어. 자 flow 한 번 살펴볼까?
B PM의 얘기에 대한 개발자 반응 : 좋아 이번에 추가된 이 기능이 참 좋던데 이 프로젝트에 적용해볼 수 있게 되었군. 더욱이 최신 OS 기준이니 하위 OS에 대한 분기만 처리해주면 되겠어. 재밌겠는걸? 이걸 이용하면 요것도 되는데 한 번 제안해봐?
약간 비약적이긴 하지만 대부분 동감할 것이라고 생각이 된다.
파편화가 심한 플랫폼의 경우에는 이의 반대 방향을 고려해야할 것이므로 상황에 따라 다른 결정이 내려지겠지만
서비스나 앱을 잘 표현해줄 수 있는 부분에서는 최신 feature를 따라가는 것이 옳고
그러기 위해서는 각 플랫폼의 강점을 내세우는 것이 옳다고 생각한다.
코드 관리 부분에서도 OS가 업데이트 되는 것과 유사하게 업데이트가 될 것인데
기존 OS를 유지하는 부분에서 코드는 더욱 복잡해질 것이다. 즉, 발전을 저해하는 요소가 된다는 것이다.
최소한 살아있는 서비스나 앱을 만들고 싶은 입장에서 위 내용을 어떻게 생각들 하는지 참 궁금하다.