300사회과학

코딩 몰라도 괜찮아! '프로그램 씽킹'으로 비즈니스 문제 해결하기

Metanoia0 2025. 8. 4.
반응형
[서평] '디자인 씽킹을 넘어 프로그램 씽킹으로': 비즈니스 문제 해결의 새로운 접근법

[서평] '디자인 씽킹을 넘어 프로그램 씽킹으로': 비즈니스 문제 해결의 새로운 접근법

책과의 인연: 비즈니스 문제, 코딩으로 풀 수 있을까?

저는 오랫동안 비즈니스 현장에서 다양한 문제들을 마주하며 씨름해왔습니다. 복잡한 의사결정 과정, 고객의 니즈 파악, 그리고 시장 변화에 대한 민첩한 대응 등, 매일매일이 도전의 연속이었죠. 어느 날 문득 이런 생각을 했습니다. '이런 복잡한 문제들을 좀 더 체계적이고 효율적으로 해결할 수 있는 방법이 없을까?' 그러던 중, 서점에서 우연히 고승원, 윤상혁 저자'디자인 씽킹을 넘어 프로그램 씽킹으로'라는 책을 발견했습니다.

처음에는 단순히 코딩 방법을 알려주는 책이 아닐까 생각했습니다. 하지만 책을 펼쳐 들고 몇 장을 넘기지 않아 이 책이 제가 찾던 해답의 실마리를 쥐고 있다는 것을 직감했습니다. 이 책은 프로그래밍 언어의 기술적인 부분을 가르치기보다, 프로그래밍적인 사고방식을 통해 비즈니스와 일상의 문제에 접근하는 방법을 제시하고 있었습니다. 마치 복잡하게 얽힌 실타래를 푸는 새로운 도구를 발견한 기분이었죠. 이 책은 저에게 '복잡한 비즈니스 문제도 결국은 프로그램처럼 쪼개고, 연결하고, 규칙을 부여하면 해결할 수 있다'는 명쾌한 통찰을 안겨주었습니다.

---

생각을 쪼개고 연결하는 '프로그램 씽킹'

제가 이 책에서 가장 인상 깊었던 부분은 바로 할인 조건 계산 예시였습니다. 처음에는 마치 미로처럼 얽혀 있던 할인 조건들을 책의 안내에 따라 하나씩 쪼개고 세분화해 보니, 놀랍게도 명확한 해결책이 드러났습니다. 복잡한 문제를 단순하게 분해하고 각 단계별로 논리적인 규칙을 적용하는 것이야말로 프로그램 씽킹의 핵심이라는 것을 깨달았죠.

예를 들어, 다양한 결제 상황에서 할인 금액을 계산하는 과정은 다음과 같이 정리될 수 있습니다:

할인 조건 상세 설명 및 할인 로직
신용카드만 제시 국민카드 20%, 삼성/신한카드 30% 할인 적용. 예를 들어, 총 주문금액이 81,000원일 때 국민카드는 16,200원, 삼성/신한카드는 24,300원 할인.
신용카드 + 통신사 카드 제시한 신용카드가 국민/삼성/신한카드 중 하나라면 신용카드 할인 우선 적용. 해당 신용카드가 아니라면 통신사 할인 적용 (SKT VIP/Gold 15%, Silver 5%; KT VIP 15%, 일반 5%).
신용카드 + 할인 쿠폰 할인 쿠폰 무시, 신용카드 할인만 적용 (조건 1과 동일).
통신사 카드 + 할인 쿠폰 통신사가 SKT이고 총 주문금액이 50,000원 초과 시 통신사 할인에 15,000원 추가 할인. SKT가 아니면 통신사 할인만 적용.
모두 제시 (신용카드, 통신사 카드, 쿠폰) 신용카드 할인 (조건 1)과 통신사+할인 쿠폰 할인 (조건 4)을 각각 계산하여 더 큰 할인 금액을 적용.

