서비스기획자가 알아야하는 기본 of 기본 개발 개념이 있다면?
이번 편에는 기획자 또는 IT 업계의 비개발자가 꼭 알아야 하는 개발 지식에 대해 이야기하고자 합니다.
IT 업계에서 일하는 비개발자, 혹은 IT 서비스에 대해 알고 싶은 비전공자들이 IT 지식에 대해 공부하고자 할 때 처음 드는 생각은 “그래서 뭘 공부해야 하지?” 일겁니다. (제가 그랬거든요!)
IT 지식이라는 용어 자체가 너무나 추상적이고 광범위하기 때문입니다. 가장 흔히 빠지는 함정은 무조건 “개발”부터 배워야한다고 생각하는 것이죠. IT 서비스를 이해하기 위해서 혹은 서비스를 기획하기 위해서 알아야 하는 건 코딩능력이 아닙니다. “IT 서비스를 이루는 최소한의 개념들, 그 개념들간의 관계, 그리고 그 개념들이 실제 서비스에서 가지는 의의”입니다. 즉, 큰 그림을 먼저 봐야하는 것이죠. 그리고 이것을 전문 용어로 “아키텍처”라고 하기도 합니다.
결론부터 말하자면, 코딩 지식보다는 아래의 개념들을 어렴풋이라도 아는 것이 IT 서비스의 구조와 작동방식을 이해하는데 더 도움이 됩니다. IT 서비스 기획자는 특정 종류의 나무 하나를 자세히 아는 것보다는 숲과 생태계를 알아야합니다.
데이터베이스의 작동 방식(CRUD)
모바일앱, 웹앱, 플랫폼
프론트엔드와 백엔드
서버, 클라이언트, API
인증과 인가
클라우드
이 용어들을 보자마자, “아니 용어만 봐도 어려워요, 이게 개발지식이 아니면 뭐죠?”라고 생각하실 것 압니다. 언뜻 보면 무시무시해 보이지만, 지레 겁먹진 말아주세요. IT 서비스가 제공되는 방식, IT 서비스의 외관, IT 서비스의 내부, IT 서비스에서 오고가는 데이터와 그 데이터의 처리 방식에 대한 개념일 뿐입니다.
위 개념들을 쉽게 이해할 수 있도록 IT 서비스를 건물에 빗대어 살펴보겠습니다.
IT 서비스가 건축물이라면, IT 서비스 기획자는 건축가입니다. 건축가는 이 건물의 전체적인 설계도를 작성하고, 각 부분이 어떻게 구성될 지를 계획합니다. 또한, 여러 부서(전기, 배관, 인테리어 등)와 협력하여 각 분야가 어떻게 통합될 지를 조율합니다.
그러나 건축가가 직접 시공을 하진 않습니다. 그럼에도 불구하고 건축물을 설계하고 전반적으로 이해하려면 전기, 배관, 인테리어에 대한 지식을 어느 정도는 알고 있어야 전체 그림을 그리고 작업을 요청할 수 있습니다.
예컨대, “이 건물 각 층에 마스터 전등 버튼을 두어, 전등을 off하면 해당 층의 모든 불이 꺼지도록” 설계할 수 있는 것이죠. 그런데 건축 설계자가 위의 작업을 직접 수행해야 하는 것은 아닙니다. 마스터 전등 버튼 디자인은 디자이너가, 전등 외관 작동 방식은 인테리어 담당자가, 전등에 연결된 전기 설계는 전기 담당자가 수행하는 것이죠. 그렇기 때문에, 건축물을 설계하는 사람은 건물 외관, 내부 인테리어, 내부 시스템 등에 대한 총체적 지식은 있어야 하지만, 각 분야의 깊은 지식까지는 필요하지 않은 것입니다.
IT 서비스도 마찬가지입니다. IT 서비스를 이해하고 기획하기 위해서 직접 코딩을 하거나 디자인을 해야하는건 아니지만, 전체적인 구조와 작동방식을 이해하고 있어야 합니다. 실제로 기획하는 과정을 살짝 엿보겠습니다.
예를 들어, 여러분이 “버튼을 누르면 랜덤으로 숫자를 보여주는 앱”을 기획한다면 기획자로써 뭘 해야할까요?
무턱대고 아무 개발자한테 “이런 앱을 만들어주세요”라고 하면 될까요? 그렇지 않습니다. 위의 요구사항을 받은 개발자는 이런 질문들을 할겁니다.
모바일 앱만 제공하나요? 웹페이지도 제공해야할까요?
랜덤으로 생성하는 숫자의 범위는 어떻게 할까요?
버튼을 누를 때 숫자를 보여주고 계속 화면에 띄워놔야할까요?
조회한 숫자는 DB에 저장해야할까요?
랜덤 숫자 “생성” 기능만 넣으면 되는거죠? 이전 히스토리 조회는 할 필요 없는거 맞을까요?
로그인 기반으로 페이지를 제공하나요?
즉, 서비스를 기획하려면 이런 것에 대해 기획자가 “정의”하여 개발자에게 작업을 요청해야한다는 뜻입니다. 그렇기 때문에 위에서 나열한 개념들이 IT 서비스에서 어떤 의의를 가지는 지, IT 서비스 안에서 어떻게 사용되는지 이해해야 합니다.
하지만 이런 개념을 모르고 서비스를 바라본다면, 비현실적인 서비스만 기획하게 된다거나, 이 서비스가 왜 이렇게 기획되었는지에 대해서 전혀 이해를 하지 못할겁니다. (제가 그랬습니다)
그럼에도 불구하고 이런 생각이 드실 수 있습니다.”코딩 능력을 가질 필요는 없지만, 저 개념을 다 알아야한다구요? 도대체 얼만큼 알아야하는거죠?” 내가 직접 코드를 짜는 방법에 대해서는 알 필요가 없지만, 이 기능을 만들려면 누구에게 뭘 요청해야하는지를 알 수 있을 정도로만 알면 됩니다. 수학으로 따지면, ‘직접 덧셈을 할 필요는 없지만, “더하기”라는 방법을 사용해서 계산기를 두드려야한다는 걸 안다’ 정도랄까요?
이번 글을 통해 개발 지식 공부를 어디서 시작해야 할지, 아님 공부는 시작했는데 헤메고 계신 분들이라면 어떤 개념이 부족한지 알 수 있으셨길 바랍니다.
혹시 아직 공부는 시작하지 않았는데 오히려 이 글을 통해 더 막막해진 분들이 계시다면, 너무 걱정하지 않으셔도 됩니다. 오늘 말씀드린 개념들은 너무 넓고 방대한게 사실이기 때문에, “이 단어/개념은 이런 느낌이구나~ 기획할 때 이렇게 쓰이는구나~ “ 정도만 감을 잡으셔도 됩니다. 앞으로도 계속 서비스 기획 및 개발에 대한 지식을 쌓아가시 전체적인 그림이 보이고 서비스 맥락 속에서 이해가 되실 겁니다.