brunch

문제는 코딩이 아니라 컴퓨팅 사고

데이터/자동화 시대에 필요한 문제해결 사고의 기술

by 이재상


'컴퓨팅 사고'가 필요한 이유


컴퓨터에게 일을 시키려면 컴퓨터가 알아들을 수 있도록 명령해야 합니다. 복잡한 데이터 분석을 시키기 위해서는 파이썬 코드를 작성해 실행시켜야 하고, 단순/반복적인 업무를 자동화하려면 파워 오토메이트로 작업 흐름(Flow)을 만들어야 합니다.


우리는 보통 사용법 그 자체에 집중합니다. 처음엔 일단 도구를 다루는 법부터 알아야 하니까요. 그러나 더 중요한 것이 있음을 알게 되었습니다. 그래서 이런 의문이 생겼습니다.


"파이썬 코드를 짜는 행위, RPA 흐름을 설계하는 행위... 이것들이 다 결국 문제해결을 위해 '논리적인 절차를 구체화'하는 것 아닐까?"

"도구를 잘 사용하는 것도 중요하겠지만 그보다 더 중요한 것은 구조화된 절차와 흐름을 잘 만드는 사고방식이 아닐까? 그럼 어떻게 사고해야 할까?"


파이썬 코드 작성, 파워 오토메이트 작업 흐름 설계 모두 복잡한 문제를 컴퓨터가 잘 이해하고 처리할 수 있도록 프로세스를 만드는 행위입니다. 프로세스를 잘 만들려면 구조화된 사고방식 즉, '컴퓨팅 사고(Computational Thinking)'가 필요합니다.


많은 사람들이 코딩을 배워야 한다고 말합니다. 하지만 문제를 정의하고 프로세스를 만드는 힘이 없다면 좋은 코드를 만들 수 없습니다. 우리가 원하는 것을 컴퓨터가 잘 실행할 수 있게 만드는 아주 특별한 무기, '컴퓨팅 사고'에 대해 알아보고자 합니다.



'컴퓨팅 사고'란?


컴퓨팅 사고는 단순한 프로그래밍 스킬이 아닙니다. 문제를 컴퓨터 또는 자동화 시스템이 해결할 수 있도록 구조화하는 사고 과정을 말합니다. 즉, 복잡한 문제를 컴퓨터 또는 자동화 시스템이 이해하고 처리할 수 있도록 잘게 나누고, 패턴을 찾고, 핵심만 남기고, 단계적인 절차로 만드는 생각의 틀(Framework)입니다.


2006년 당시 미국 카네기멜론대 지넷 윙(Jeannette M. Wing) 교수는 한 저널에서 컴퓨팅 사고를 이렇게 정의합니다.


“컴퓨팅 사고는 문제를 해결하고 시스템을 설계하며 인간 행동을 이해하는 사고 과정이다. 이는 컴퓨터 과학자뿐만이 아니라 누구나 배워서 활용할 수 있는 보편적인 사고이자 기술이다.”


컴퓨팅 사고는 단순히 '컴퓨터처럼 생각하기'가 아닙니다. 문제를 효과적으로 해결하기 위해 컴퓨터 과학의 기본 원리를 활용하는 능력입니다. 그래서 IT 엔지니어나 프로그래머뿐만 아니라 누구나 컴퓨팅 사고를 익히고 일에 적용할 수 있습니다. 비개발자라도 데이터를 다루고, 프로세스를 개선하고, 자동화를 설계한다면 반드시 필요한 사고력이 바로 컴퓨팅 사고입니다.



'컴퓨팅 사고'의 4가지 구성요소


컴퓨팅 사고는 4가지 요소로 구성됩니다. 각각의 구체적인 방법과 프로세스를 사례와 함께 살펴보겠습니다.



1. 분해(Decomposition)

- 문제를 더 작고 해결 가능한 단위로 나누고 쪼개기


첫 번째는 크고 복잡한 전체 문제가 어떤 요소 또는 단계로 구성되어 있는지 들여다보고, 요소별로 단계별로 나누는 것입니다. 전체를 부분으로 작게 나누고 쪼개야 관리하기가 쉽고 해결하기 용이합니다. 따라서 일상생활이나 업무에서 마주치는 복잡한 문제를 의식적으로 작은 단계로 나눠서 살펴보는 의식적인 노력이 필요합니다.


[예 : 데이터 분석]

"월별 매출 보고서 생성"이라는 큰 문제를 ① 데이터 로드하기 → ② 데이터 정제하기 (결측치, 이상치 처리) → ③ 월별 매출 집계하기 → ④ 시각화 자료 만들기 → ⑤ 보고서 형태로 정리하기 등으로 분해합니다.


[예 : RPA 업무 자동화]

"인보이스 처리 자동화" 문제를 ① 이메일에서 인보이스 첨부파일 다운로드 → ② PDF에서 필요한 정보 (공급 업체, 날짜, 금액) 추출 → ③ 회계 시스템에 로그인 → ④ 추출된 정보 입력 → ⑤ 처리 결과 이메일 발송 등으로 분해합니다.



2. 패턴 인식(Pattern Recognition)

- 분해된 문제들 사이에 반복되는 규칙이나 유사 사례 찾기