이러한 분석 과정을 통해 저는 어떤 상황에서도 가장 효율적인 할인 금액을 정확히 계산할 수 있게 되었습니다. 이는 비단 할인 계산뿐만 아니라, 고객 관리 시스템, 재고 관리, 심지어 마케팅 전략 수립에 이르기까지 모든 비즈니스 문제에 적용될 수 있는 강력한 사고방식임을 깨달았죠. 문제를 작은 단위로 세분화하고, 각 단위에 논리적인 규칙을 부여하는 이 과정이 바로 프로그램 씽킹의 시작입니다.

---

변수: 예상하고 선언하는 프로그래머의 의사 표현

프로그래밍의 가장 기본적인 개념 중 하나인 변수 선언은 저에게 깊은 인상을 남겼습니다. 단순히 데이터를 저장하는 공간을 넘어, 미래를 예측하고 계획하는 행위라는 저자의 통찰은 비즈니스에도 그대로 적용될 수 있었습니다.

우리가 비즈니스 프로젝트를 기획할 때, '이 프로젝트에 어떤 자원이 필요할까?', '어떤 종류의 데이터가 생성될까?', '이 데이터는 어떤 형태로 활용될까?' 등을 미리 예상하고 준비합니다. 이것이 바로 변수 선언과 다를 바 없습니다. 예를 들어, 새로운 고객 관리 시스템을 도입한다면, 고객의 이름, 연락처, 구매 이력, 선호도 등을 저장할 공간(변수)을 미리 정의하는 것과 같습니다. 단순히 이름과 성별만 저장할지, 아니면 더 복잡한 개인 정보를 담을지 미리 계획해야 하는 것이죠. 이처럼 변수 선언은 프로그램의 성능과 효율성뿐만 아니라 비즈니스의 성공 여부에도 결정적인 영향을 미친다는 것을 깨달았습니다.

늑대가 목구멍에 걸린 뼈를 빼달라고 두루미에게 부탁하는 이야기처럼, 정확한 문제 인식을 통해 필요한 '도구'(변수)를 미리 준비하는 것은 모든 문제 해결의 첫걸음입니다. 비즈니스 환경에서 필요한 '변수'들을 제대로 파악하고 선언하는 능력은, 곧 미래를 예측하고 효율적인 자원 배분을 계획하는 능력으로 직결됩니다.

---

함수: 재사용성과 모듈화의 핵심

이 책은 함수의 개념을 노래의 코러스에 비유하여 설명했습니다. 이 비유는 제 머릿속에 함수가 무엇인지 명확하게 각인시켜 주었습니다. 노래에서 반복되는 코러스를 한 번만 수정해도 전체 가사에 반영되듯이, 프로그래밍에서 함수는 반복되는 작업을 효율적으로 처리하고, 유지보수를 용이하게 하는 핵심 도구입니다.

제 업무에도 적용해 보았습니다. 예를 들어, 제가 담당하는 마케팅 부서에서는 매주 특정 형식의 보고서를 작성해야 합니다. 이 보고서에는 항상 매출액 계산, 고객 반응 분석, 주간 성과 요약 등 반복적으로 수행되는 작업들이 포함됩니다. 이전에 저는 매주 이 작업들을 처음부터 다시 작성하거나 복사-붙여넣기 방식으로 처리했습니다. 하지만 '함수'의 개념을 적용해 보니, 각 작업들을 독립적인 '모듈'(함수)로 분리하여 정의하고, 필요할 때마다 호출해서 사용하는 방식으로 바꿀 수 있겠다는 아이디어를 얻었습니다.

만약 매출액 계산 로직이 변경된다면, 해당 '매출액 계산' 함수만 수정하면 됩니다. 이는 전체 보고서 작성 프로세스에 영향을 주지 않으면서도 빠르고 유연하게 변화에 대응할 수 있게 해줍니다. 이처럼 함수는 비즈니스 프로세스를 기능 단위로 잘게 나누고 모듈화하여 관리함으로써, 예상치 못한 변경 사항에 대한 대응력을 높이고, 궁극적으로는 비즈니스 효율성을 극대화하는 데 기여합니다. 중요한 것은 단순한 반복 작업을 넘어, 특정 목적을 가진 기능을 모듈화하는 능력입니다. 이 능력을 갖추면 우리가 제공하는 서비스에 어떤 기능이 필요하고 어떤 구조를 가져야 할지 빠르게 판단할 수 있습니다.

