레이어드 씽킹
Product를 만드는 계층적 아이디어 개발론
서론
현재는 소프트웨어 마에스트로 연수생활을 하고 있는 중이다. 연수생활 중에는 멘토님과 매칭이 되어, 주기적으로 멘토링을 진행한다. 멘토링을 하면서 깨닫는 것들을 정리해두면 참 도움이 될 것 같아서, 해당 내용을 포스트해두려고 한다. 물론 주니어 개발자의 입에서 나오는 것이기 떄문에 틀린 내용이 담길 수도 있다.
레이어드 씽킹이란?
생각의 단계를 나누는 것이다. 마치 개발자에게 익숙한 OSI 7계층을 보는 느낌으로 하는 것이다. 내가 생각했던 아이디어가 몇 단계에 있는지 분석을 하는 것이다.
레이어를 나누는 이유
레이어를 나누는 행위의 장점은, 역할의 범위에 있다. 아이디어를 마인드맵과 같이 무작위로 펼치게 된다면, 분명 노드별 생산성은 높아질 수 있다. 하지만 그것이 모두 Product가 되는 것은 아닐 것이다. 분명 어떤 아이디어가 어떤 다른 아이디어와 연결되는지 구조화가 필요할 것이고, 그것을 계층화해둔다면 해당 아이디어의 역할이 얼마나 영향력이 있는지 알 수 있을 것이다.
장점
아이디어를 계층화하여 떠올리게 된다면 다음과 같은 장점이 있겠다.
- Product를 만들 때 구조적으로, 점진적으로 개발할 수 있다.
- 아이디어를 폐기해야할 때, 얼마나 되돌려야 하는지 알 수 있다.
1. 구조적 분석
우리는 Product를 만들 떄 처음부터 0 to 100을 만들 수가 없다. AI도 잘 못하는 개념인데, 어떤 제품을 떠올릴 때, 한 번에 구체적인 것들까지 모두 떠올리는 건 불가능하다. 기능의 추상적 모델부터 시작하여, 점점 더 구체적인 아이디어를 떠올리자는 거다.
멘토링과정에서는 일단 큰틀을 간단히 잡기로 했었다.
- 사용자가 어떤 요구사항을 가지고 있을까. (사용자가 과연 우리 서비스를 원할까?)
- 내가 만들 수 있는 건 무엇이 있을까.
- b가 a를 충족시킬 수 있을까.
이런 순서로 아이디어를 떠올렸었다.
a의 경우는 Pain Point를 찾는다는 개념이었는데, 사람들이 불편해하지 않는 건 굳이 Product를 따로 찾아 쓰지 않는다는 점이었다. 그러니까 우리는 사람들이 불편해하는 것을 Product로 만들어주어야 한다는 의미다.
b의 경우에는 우리가 만들 Product인데, 내가 가지고 있는 아이디어를 실제로 프로토타입으로 만들어져서 사용자에게 보여줄 수 있냐는 의미다. 기술적 한계와 제도적 한계 등이 Product를 만들지 못하게 한다면, Pain Point가 있어도 의미가 없다는 뜻이다.
c의 경우에는 우리의 Product가 Pain Point를 해결해줄 수 있는가이다. 실제로 테스팅을 해보라는 의미인데, 테스팅 이후에 해당 아이디어가 괜찮다면 구체화단계로 넘어가고, 아니라면 다시 b를 만들어야 한다는 의미가 되겠다.
계층적 개발
이제 어떤 식으로 구조화를 할 건지 나누었으면 이번엔 수직적인 부분이다. a가 문제가 되어 프로토타입을 만들었을 때, 테스팅이 실패하게 된다면 b의 아이디어는 쓸모가 없는 것이다. 그렇다면, a의 타게팅이 잘 되었다고 가정했을 떄, b를 단계적으로 접근해볼 수도 있지 않을까?
- 컨텐츠가 괜찮은가?
- 서비스의 형태와 시퀀스가 괜찮은가?
- 문구, 색감, UI 컴포넌트가 괜찮은가?
천천히 레이어를 나누어, 어떤 부분이 문제인지를 차근차근 분석할 수 있겠다.
애초에 컨텐츠가 a를 해결하는데 적합하지 않다면, 1번부터 틀려먹은 거다. 컨텐츠가 적합해도 서비스의 형태가 불편해서 이용하지 않는다면, 형태와 시퀀스를 처음부터 다시 설계해야 할 것이다. 시퀀스도 부드럽고 괜찮은데 색감이나 문구 등이 별로다? 그러면 Product 이미지를 다시 설계해야 할 것이다. 이런 식으로 단계별로 차근차근 올려나가면 분명 도움이 될 것이라고 생각한다.
또한 서비스의 크기도 큰 것에서부터 작은 것으로 나누어낼 수 있을 거라고 생각한다. 막연하게 큰 메인서비스로부터, 파생되는 서브서비스들을 나누어낼 수 있을 것이다. 그것 또한 위의 시퀀스를 밟아가면서 점진적으로 개발할 수 있어야 한다. 메인서비스의 컨텐츠가 괜찮아서, 그것을 해결하기 위한 파생 컨텐츠를 분석하고, 그것 또한 컨텐츠가 괜찮은지 분석하고… 이런 계층적 구조를 만들면서 아이디어를 발전시키는 것이 굉장히 도움이 되리라 생각한다.
결론
흠… 뭔가 깊은 고찰을 했다고 생각했는데, 막상 문서화하여 살펴보니 그다지 깊은 고찰은 아니었다고 생각한다. 다만, 레이어드 씽킹을 통해 내가 발전시킨 아이디어가 지금 어느 정도 수준인지를 아는 것 정도는 굉장히 중요하다고 생각한다. 나중에 내가 더 발전하여 좋은 소프트웨어 엔지니어가 되면, 이것에 대해서 더 깊게 고찰할 수 있지 않을까싶다.