3단계로 쪼갰는데도… 여전히 ‘너무 복잡하다’고 느끼는 이유

Module–Class–Method 구조를 만드는 사고와 구조 안에서 실제 구현을 시작하는 사고의 필요성, psuedo code와 TDD의 효과적 활용법

밤치 66

우리는 앞에서 이렇게 말했다.

  1. 큰 틀(Module)을 잡아라

  2. 그 안을 구체적 영역(Class)으로 나눠라

  3. 그 안에서 실제 행동(Method)을 정의하라

이 방식은 분명히 효과적이다.

그런데도 독자는 이렇게 느낄 수 있다.

“근데… 그래도 어렵고 부담스러워요.”

“아직도 전체를 어떻게 구현해야 할지 감이 잘 안 와요.”

“세부 기능들을 어떻게 나눠야 할지 모르겠어요.”

정상이다.

왜냐면 Module–Class–Method는

“구조를 만드는 사고”이고,

이제 필요한 건

그 구조 안에서

“실제 구현을 시작하는 사고”이기 때문이다.

바로 여기서 등장하는 두 가지 개념이 있다.

  • psuedo code(의사 코드)

  • TDD(Test Driven Development)

이 두 가지는

개발을 할 때 부담을 극적으로 줄여준다.


1) Psuedo Code — 코딩하지 말고 먼저 머릿속을 글로 꺼내라

psuoedo code는 말 그대로

“진짜 코드는 아니지만, 코드처럼 생긴 글”이다.

우리는 실제로 작동하는 코드를 바로 쓰기보다,

먼저 이렇게 적는다.

예를 들어 “로그인 기능을 만들자”면:

사용자가 이메일과 비밀번호를 입력한다
DB에서 해당 이메일을 가진 유저를 찾는다
비밀번호가 맞는지 비교한다
맞으면 로그인 성공 상태를 만든다
틀리면 에러 메시지를 보여준다

이건 Ruby도, Python도 아니다.

그냥 “사고 흐름”이다.

그런데 이 한 줄 한 줄이

곧 Method가 되고,

Class가 되고,

Module 구조 안에 들어간다.

큰 그림을 고민하지 않고 작은 동작을 순서대로 적기만 하면 이미 해결의 절반이 끝난 셈이다.

이게 psuedo code가 가진 힘이다.


psuedo code가 주는 가장 큰 이점

  • 코드를 몰라도 기능을 설계할 수 있다

  • 복잡한 기능을 단순한 문장으로 쪼갤 수 있다

  • “어디서 시작해야 할지”의 불안이 사라진다

  • 나중에 실제 코드를 작성할 때 실수가 줄어든다

프로그래밍을 잘하는 사람은

코드를 잘 쓰는 사람이 아니라,

코드를 쓰기 전에 문제를 명확하게 설명할 줄 아는 사람이다.


2) TDD(Test Driven Development) — 먼저 테스트를 적고, 나중에 코드를 채운다

TDD는 이렇게 시작한다.

“원하는 동작을 먼저 글로 정의하고,

그걸 통과하는 코드를 나중에 만든다.”

순서를 뒤집는 것이다.

예를 들어 “두 숫자를 더하는 기능”을 만들려면,

먼저 테스트를 이렇게 적는다.

expect(add(2, 3)).to eq(5)

이 한 문장은 이렇게 말한다.

  • “add라는 기능이 있어야 하고”

  • “2와 3을 넣으면”

  • “결과는 5여야 한다”

이 테스트는 당연히 처음엔 실패한다.

왜? add 함수가 없으니까.

그러면 이제 그 실패를 해결하기 위해

최소한의 코드를 추가한다.

def add(a, b)
  a + b
end

그리고 테스트가 초록색(성공)이 된다.

이 과정은 “기능을 작은 단위로 쪼개서 개발하는 법”을

뇌에 자연스럽게 각인시키는 효과가 있다.


TDD의 강력한 효과

  • 한 번에 거대한 기능을 만들지 않아도 된다

  • 작은 기능 단위(Method 수준)로만 생각하면 된다

  • 생각의 흐름이 명확해져서 실수가 극적으로 줄어든다

  • 마치 자동 운전 보조장치처럼 “내가 잘 하고 있는지”를 체크해준다

  • 기능이 복잡해질수록 더 큰 가치가 나온다

즉, TDD는

커다란 문제를 작은 블럭으로 조립하는 가장 효과적인 방법이다.


Psuedo Code + TDD = 레고 블럭을 조립하듯 개발하는 사고 방식

이 두 가지를 함께 쓰면

문제는 기하급수적으로 쉬워진다.

1. psuedo code로 전체 흐름을 적는다

→ 레고 설명서를 만든다고 생각하면 된다.

2. TDD로 하나씩 성공시키며 구현한다

→ 레고 블럭을 하나씩 껴맞춘다고 생각하면 된다.

이 방식은

Module → Class → Method의 구조를

가장 안정적으로 구현하는 워크플로우다.

코딩이 두렵지 않다.

왜냐하면 모든 문제는

  • 작은 조각으로 나뉘고

  • 그 조각을 하나씩 성공시키면

  • 전체가 자연스럽게 만들어지기 때문이다.


독자는 여기서 깨달음을 얻는다

“아… 한 번에 완성하려고 해서 어렵게 느껴졌던 거구나.”

“psuedo code로 먼저 설명해놓고 TDD로 하나씩 성공시키면

복잡한 기능도 결국 완성되겠네.”

“레고처럼 조립하는 방식이라면…

나도 큰 프로젝트를 만들 수 있겠다!”

이 깨달음이 생기면

독자는 더 이상 두려움 속에서 개발을 시작하지 않는다.

대신 “쪼개고 구성하는 마인드셋”을 가지게 된다.