우테코 8기 오픈 미션 회고

자바·2026년 1월 1일

우테코

목록 보기
7/10
post-thumbnail
@Override
public void start() {
	System.out.println("8기 오픈미션");
}

프리코스를 통해 성장한 '나'


📥 들어가며


TeDDie

중간 회고에서 TeDDIe의 기본 구조를 잡고 각각의 시스템을 구축했습니다. 이제는 그 시스템을 실제로 작동시키고, 엣지 케이스를 처리하고, 최종적으로 실행 가능한 프로젝트를 자동 생성하는 시스템을 완성한 내용을 작성해보도록 하겠습니다.


잘한 점

1. TDD로 문제를 조기에 발견

HTTP/2 vs HTTP/1.1 충돌 문제를 겪었을 때, 테스트 코드가 모두 통과했다는 사실이 중요한 힌트가 됐습니다.

// MockWebServer 테스트: ✅ 통과
// 실제 LM Studio 연결: ❌ Connection Refused

"테스트는 통과하는데 실제로는 안 된다 = 코드 로직이 아니라 환경/프로토콜 문제"라는 걸 빠르게 파악할 수 있었습니다.
해결:

HttpClient.newBuilder()
    .version(HttpClient.Version.HTTP_1_1)  // 이 한 줄로 해결
    .build();

2. AI의 답변을 불확실하다라는 전제로 설계

LLM 응답이 매번 달라지는 문제를 겪으며 "AI를 통제하려 하지 말고, 어떤 형태가 와도 처리할 수 있게" 만드는 방향으로 전환했습니다.
방어적 파싱 전략:

private String cleanTestValue(String value) {
    value = value.replaceAll("```[a-z]*\\n?", "");  // 마크다운 제거
    value = value.replaceAll("\\([^)]+\\)", "");    // 괄호/설명문 제거
    String[] lines = value.split("\n");
    return lines[0].trim();  // 첫 줄만 추출
}

성공률 30% → 95%로 향상.

3. 핵심 차별점에 집중

다른 도구들은 README.md만 생성하지만, TeDDie는 즉시 실행 가능한 Gradle 프로젝트 전체를 생성합니다.

java-lotto/
├── build.gradle ✅
├── src/main/java/lotto/Application.java ✅
└── src/test/java/lotto/ApplicationTest.java ✅ (바로 테스트 가능!)

개선점

완벽을 추구하지 말고 점진적으로

처음에는 모든 LLM 응답 형태를 정규식으로 커버하려 했습니다. 결과는 끝없는 예외 처리를 했어야 했습니다.
이 과정을 통해 배운 교훈은

80%만 커버해도 충분하다고 생각이 들었습니다.
나머지 20%는 프롬프트 개선으로 해결됬습니다.
프롬프트 + 파싱 조합이 가장 효과적이라고 생각했습니다.

네트워크/프로토콜 기초 지식의 중요성

HTTP/2와 HTTP/1.1의 차이를 몰라서 1~2시간을 헤맸습니다.
추가적으로 학습을 해야할 것은:

네트워크 프로토콜 기초 학습
"왜 안 되지?"보다 "어떤 계층에서 문제가 발생했을까?" 먼저 생각할 수 있도록 해야할 것 같습니다.

배운 점

메타인지의 성장

회고를 작성하며

내가 아는 것과 모르는 것을 명확히 구분할 수 있었습니다.
새로운 기술을 만나도 학습 방법을 알기에 두렵지 않게 되었습니다.
나를 다시 돌아볼 수 있는 것이 좋았습니다.

설계 철학: 최소한의 테스트만 제공

TeDDie는 의도적으로 모든 테스트를 생성하지 않습니다.

사용자가 "어떤 테스트가 더 필요할까?" 고민하도록 유도
완벽한 테스트 제공 시 → 단순 통과만 목표
최소 테스트 제공 시 → 능동적 사고 유발

// TeDDie가 생성하는 테스트 (최소)
@Test void 기능_테스트() { /* ... */ }
@Test void 예외_테스트() { /* ... */ }

// ⬇️ 여기부터는 사용자가 직접 추가
// @Test void 로또_번호_중복_검증() { ??? }
// @Test void 음수_금액_예외() { ??? }

실패는 성장의 밑거름

Connection Refused 에러 → 프로토콜 학습
정규식 파싱 실패 → 방어적 프로그래밍 학습
LLM 응답 불일치 → AI 시스템 설계 원칙 학습

마무리

4주간의 프리코스는 저에게 계속 도전할 수 있는 기회와 성장할 수 있는 기회를 주었습니다.

새로운 기술과 방법들을 배우고 공부하며 내가 어떤 개발자로 성장해야하는지 확실히 알게 될 수 있었던 계기였습니다.

프리코스는 끝났지만, 제 도전의 여정은 계속됩니다.

profile
열띤 토론을 좋아하는 개발자입니다.

0개의 댓글