프로그래밍 씽킹을 위한 프로세스 세분화 훈련

Seungwon Go
5 min readFeb 17, 2021

프로그래밍 씽킹에서 가장 중요한 것은 관찰이다. 관찰을 통해 관찰 대상의 프로세스에 대한 이해로 이어지는 것이다.

여기서 프로세스란 특정 목적물, 그게 물리적인 제품 일수도 있고, 소프트웨어 프로그램의 특정 기능 혹은 서비스가 실행이 되면서 발생하는 모든 단계를 지칭하는것으로 하겠다.

아주 단순한 제품에 대해서도 어떻게 동작이 되는지에 대한 내부 프로세스를 나열해볼 때도, 일반인이 생각해내는 프로세스 단계와 프로그래머가 생각해내는 프로세스의 단계는 큰 차이를 볼 수 있다.

우리가 일상생활에서 자주 이용하는 제품 중 하나인 음료자판기가 동작하는 내부 프로세스를 나열해 보는 것으로, 프로세스 세분화 훈련이란것이 어떤것인지 알아보고자 한다.

저서 <디자인 씽킹을 넘어 프로그래밍 씽킹으로> 중

프로그램에 대한 경험이 전혀 없는 사람이라면, 다음과 같은 정도의 프로세스를 작성했을 것이다.

❶ 고객이 자판기에 돈을 넣는다.

❷ 고객이 음료를 선택한다.

투입 금액이 선택한 음료의 가격보다 크면 자판기에서 음료가 나온다.

❸ 투입 금액에서 음료 가격을 뺀 나머지 금액이 자판기에서 나온다.

만약에 다음과 같은 정도로 프로세스를 정리 했다면, 이미 어느정도 프로그래밍 사고가 되어 있는 사람일것이다.

❶ 고객이 자판기에 돈을 넣는다.

❷ 고객이 넣은 돈이 100원, 500원, 1,000원, 5,000원이 맞는지 확인한다.

❸ 투입 금액이 700원 이상이면 코카콜라, 오렌지, 커피 버튼의 불을 켠다. 투입 금액이 1,000원 이상이면 보리차 버튼의 불을 켠다.

투입 금액이 1,200원 이상이면 솔의눈 버튼의 불을 켠다.

❹ 불이 켜진 음료의 버튼을 누르면 자판기에서 음료가 나온다.

❺ 투입 금액에서 선택한 음료 가격을 뺀 나머지 금액이 자판기에서 나온다.

아마 일반적인 프로그래머는 이런 문제가 주어졌다면, 아주 빠르게 다음과 같은 정도의 프로세스를 작성할 것이다.

❶ 고객이 자판기에 돈을 넣는다.

❷ 고객이 넣은 돈이 동전이면 100원 혹은 500원이 맞는지 확인한다. 고객이 넣은 돈이 지폐이면 1,000원 혹은 5,000원이 맞는지 확인한다.

❸ 2번의 조건을 만족하지 않을 경우, 고객이 넣은 돈을 그대로 자판기 밖으 로 내보낸다.

❹ 투입 금액이 700원 이상이면 투입금에서 음료 가격 700원을 뺀 잔돈이 자판기에 있는지 확인하고, 잔돈이 있으면 코카콜라, 오렌지, 커피 버튼의 불을 켠다.

❺ 투입 금액이 1,000원 이상이면 투입금에서 음료 가격 1,000원을 뺀 잔 돈이 자판기에 있는지 확인하고, 잔돈이 있으면 보리차 버튼의 불을 켠다.

❻ 투입 금액이 1,200원 이상이면 투입금에서 음료 가격 1,200원을 뺀 잔돈 이 자판기에 있는지 확인하고, 잔돈이 있으면 솔의눈 버튼의 불을 켠다.

➐ 자판기에 지급할 수 있는 잔돈이 없다면, 잔돈 없음 표시에 불을 켠다.

➑ 4, 5, 6번의 조건에 해당할 경우, 고객이 음료 버튼을 누르면 자판기에서

음료와 함께 잔돈을 내보낸다.

➒ 7번의 조건에 해당할 경우, 고객이 반환 버튼을 누르면 넣은 돈 전체를 내 보낸다.

우리가 앞서 살펴본 프로세스 단계는 코딩이 필요한 것이 아니다.

이것은 제품을 관찰하는 것을 통해 나올 수 있는 일련의 사고인 것이다.

하지만 동일한 제품에 대한 작동 프로세스를 정리하는 것에서 부터 일반인과 프로그래머는 큰 차이가 있다.

프로그래머는 프로그램 개발, 코딩이란 것을 통해 항상 기능의 동작되는 내부 프로세스를 추출하고 이에 대한 대응 코드를 작성하는데 익숙해져 있기 때문에 일반인들 보다 동일한 기능에 대한 진행 프로세스를 더 빠르고, 더 구체적으로 생각해 낼 수 있다.

그렇다면 프로세스 세분화 훈련은 왜 하는것이고, 무엇에 도움이 되는 걸까?

우리가 비즈니스를 진행할 때, 혹은 주어진 문제를 해결할 때 발생할 수 있는 모든 경우의 수를 빠르게 찾아내기 위해서는 우리가 관찰하는 대상이 동작하는 내부 프로세스를 이해하고 최대한 세분화하는 훈련을 해야 한다.

자 그럼, 이런 훈련을 막무가내로 해도 될까? 물론 이렇게 특정 제품을 관찰하고 그 제품이 동작하는 내부 프로세스를 생각해 보는 것은 안하는 것 보다는 훨씬 좋을 것이다.

하지만 좀 더 체계적인 방법으로 한다면, 프로그래머가 아닌 여러분도 빠르게 프로그래밍 씽킹의 역량을 키울 수 있게 될 것이다.

나는 20년이 넘는 시간을 IT에 종사하면서 훌륭한 프로그래머는 단지 소프트웨어 프로그램을 개발하는 역량을 넘어서 프로그램 뿐만 아니라 모든 문제에 대한 접근 방법 및 이를 해결하는 방법에 있어서 탁월한 모습을 보게 되었다. 그래서 프로그래머가 문제를 해결하는 방법에 대해서 관찰하고, 이를 비즈니스에 적용할 수 있는 방법을 고민하게 되었고 “프로그래밍 씽킹” 이라는 방법론을 만들게 되었다.

--

--