---
title: 작은 성공을 반복하는 법 (1) — 쪼개는 것이 가장 오래된 정공법
url: https://oosioo.com/p/%EC%9E%91%EC%9D%80-%EC%84%B1%EA%B3%B5%EC%9D%84-%EB%B0%98%EB%B3%B5%ED%95%98%EB%8A%94-%EB%B2%95-1-%EC%AA%BC%EA%B0%9C%EB%8A%94-%EA%B2%83%EC%9D%B4-%EA%B0%80%EC%9E%A5-%EC%98%A4%EB%9E%98%EB%90%9C-%EC%A0%95%EA%B3%B5%EB%B2%95
date: 2026-09-16T14:12:30+00:00
author: SYSOP
summary: 큰 목표 앞에서 막막할 때 감당 안 되는 문제를 잘게 쪼개는 것은, 컴퓨터공학의 분할 정복과 같은 가장 오래된 정공법이다.
---
# 작은 성공을 반복하는 법 (1) — 쪼개는 것이 가장 오래된 정공법

이번에는 여러 문제를 해결하면서 쉽게 성공하거나 좋은 성과를 만들어내는 방법에 대한 이야기를 해보려고 한다.

예전에 스타트업에서 제품 하나를 0부터 만들 때, 나는 그 거대한 목표를 아흔한 개의 작은 마일스톤으로 쪼갰다. 첫 항목은 막 엄청 대단한 것은 아니었다. "파일 하나 제대로 읽는 코드 만들기" 같은 것이었다. 현대의 프로그램은 대체로 작은 기능을 수행하는 컴포넌트들을 조합하여 만들어내기 때문에 기능 단위로 하나씩 만들어 더하는 방식으로 만들어내곤 했다. 그리고 중간중간 결과물을 확인하고 의도한 설계대로 동작하면 작게 성공을 거두는 방식이다.

![큰 목표를 아흔한 개의 작은 칸으로 쪼갠 모습](/uploads/859f6851dc54444d.png)

## 큰 문제를 다루는 가장 오래된 방법

사실 이건 나만의 비법이나 노하우 같은것이 아니다. 컴퓨터공학에는 '분할 정복(divide and conquer)'이라는 이름의 문제 해결 전략이 있다. 감당 안 되는 큰 문제를 같은 모양의 작은 하위 문제로 나눠 각각 풀고 다시 합치는 방식이다. 병합정렬도, 이진탐색도 다 이런 방식이다.

단순해 보이지만 생각 이상으로 강력하다. 백만 개의 데이터를 정렬한다고 해보자. 통째로 비교하는 단순한 방식은 연산이 대략 1조 번 필요하지만(O(n²)), 절반씩 쪼개 정복하는 병합정렬(O(n log n))은 약 2천만 번이면 끝난다. 같은 문제인데 나눠서 풀었더니 연산량이 약 5만 분의 1로 줄어든다. 큰 문제를 다루는 가장 오래된 정공법이, 바로 잘게 쪼개는 것이다.

![데이터가 많아질수록 벌어지는 두 방식의 연산량 차이](/uploads/55a23350b7c2d39b.png)

## 끝이 보이는 크기로 자른다

핵심은 '끝을 눈으로 확인할 수 있는 크기'로 자르는 데 있다. "제품을 완성하고 출시해서 돈을 번다"는 직관적으로 끝이 보이지 않지만, "이 파일 형식을 정확하게 읽어낸다"는 보인다. 그래서 첫 마일스톤의 목표는 완성이 아니라 착수여야 한다. 시작이 반이라는 말도 있지 않은가.

처음 다루는 생소한 프로젝트와 도메인에서는 작은 것 하나도 늘 버겁다. 파일 하나 제대로 읽어내는 코드를 정리하는 데만 일주일이 걸린 적도 있다. 이렇게 시작하더라도 만들어진 컴포넌트들이 쌓이자 앞 조각이 뒤 조각의 재료가 되며 속도가 붙었다. 작은 성공은 이자를 낳았고, 그 이자가 프로젝트 수행 기간 내내 굴러간다.

이 방법에는 내가 처음엔 기대하지 않았던 부가 효과가 있었다. 다음 글에서 그 이야기를 이어간다.

참고 자료: [Merge sort — Wikipedia](https://en.wikipedia.org/wiki/Merge_sort)

