자바칩

[F-Lab] Java Backend 멘토링 2개월 후기 본문

F-Lab

[F-Lab] Java Backend 멘토링 2개월 후기

아기제이 2024. 7. 27. 11:33
728x90

멘토링 시작 날짜: 2024.05.06

 

멘토링을 시작하면서 블로그도 같이 시작했다.

2개월 동안 70여개의 포스트를 작성했다.

 

멘토링 시작 전에는 코딩 테스트에만 집중했다.

코딩 테스트에 붙으면 다른 것들은 뭐 어떻게든 되겠지 라는 생각으로 안일하게 살았다.

하지만 멘토링을 시작하고 나서는 그 생각이 완전히 사라지고, 오히려 여기서 어떻게 더 발전시킬 수 있을까 생각 중이다.

 

멘토링을 받으면서 지정해준 도서를 읽고 멘토님께서 하는 질문에 대답을 하고, 대답을 하지 못하면 추가로 공부를 하였다.

읽은 도서는 다음과 같다.

  • '자바의 신 1권, 2권'을 읽고 자바의 기본 문법부터 고급 기능까지 깊이 있는 이해를 할 수 있었다.
  • '스프링 입문을 위한 자바 객체 지향의 원리와 이해'를 읽고 객체 지향의 4대 특성과 설계 5원칙, 디자인 패턴, 스프링 삼각형에 대한 이해를 높였다.
  • '이펙티브 자바'를 읽는 중이고 자바에서 효율적이고 안전한 코드를 작성하기 위한 전략과 팁을 배우고, 코드의 가독성과 유지보수성을 높였다.

2개월 동안 책을 4권이나 읽게 될 거라고는 상상도 못했다.

사실 나는 살면서 책을 많이 안 읽어서 멘토링 시작 전에 에프랩 후기들을 찾아보면서 내가 저 짧은 시간에 책을 저렇게 많이 읽을 수는 있을지 걱정했는데, 결국 어떻게든 해내게 된다.

하루에 20장씩만 읽어도 생각보다 금방 읽게 된다.

 

'공연 예매 웹 애플리케이션' 프로젝트를 개발 중이다.

https://github.com/f-lab-edu/ticketing-practice

 

GitHub - f-lab-edu/ticketing-practice: 공연 예매 연습 웹 애플리케이션

공연 예매 연습 웹 애플리케이션. Contribute to f-lab-edu/ticketing-practice development by creating an account on GitHub.

github.com

졸업 프로젝트를 개발할 때에는 클린 코드같은 것은 전혀 생각하지 않고 단순히 기능이 돌아가는 것에만 집중했었는데, 위에서 말했던 '이펙티브 자바'를 읽고 좀 더 효율적인 코드를 생각하면서 작성하게 되었다.

작업 단위별로 Pull Request를 올리고, 멘토님께 코드 리뷰를 받고 수정하는 작업을 하면서 코드의 가독성과 유지보수성을 높이게 되는 중이다.

 

테스트 코드를 멘토링 시작하면서 처음 작성해보았다.

예전에는 테스트 코드를 왜 작성하는지 몰랐는데, 테스트 코드를 직접 작성해보면서 웹 서비스의 안전성을 위해서는 반드시 작성해야 한다는 것을 깨달았다.

지금 현재 시점에서는 User 클래스의 단위 테스트와 통합 테스트를 거의 완료했다.

다음은 회원 1명을 조회하는 GET /api/users/{userId} 의 테스트 코드이다.

 
    @Test
    @DisplayName("회원 1명 조회")
    void getUser() throws Exception {
        Long userId = 1L;
       
        // UserService의 Mock 객체에 대해 readUser 메서드 호출 시 반환 값 설정
        when(userService.readUserById(userId)).thenReturn(user);
       
        MvcResult result = mockMvc.perform(get("/api/users/{userId}", userId))
                .andExpect(status().isOk())
                .andReturn();
       
        // 응답 본문을 문자열로 가져옴
        String responseBody = result.getResponse().getContentAsString();
       
        // JSON 문자열을 User 객체로 변환
        User userone = objectMapper.readValue(responseBody, User.class);
       
        // 가져온 데이터에 대한 검증을 추가
        assertNotNull(userone); // 사용자가 null이 아닌지 확인
        assertEquals("testuser", userone.getUsername());    // 예시: 사용자의 username 검증
       
        // 문서화는 상위 클래스에서 자동으로 처리됨
    }
 

 

