Home 목표관리는 TDD처럼
Post
Cancel

목표관리는 TDD처럼

목표 관리를 TDD처럼 하자! 무슨 말일까. 최근 TDD를 배우니 내가 하는 목표 관리의 원리와 비슷하다고 느꼈다. 핵심은 결과를 예상하고 그 결과를 달성하기 위해 노력하는 점이다. 먼저 TDD에 대한 의미를 살펴보자.
TDD(Test Driven Development)는 테스트를 기반으로 개발하는 방식이다. 내가 얻고자 하는 결과를 미리 지정하고 그 결과가 나올 수 있게 코드를 짜는 방식이다. 예를 들면, “나는 더하기 프로그램을 만들 거야. 2와 3이 들어가면 결과는 항상 5가 나와야 해! 그러면 아직 코드는 작성하지 않았지만, 결과가 항상 5가 나오는 테스트를 만들어보자.” 대략 이런 의미다. 코드로 한번 살펴보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class AddTest {

    private Add adder;

    @BeforeEach
    void setUp() {
        adder = new Add();
    }
    
    // 핵심! 2+3 = 5인지 확인하는 테스트 코드
    @Test
    void add() {
        assertEquals(5, adder.add(2, 3));
    }
}

위 코드에서 핵심은 @Test 어노테이션이 있는 add() 메서드다. 위에 @BeforEach는 무시하자. add() 메서드 속에 assertEquals() 메서드가 있다. 직역하면 ‘똑같은 값인지 평가한다.’라는 의미이다. 그럼 저 assertEquals의 테스트는 성공일까? 실패일까? 실패다. 아래처럼 결과를 알려준다.

1
2
3
4
org.opentest4j.AssertionFailedError: 
Expected :5
Actual   :0
<Click to see difference>

위 메세지의 의미는 “기대한 결과는 5인데 실제로 0이 나왔다. 그래서 테스트가 실패했다.”라고 말해주는 것이다. 이쯤 되면 어이가 없다. ‘코드를 어떻게 짰길래 2+3이 5가 아니고 0이 나오지?’라는 생각이 든다. 근데 0이 나오는 건 당연하다. 왜냐하면, 내가 0으로 지정했기 때문이다. 말장난??
왜 0으로 지정했냐면 지금이야 단순한 더하기 프로그램이니 내가 올바른 코드를 바로 짤 수 있지만, 현실을 생각해보자. 내가 원하는 프로그램의 코드를 처음부터 완벽히 짤 수 없다. 우선 코드를 작성하기 전에 테스트를 만들어 놓는 것이다. 이번 경우에는 값이 단지 0이었을 뿐이다. 아래를 참고하자. 저 값을 1로 하든, 2로 하든 상관은 없다.

1
2
3
4
5
public class Add {
    public int add(int x, int y) {
        return 0;
    }
}

그럼 이제 나는 무엇을 하면 될까? 이전에 봤던 assertEquals()가 통과할 수 있게 노력하면 된다. 내가 할 일은 그뿐이다. TDD는 내가 얻고자 하는 결과를 알고 있다면 나는 그 결과를 얻기 위해서 노력만 하면 될 일이다. 다른 건 신경 쓸 필요가 없다. 그런데 TDD가 목표 관리와 무슨 상관이 있을까?

내가 현재 목표 관리하는 방식은 이렇다. 연간, 월간, 주간 목표를 세운다. 목표를 세우기 위해선 내가 무엇을 원하는지 정확하게 알고 있어야 한다. 무엇을 원하는지 알지 못하면 목표 세우기조차 어렵다. 목표가 세워졌다면 나는 그 목표를 달성하기 위해 오늘 할 일만 하면 된다. 오늘 할 일을 오늘하고 그게 차곡차곡 쌓이면 주간 목표가 달성된다. 주간 목표가 달성되면 월간 목표가 달성된다. 연간 목표도 이런 방식으로 달성된다. 즉, 내가 얻고자 하는 결과를 먼저 적어 놓고 그 결과가 얻을 수 있게 오늘 할 일을 하는 것이다.

TDD 관점에서 보자면 항상 모든 테스트가 통과할 수 없다. 하지만 통과를 못 했다면 왜 그런지 피드백을 하면서 다음 테스트는 통과할 수 있게 노력한다. 이처럼 매번 일일 목표를 달성할 수는 없다. 그럼 그때 피드백을 통해 내가 왜 달성 못 했는지 확인한다. ‘목표가 너무 높았나?’, ‘목표를 달성할 시간에 딴짓했나?’ 처럼 말이다. 이런 피드백을 통해서 다음 목표를 달성하기는 쉬워진다.

TDD와 목표 관리에 대해서 적어봤다. 위에서 나열한 TDD의 설명이 정확하지 않을 수 있다. 이 글을 읽고 계신 분들은 언제든 피드백 주시면 환영입니다. 이 글에서 말하고자 했던 바는 ‘내가 달성하고 싶은 목표를 정확히 안다면 내가 할 일은 오늘 할 일만 오늘 하면 된다.’이다.

This post is licensed under CC BY 4.0 by the author.

장기목표를 달성하는 법

왜 하고 싶은가에 대해 확신하지 못할 때

Trending Tags