---

조건문: What if 전략으로 문제의 다양성 탐색

조건문은 단순히 '만약 ~라면, ~하라'는 프로그래밍 문법을 넘어, 비즈니스 문제 해결의 핵심 전략인 'What if' 사고방식과 연결된다는 점이 매우 신선했습니다.

저는 팀원들과 신규 서비스 기획 회의를 할 때마다 이 'What if' 전략을 활용하기 시작했습니다. 예전에는 단순히 기능 설명을 나열하는 데 그쳤다면, 이제는 잠재 고객의 입장에서 끊임없이 질문을 던지는 방식으로 회의를 진행합니다. 예를 들어, 저희가 개발 중인 실시간 위치 추적 서비스를 소개할 때:

  • 만일 물류창고에서 수천, 수만 개의 물품 중 당신이 찾고자 하는 물품이 어느 위치에 있는지 기록하지 않아도 바로 알 수 있다면 어떻게 될까요?
  • 만일 당신의 VIP 고객이 호텔 내에서 현재 어디에 있는지 알 수 있다면 어떨까요?
  • 만일 당신의 매장으로 들어오는 고객이 VIP 고객인지 아닌지를 매장에 들어오는 순간 바로 알 수 있다면 어떻게 될까요?

이러한 질문들을 통해 고객은 서비스의 가치를 스스로 판단하고, 우리는 고객의 다양한 니즈와 숨겨진 문제를 파악할 수 있게 됩니다. 이는 마치 프로그램 개발 시 다양한 경우의 수를 고려하여 완벽하게 처리할 수 있는 로직을 구현하는 것과 같습니다. 고객의 입장에서 '만일 이럴 때는 어떻게 해야 할까?'를 끊임없이 고민함으로써, 우리는 문제 해결을 위한 사고의 폭을 넓히고 세분화하는 훈련을 할 수 있었습니다. 조건문은 단순한 코딩 문법을 넘어, 일상 속에서 무심코 지나쳤던 수많은 'What if'를 발견하고 답을 찾아 나가는 사고의 다양성을 길러주는 도구입니다.

특히 인상 깊었던 예시 중 하나는 주차 요금 계산이었습니다. 구매 금액대별로 주차 시간 할인이 달라지고, 장애 여부에 따라 추가 할인이 적용되는 복잡한 시나리오를 조건문을 통해 명확하게 정리할 수 있었습니다. 이는 실제 비즈니스에서 다양한 변수와 예외 상황을 체계적으로 처리하는 데 필수적인 사고방식입니다.

구매 금액 주차 요금 계산 로직
1만원 이상 ~ 2만원 미만 1시간 초과 시 초과 시간(10분당 1,000원) 부과
2만원 이상 ~ 3만원 미만 2시간 초과 시 초과 시간(10분당 1,000원) 부과
3만원 이상 3시간 초과 시 초과 시간(10분당 1,000원) 부과
장애인 여부 위에서 계산된 주차 요금에서 30% 추가 할인
---

반복문: 효율적인 문제 해결의 열쇠

우리는 일상에서 알게 모르게 수많은 반복적인 상황에 직면합니다. 반복문은 이러한 상황에서 공통으로 적용되는 행위를 빠르게 찾아내고, 가장 효율적인 해결 방법을 모색하는 프로그래밍적 사고의 정수입니다. 이 책을 읽고 나서 저는 사무실에서 반복되는 업무들을 새로운 시각으로 바라보게 되었습니다.

예를 들어, 저는 매월 수백 건의 고객 피드백을 수동으로 분류하고 분석하는 업무를 수행했습니다. 각각의 피드백을 읽고 긍정/부정, 제품/서비스 등으로 태그를 달았죠. 이는 전형적인 반복 작업이었습니다. '반복문'의 개념을 떠올리며, 저는 이 과정을 어떻게 자동화하거나 효율화할 수 있을지 고민하기 시작했습니다. 특정 키워드를 기반으로 피드백을 자동으로 분류하는 시스템을 구상하거나, 정형화된 응답을 자동 생성하는 템플릿을 만드는 등, 반복되는 패턴 속에서 개선점을 찾으려고 노력했습니다.

