2025. 11. 8. 13:40ㆍ우아한테크코스 8기
우아한테크코스 8기 글 목록
1. [0주 차] 지원 마감 하루 전 날, 우테코 8기 지원하기
2. [1주 차] 우테코 8기 프리코스 첫 번째 미션 – 문자열 덧셈 계산기
3. [2주 차] 우테코 8기 프리코스 두 번째 미션 – 자동차 경주
4. [3주 차] 우테코 8기 프리코스 세 번째 미션 – 로또
5. [현재글] [4주 차] 우테코 8기 오픈 미션 - Java로 구현하기 1
6. [4주 차] 우테코 8기 오픈 미션 - Java로 구현하기 2
7. [5주 차] 우테코 8기 오픈 미션 - Java로 구현하기 3
1. 과제 개요
네 번째 과제는 오픈미션이었다.
이번 8기를 시작으로 처음 도입된 미션이었다.

도전이면 어떤 주제든 상관없었다.
지금까지 우테고 합격자를 선별하면서 역량은 충분하나
내세울 만한 경험이 없는 지원자들을 선별하지 못한 아쉬움에 도입되었다고 한다.
원래 공지된대로 우테코 기간이 11.17. 까지 인 줄 알았지만
회고록 작성 기간 일주일(~11.24.)이 추가돼, 5주 코스가 6주로 되었다.
2주 오픈 미션, 1주 회고록 작성이라고 했지만
구성만 그럴 뿐 총 3주 동안 미션을 진행해도 무관했다.
제출 기간만 일주일 더 연장되었다고 보면 된다.
나는 지금 우테코 아니면 경험할 수 없는지,
결과물이 있는지를 기준으로 오픈 미션 주제를 정했다.

디스코드에서 사람들과 협업하는 것을
주제로 정할 수 있었지만 구성원을 모집하는 것이 하나의 변수여서
시간을 최대한 효율적으로 사용하기 위해 혼자 진행하는 것으로 결정했다.
주제는 FE -> BE 미션 진행하기다.
JavaScript 미션을 Java로 구현하는 것이다.
지금 아니면 언제 Java를 배워보지 하는 마음에 1주 차 미션부터 시작했다.
1주 차 BE 미션 깃허브 저장소다.
2. 문제 접근 방식
2.1. 접근 방식
이미 해결한 미션이었지만
3주 차 미션에서 부품을 배치하는 컨트롤러 구성이 재미있어서
MVC 구조로 리드미를 다시 작성했다.
흐름대로 구현하면 손쉬웠는데
객체가 스스로 동작해야 한다는 임의로
부여한 제한조건 때문에 설계하는 데 어려움이 있었다.
2.2. 설계 방향
부품은 총 5가지로 구성했다.
입력, 출력, 검증기, 구분기, 계산기
사용자 입력은 그대로 받고
구분기 부품이 생성될 때 조건에 맞지 않으면 오류를 발생하는 컨셉으로 진행했다.
제약조건만 없었다면 입력에서 바로 검증해서 편했을 텐데..
구분기 구조는 아래처럼 구현했다.
class Parser {
private final String userInput;
private String numberString;
Parser(String input) {
this.validate(input);
this.userInput = input;
}
private void validate(String input) {
Validator validator = new Validator();
validator.validateUserInput(input);
}
public String getSeparator() {}
public int[] getNumbers(String separator) {}
}
1주 차 미션에서 가장 중요한 데이터는 입력된 숫자여서
Parser 역할이 가장 중요했다.
2.3. 테스트 전략
개발은 동일하게 TDD로 진행했다.
JavaScript처럼 describe로 테스트를 묶는 방법을 몰라서
포괄적으로 테스트 이름을 짓고 반복문으로 테스트했다.
@Test
void 구분자_추출_성공() {
String[] inputs = {"1 , 2 ; 3", "// \\n1 2 3", "//!\\n1!2!3"};
String[] outputs = {",;", " ", "!"};
for (int i = 0; i < inputs.length; i += 1) {
Parser parser = new Parser(inputs[i]);
assertThat(parser.getSeparator()).isEqualTo(outputs[i]);
}
}
찾아보니 @Nested로 묶을 수 있을 것 같다.
3. 배운 점과 느낀 점
설계부터 구현까지 2일 걸렸다.
이렇게 빨리 끝날 줄 몰랐다.
Java 언어에 익숙해지는 데 시간이 걸릴 것이라고 예상했지만
의외로 금방 적응했다.
Java는 타입 종류가 다양했고
let, const로 변수를 작성하는 JavaScript와 다르게 타입을 명시하는 변수 선언 방식이 독특했다.
그래서 반환값도 선언된 타입으로 일치해야 했다.
JavaScript에서 map을 사용하면 반환된 타입으로 추론되는 반면,
Java는 map을 사용하면 Object[] 타입으로 추론되어서
toArray() 메서드로 타입 인자를 할당해야 했다.
이래서 JavaScript는 자유도가 높은 만큼 근본 없다고 여겨지는 것 같다.
4. 커뮤니티 참여
이번 주 차도 동일했다.
회고록 읽고 FE 코드리뷰 하고
이전과 다른 점은 코드리뷰에 힘을 뺐다.
코드리뷰를 하다 보면 동일한 내용을 작성하는 것이 반복되어서
리뷰하는 힘이 금방 소모되었다.
이제는 코드 의문점을 위주로 작성하고 있다.
5. 학습 및 앞으로 계획
남은 BE 미션을 마무리하고
Java에서 배운 점을 블로그에 작성할 계획이다.
이미 Java 의문점 정리 1 — JavaScript와의 차이점을 작성해서 올렸고
추후에 Java Stream에 대해서 작성할 계획이다.
NodeJS Stream과 Java Stream이 동일한 개념인지 궁금하다.
'우아한테크코스 8기' 카테고리의 다른 글
| [5주 차] 우테코 8기 오픈 미션 - Java로 구현하기 3 (0) | 2025.11.18 |
|---|---|
| [4주 차] 우테코 8기 오픈 미션 - Java로 구현하기 2 (0) | 2025.11.11 |
| [3주 차] 우테코 8기 프리코스 세 번째 미션 – 로또 (0) | 2025.11.04 |
| [2주 차] 우테코 8기 프리코스 두 번째 미션 – 자동차 경주 (0) | 2025.10.28 |
| [1주 차] 우테코 8기 프리코스 첫 번째 미션 – 문자열 덧셈 계산기 (0) | 2025.10.21 |