무엇을 만들 것인가

프로그래밍을 공부하면서 내가 학습한 것들은 ‘어떻게 만드는가’에 관한 것이다. 하지만 정말 어려운 것은 ‘어떻게 만드는가’가 아니라 ‘무엇을 만드는가’에 관한 것이다. 작년 한 해는 이걸 깨달은 해였다. 프로그래밍 독학을 막 시작했을 때는 이걸 할 줄 알면 뭐든지 할 수 있을 것 같았다. 하지만 사실이 아니다. 무엇을 만들어야 좋을지 모른다면 어떻게 잘 만들지 알고 있어도 무색하다.

‘어떻게 만드는가’는 쉽게 배울 수 있다. 많은 사람들이 다양한 분야에서 이 고민을 함께 하고 있다. 여러가지 매체를 통해 지식을 습득할 수 있다. 학습의 내용도 상세하고 정확하다. 가끔 성공의 공식도 존재한다. 하지만 ‘무엇을 만드는가’는 배우기 어렵다. 두루뭉술하고 추상적이다. 이게 맞는 것인지 확신할 수 없다. 정말로 ‘무엇을 만드는가’를 잘 아는 사람조차도 이런 지식과 지혜를 제대로 전달하기 어려워하는 것처럼 보인다. 결국 스스로 생각하는 수 밖에 없는 것 같다.

프레임워크, 프로그래밍 언어, 디자인 툴 등 제품을 개발할 때 쓰는 많은 도구들은 점점 사용하기 편하고 개발자의 고민을 줄여주는 방향으로 발전한다. AWS, Google Cloud 등 클라우드 인프라 서비스들을 보면 이런 경향이 뚜렷하다. 초기 클라우드 서비스들은 가상 컴퓨팅만 제공하는 것으로부터 시작했지만 점점 더 관리된 형태(managed)의 컨테이너 기반 서비스를 출시하면서 인프라 운영에 대한 고민을 없애고 있다. 더 나아가 정말로 비즈니스 로직만 고민할 수 있도록 다양한 서비스들을 Serverless화 하고 있다. 심지어 코드 한 줄 없이도 서비스를 만들 수 있는 zero-code 서비스도 여러 클라우드 서비스에서 관심을 가지고 있다고 한다. (하지만 이것도 terraform 코드로 관리하겠지)

이런 경향은 결국 제품 개발의 진입장벽을 낮춘다. 과거에 비해 지금은 더 적은 지식으로도 제품을 만들고 출시할 수 있다. 시간이 흐를수록 ‘어떻게 만드는가’의 중요성은 작아질 것이다. 반면 사회가 복잡해지고 변화가 가속하면서 ‘무엇을 만드는가’에 대한 지식은 더 중요해진다. 사람들에게 매력적인 제품을 만들기 위해서는 무엇을 고민해야 할까?