책에서 제시된 구구단 게임 예시는 반복문의 중요성을 명확히 보여줍니다. 무작위로 문제를 출제하고, 사용자의 응답을 확인하며, 점수를 계산하는 과정은 모두 반복적으로 일어나는 행위입니다. 만약 이러한 과정을 효율적인 반복문으로 설계하지 않는다면, 게임을 구현하는 데 엄청난 노력이 들 것입니다. 이처럼 반복문은 업무 프로세스의 병목 지점을 발견하고 개선함으로써, 전반적인 효율성을 극대화하는 데 큰 도움을 줍니다.

---

클래스: 유연한 확장성을 위한 설계

게임에서 직업을 '클래스'라고 부르는 비유는 클래스의 개념을 정말 쉽게 이해할 수 있게 해주었습니다. 이름, 성별, 능력치와 같은 '속성'스킬과 같은 '함수'를 가진 직업(클래스)을 만들고, 그 직업을 선택한 캐릭터는 해당 클래스의 속성과 함수를 물려받는다는 설명은 객체 지향 프로그래밍의 핵심 원리를 직관적으로 전달했습니다.

이 개념을 저희 회사의 제품 라인업 관리에 적용해 보았습니다. 저희 회사는 다양한 종류의 가전제품을 생산합니다. 예전에는 각 제품마다 모든 속성(모델명, 출시일, 전력 소비량 등)과 기능(켜기, 끄기, 절전 모드 등)을 개별적으로 정의하고 관리했습니다. 하지만 '클래스'의 개념을 적용하면, 예를 들어 '냉장고'라는 상위 클래스를 만들고, 이 클래스가 공통적으로 가지는 속성과 기능들을 정의할 수 있습니다. 그리고 '양문형 냉장고', '김치 냉장고' 등은 '냉장고' 클래스의 하위 클래스로 만들어 필요한 속성이나 기능만 추가하거나 변경하는 방식으로 관리할 수 있습니다.

이러한 방식으로 제품을 설계하면, 신제품을 개발하거나 기존 제품의 기능을 변경할 때 훨씬 적은 노력과 시간이 듭니다. 자동차 모델 관리 예시처럼, 벤츠가 A, B, C, E, S 클래스로 제품 라인업을 체계화하여 모델 변경이나 파생 제품 개발을 효율화하는 것처럼 말입니다. 클래스 개념은 미래의 확장성을 고려한 비즈니스 및 서비스 기획에 매우 유용하며, 변경이 발생했을 때 전체 시스템에 미치는 영향을 최소화하는 유연한 구조를 만드는 데 필수적입니다.

---

나만의 코딩 노트: 생각을 구체화하는 습관

이 책에서 가장 실용적인 조언 중 하나는 바로 자신만의 '코딩 노트'를 만들라는 것이었습니다. 프로그래밍 코드를 직접 작성하기 전에, 어떤 프로세스 순서대로 구현할지 한글로 먼저 작성해 보는 습관은 비단 개발자에게만 유용한 것이 아니었습니다.

저는 팀 프로젝트를 시작하기 전에 '기획 노트'를 작성하는 습관을 들이기 시작했습니다. 처음에는 거창하게 시작할 필요 없이, 머릿속에 떠오르는 아이디어를 빠르게 나열했습니다. 예를 들어, 신규 앱 개발 프로젝트를 시작한다면:

  • 사용자 회원가입은 어떻게 처리할까?
  • 로그인 시 어떤 정보를 확인해야 할까?
  • 메인 화면에는 어떤 기능이 들어가야 할까?
  • 결제 프로세스는 어떻게 구성할까?
  • 사용자 오류 발생 시 어떻게 처리할까?