Spring REST Docs로 API를 문서화하는 방법도 알게 되었다.

이것은 API 메서드의 테스트가 성공적으로 끝나면, 해당 API를 자동으로 문서화시켜준다.

API는 모두 JSON으로 Request와 Response를 하는데, 이것들을 웹 정적 페이지에 문서화시켰다.

다음은 회원 1명을 조회하는 GET /api/users/1 의 Request와 Response를 문서화한 페이지이다.

 

 

테스트 커버리지도 측정했다.

보통 테스트 커버리지는 70% 이상을 목표로 하지만, 나는 80% 이상을 목표로 한다.

지금 상태는 클래스 1개만 80%이고, 나머지는 100%를 달성했다.

 

 

 

멘토링을 받기 전에는 이력서를 생각없이 작성했었는데, 멘토링을 받으면서 이력서를 멘토님께 컨펌을 받으면서 내가 겪은 경험과 성과를 추상적이지 않고 구체적으로 작성한 이력서를 만들 수 있게 되었다.

 

멘토님은 카카오 개발팀장 출신이셔서 기술 지식을 매우 깊게 알고 계신다.

지금도 빅테크 기업의 기술 블로그 포스트를 주기적으로 읽고 계신다고 한다.

멘토님께서 질문을 하시고, 내가 답변을 하지 못하면 답변을 할 수 있도록 잘 이끌어주신다.

그리고 관련 개념까지 알려주셔서 그것에 대한 것도 추가로 알 수 있게 된다.

멘토링할 때마다 녹음본과 스크립트가 제공되어서 언제든지 해당 날짜의 멘토링을 다시 듣고 다시 보면서 공부할 수 있다.

심지어 AI가 멘토링 때 나왔던 질문들도 분석해서 정리해준다.

 

 

여태까지 살면서 이렇게까지 많은 양, 심지어 꽤 어려운 내용을 하루에 많은 시간을 투자하면서 공부한 적이 없었다.

하지만 주 5-6일 하루에 10시간 이상 공부하다는것이 힘들다보니 살짝 멘탈이 나간 적도 있었다.

그럴 때 대안을 알려주시면서 멘탈 관리에 많은 도움을 주셨다.

 

데일리 스크럼이라는 것도 작성하도록 하셨다.

그날 한일, 앞으로 할일을 매일 작성하는 것이다.

그리고 2주 단위로 멘토님과 함께 스프린트를 계획하고, 2주가 끝나면 회고를 하면서 잘한 점, 문제점, 문제점을 커버하기 위해 시도해볼 것을 작성한다.

 

 

원래 에프랩 멘토링은 6개월 과정이었는데, 1:1로 바뀌면서 4개월 과정이 되었다.

뭔가 꽤 많이 한 것 같은데 2개월이면 생각보다 많이 지나진 않았다.

남은 2개월도 열심히 달려서 멘토링이 끝나고 좋은 서비스 기업에 취업하고 싶다.

 

만약 멘토링을 고민하고 있다면 정말 강추한다. 단기간에 정말 많은 것을 공부하게 된다.

소프트웨어학과를 4년동안 다니면서 배운 것보다, 멘토링 2개월동안 배운 것이 더 많다.

내가 예전에 이런 후기를 보면서 에이 그게 말이 될까 싶었는데 진짜다.

이런 후기를 내 손으로 스스로 작성하게 될 줄은 꿈에도 몰랐다. 좀 뿌듯하다.

'F-Lab' 카테고리의 다른 글

[F-Lab] 3주차 멘토링  (2) 2024.06.02
[F-Lab] 2주차 멘토링  (2) 2024.06.02
[F-Lab] 1주차 멘토링  (0) 2024.06.02