두 번째는, 문제를 분해하여 하위 문제(Sub-problem)들로 나누었다면, 이 하위 문제들 사이에서 또는 과거의 유사한 문제들 속에서 반복되는 경향성, 규칙성, 유사성 등 패턴을 찾아내는 것입니다. 데이터나 프로세스에서 공통적인 특징이 있는지, 반복되는 절차가 있는지 확인합니다. 혹시 예전에 해결했던 문제와 현재 문제의 유사점이 있는지도 함께 살펴보면 좋습니다.


[예 : 데이터 분석]

여러 월의 매출 데이터를 분석하며 특정 요일이나 계절에 매출이 증가하는 패턴을 발견하거나, 데이터 정제 시 항상 비슷한 유형의 오류가 발생하는지 패턴을 인식합니다.


[예 : RPA 업무 자동화]

여러 거래처의 인보이스 형식이 조금씩 다르지만, '총액'이라는 단어 뒤에 항상 최종 금액이 나오는 패턴을 인식하거나, 여러 자동화 프로세스에서 공통적으로 '로그인'하는 패턴을 발견합니다.



3. 추상화(Abstraction)

- 문제해결에 핵심적인 정보만 남기고 불필요한 정보는 제거하기


세 번째는 문제 해결에 핵심적인 부분에 집중하고, 불필요하거나 덜 중요한 세부 정보는 무시하거나 숨기는 과정입니다. 문제의 본질을 파악하고 일반화하는 것입니다. 문제의 핵심 원리나 아이디어가 있다면 모델링합니다. 중요한 정보와 부가적인 정보를 구분하는 꾸준한 연습이 필요합니다.


[예 : 데이터 분석]

개별 고객의 모든 구매 내역 대신, '고객 ID', '총 구매 금액', '최근 구매일'과 같은 핵심 정보만 추출하여 고객 세그먼트를 만들어봅니다.


[예 : RPA 업무 자동화]

인보이스에서 필요한 데이터 항목(날짜, 금액 등)을 정의하고, 그 데이터가 PDF 내의 정확히 어느 위치에 있는지 같은 세부 사항은 나중에 처리하도록 분리하는 것입니다.



4. 알고리즘 설계 (Algorithmic Design)

- 문제해결을 위한 절차(조건, 순서 등)를 논리적으로 만들기


마지막 네 번째는 문제를 해결하거나 특정 목표를 달성하기 위해 명확한 단계별 절차나 규칙의 집합(알고리즘)을 만드는 것입니다. 이를 위해서는 분해, 패턴 인식, 추상화를 통해 얻은 통찰력을 바탕으로 문제 해결을 위한 구체적인 명령어를 순서대로 설계해야 합니다. 코딩이나 흐름 설계 전에, 먼저 머릿속이나 종이에 논리적 흐름을 구체적으로 설계하거나 순서도(Flowchart)를 그리는 습관을 들인다면 큰 도움이 됩니다.


[예 : 데이터 분석]

데이터를 불러와서, 특정 조건에 맞는 행만 필터링하고, 특정 열을 기준으로 그룹화하여 평균을 계산한 뒤, 그 결과를 막대그래프로 그리는 등 파이썬 코드의 논리적 흐름 자체가 알고리즘입니다.


[예 : RPA 업무 자동화]

파워오토메이트에서 "새 이메일 도착 시 → 첨부파일이 PDF인지 확인 → 맞으면 다운로드 → PDF 열기 → 특정 키워드 검색 → 키워드 옆 텍스트 추출 → 시스템에 입력..."과 같이 순서대로 배열된 동작과 조건들의 집합이 알고리즘(흐름)입니다.



데이터/자동화 시대의 핵심 역량


데이터 분석을 위한 파이썬 코딩, 업무 자동화를 위한 RPA 흐름 설계는 모두 강력한 도구입니다. 하지만 이 도구들을 진정으로 잘 활용하기 위해서는 그 바탕에 있는 컴퓨팅 사고력을 갖추는 것이 중요합니다. 구조화된 사고가 선행되어야 좋은 코드, 좋은 작업 흐름을 만들 수 있습니다.


따라서 우리는 파이썬 코드를 쓰기 전에 또는 파워오토메이트 작업 흐름을 만들기 전에, 먼저 문제를 이해하고 풀 수 있는 방식으로 생각해야 합니다. 문제를 작은 단위로 분해하고, 잘게 쪼개진 문제들의 패턴을 찾아보고, 핵심적인 정보만 남깁니다. 이를 통해 얻어낸 통찰력을 바탕으로 문제해결의 절차나 흐름을 설계할 수 있습니다.


앞서 소개드린 저널에서 지넷 윙 교수는 이렇게 이야기합니다.

"컴퓨팅 사고의 핵심은 프로그래밍이 아닌 개념화에 있다." (Conceptualizing, not programming)



데이터 시대, 자동화 시대의 핵심 역량은 단순히 코드 문법을 외우거나 기능을 숙달하는 것에 있지 않습니다. 컴퓨터가 일을 잘할 수 있도록 문제를 논리적이고 체계적으로 분석하고, 구조화된 절차를 만들 줄 아는 것. 바로 이것이 이 시대를 사는 지식 근로자의 핵심 역량입니다. 우리가 진짜로 풀어야 할 문제는 코딩이 아니라 컴퓨팅 사고입니다.



ⓒ 이재상 2025

keyword