이러한 질문들을 자유롭게 적어 내려가다 보면, 자연스럽게 각 단계에서 필요한 기술, 반복적으로 사용될 기능, 그리고 누가 이 기능을 사용할지 등 세부적인 사항들이 명확하게 정리되기 시작했습니다. 특히, 저자는 "개발자가 아는 코드 문법 범위 내에서만 작성하고 모르는 코드에 해당하는 부분에 대해서는 아예 작성할 시도조차 하지 않는다"고 지적했는데, 이는 한글 코딩 노트의 중요성을 더욱 부각시켰습니다. 언어의 제약 없이 사고를 확장하고 구체화할 수 있다는 점이 큰 장점입니다.

이 습관은 단순한 메모를 넘어, 프로젝트의 전체 아키텍처를 머릿속에 그릴 수 있게 해주었습니다. 현재 내가 무엇을 하고 있고, 다음에는 무엇을 해야 하며, 협업하는 동료들은 어떤 일을 하고 있고, 어떻게 효율적으로 협력해야 할지에 대한 큰 그림을 그리게 해주었죠. 이는 프로그램 씽킹의 궁극적인 목표이자, 비즈니스 리더로서 갖춰야 할 중요한 역량이라고 생각합니다. 이 습관을 통해 비즈니스 문제를 더 깊이 생각하고, 그 결과를 최대한 자세하게 계획할 수 있게 되었습니다.

---

핵심 요약: 프로그램 씽킹의 주요 개념들

변수

데이터 저장 공간을 넘어, 미래를 예상하고 계획하는 행위. 비즈니스에서 필요한 자원과 데이터 타입을 미리 정의하여 효율적인 자원 배분 계획을 세우는 것과 유사합니다.

함수

반복되는 작업을 효율적으로 처리하고 재사용성을 높이는 모듈. 비즈니스 프로세스를 기능 단위로 쪼개고 모듈화하여 관리함으로써 유지보수를 용이하게 하고 변화에 유연하게 대응합니다.

조건문

'What if' 전략으로 다양한 경우의 수를 탐색하고 문제 해결의 폭을 넓히는 사고방식. 고객의 입장에서 질문을 던지고, 예상되는 모든 시나리오에 대한 해결책을 미리 구상하는 데 활용됩니다.

반복문

공통된 행위를 빠르게 찾아내 가장 효율적인 문제 해결 방법을 모색. 일상 및 비즈니스 업무의 반복되는 패턴을 분석하여 자동화 또는 효율화 기회를 발굴하는 데 사용됩니다.

클래스

속성과 함수를 가진 유연한 설계의 핵심. 제품 라인업, 서비스 모델 등을 계층적으로 구조화하여 신규 개발 및 변경 시 효율성을 극대화하고 확장성을 확보합니다.

코딩 노트

프로그래밍 코드가 아닌 한글로 먼저 프로세스를 작성하는 습관. 사고를 확장하고 구체화하며, 프로젝트의 전체적인 아키텍처와 협업 방식을 명확히 하는 데 도움을 줍니다.

---

실천 전략: 당신의 비즈니스에 프로그램 씽킹을 적용하는 법

프로그램 씽킹, 비즈니스 현장에서 이렇게 활용하세요!

  • 문제 정의 및 세분화: 복잡한 비즈니스 문제를 마치 프로그램처럼 작은 단위로 쪼개고 핵심 로직을 파악하세요. 예를 들어, 고객 이탈률을 줄이고 싶다면, 이탈의 원인(회원가입, 첫 구매, 재구매 실패 등)을 단계별로 나누어 분석합니다.
  • 변수 선언: 프로젝트를 시작하기 전에 어떤 종류의 데이터(고객 정보, 시장 데이터, 재무 지표 등)가 필요하고 어떻게 활용될지 미리 예상하고 정의하세요. 이는 필요한 자원을 효율적으로 배분하고 불필요한 시행착오를 줄이는 데 필수적입니다.
  • 기능 모듈화 (함수): 반복적으로 수행되거나 특정 목적을 가진 비즈니스 프로세스(예: 신규 고객 온보딩, 월간 보고서 작성)를 독립적인 기능 단위로 정의하고 표준화하세요. 이는 업무의 효율성을 높이고, 변화에 유연하게 대응할 수 있도록 합니다.
  • 'What if' 조건문 사고: 새로운 서비스나 정책을 기획할 때, 다양한 시나리오를 가정하고 '만일 ~라면 어떻게 될까?'라는 질문을 던지세요. 고객, 시장, 경쟁사 등 여러 관점에서 예상되는 모든 상황에 대한 해결책을 미리 구상하여 리스크를 최소화합니다.
  • 반복 패턴 분석 및 최적화: 일상 업무나 비즈니스 프로세스에서 반복되는 패턴을 찾아내고, 이를 자동화하거나 효율성을 높일 수 있는 방법을 모색하세요. 이는 불필요한 자원 낭비를 줄이고 생산성을 향상시키는 데 기여합니다.
  • 클래스 기반의 구조 설계: 제품, 서비스, 조직 구조 등을 설계할 때 상위-하위 개념으로 계층화된 '클래스' 구조를 적용하세요. 이는 미래의 확장성을 고려한 유연한 설계와 효율적인 관리의 기반이 됩니다.
  • '아이디어 노트' 작성 습관: 중요한 의사결정이나 복잡한 문제를 다룰 때, 코드를 짜듯이 한글로 먼저 아이디어를 정리하고 프로세스를 단계별로 구체화하세요. 이는 사고의 깊이를 더하고, 명확한 실행 계획을 수립하는 데 도움을 줍니다.

자주 묻는 질문 (FAQ)

Q: '디자인 씽킹을 넘어 프로그램 씽킹으로'는 코딩을 모르는 사람도 읽을 수 있나요?
A: 네, 물론입니다. 이 책은 프로그래밍 언어의 기술적인 설명보다는 프로그래밍적 사고방식, 즉 문제 해결을 위한 논리적이고 체계적인 접근 방식에 초점을 맞추고 있습니다. 따라서 코딩 경험이 전혀 없는 분들도 비즈니스나 일상생활의 문제 해결 능력을 향상시키는 데 큰 도움을 받을 수 있습니다.
Q: '프로그램 씽킹'이 기존의 '디자인 씽킹'과 다른 점은 무엇인가요?
A: 디자인 씽킹이 사용자 중심의 공감과 아이디어 발산에 중점을 둔다면, 프로그램 씽킹은 문제를 작은 단위로 쪼개고, 각 단계에 논리적인 규칙과 흐름을 부여하여 체계적으로 해결책을 구현하는 과정에 더 초점을 맞춥니다. 두 가지 사고방식은 상호 보완적으로 활용될 때 가장 큰 시너지를 낼 수 있습니다.
Q: 비즈니스 현장에서 '조건문(What if 전략)'을 어떻게 효과적으로 활용할 수 있나요?
A: 신규 서비스나 제품을 기획할 때, 잠재 고객의 입장에서 '만약 ~라면 어떻게 될까요?'와 같은 질문을 던져보세요. 예를 들어, "만약 고객이 우리 앱을 사용하다가 특정 단계에서 이탈한다면 어떻게 해야 할까요?"와 같이 다양한 시나리오를 가정하고 그에 대한 해결책을 미리 고민하면, 예상치 못한 문제에 대한 대응력을 높이고 서비스의 완성도를 향상시킬 수 있습니다.
Q: '코딩 노트' 작성 습관이 실제로 업무 효율에 도움이 될까요?
A: 네, 매우 도움이 됩니다. 코딩 노트는 단순히 생각을 정리하는 것을 넘어, 복잡한 문제를 단계별로 분해하고, 필요한 자원과 예상되는 결과를 미리 파악하게 해줍니다. 이는 개발자가 아니더라도 기획, 마케팅, 관리 등 모든 직무에서 프로젝트의 전체 그림을 명확히 하고, 동료들과의 협업을 더욱 효율적으로 만드는 데 기여합니다.

이 글은 고승원, 윤상혁 저자의 저서 '디자인 씽킹을 넘어 프로그램 씽킹으로'를 읽고 작성되었습니다.

반응형

댓글