TIL

개발자는 협업이 왜 중요하다는 건데 ?

Big Iron 2023. 3. 27. 01:31

처음으로 백엔드와 프론트를 나누어 팀 프로젝트를 진행하게 되었다. 
기간은 3.17(금) ~ 3월 23(목) 약 1주일 이었고 재밌으면서도 힘들었던 기억이다.

프로젝트의 주제를 정하기 앞서 처음으로 백엔드와 프론트의 협업이 이뤄지는 이번 프로젝트에서 무엇을 경험해보고 배우는것이 무엇일지 생각해 보았다. 많은 기능과 보기 좋은 웹 사이트를 만드는 것 분명 좋은 일이다. 하지만 지금까지 배웠던 기본적인 CRUD를 사용해 리펙토링을 거쳐, 프론트와 통신하며 발생하는 오류 등을 경험해보고 싶은 마음이 더 있던것 같다.

다행히 다른 팀원들도 이 부분에 동의하는 분위기였고 팀 프로젝트에서 게시글의 생성, 조회, 수정, 삭제를 담당하여 구현하게 되었다. 전체 데이터를 조회하는 과정에서 반복문을 사용하고 한개 이상의 리스트를 사용했는데, 길어보이는 코드를 줄여보고 싶었다. 아래의 코드는 기존 반복문을 사용한 구현이다. 그리고 그 코드를 짧게 만들어 보았다.

// 전체 게시글 조회
@Transactional
public List<PostResponseDto> getAllPost() {
    // 모든 게시글 작성일별 내림차순 리스트
    List<Post> posts = postRepository.findAllByOrderByCreatedAtDesc();

    List<PostResponseDto> postList = new ArrayList<>();
    for (Post post : posts) {

        postList.add(new PostResponseDto(post));
    }
    return postList;
}
return postRepository.findAllByOrderByCreatedAtDesc().stream().map(PostResponseDto::new).collect(Collectors.toList());

 

 

 

한 눈에 봐도 코드가 짧아졌으며 한줄로 표현이 가능하다. 아래에 사용한 스트림은 JAVA8에서 추가된 기능으로 컬렉션 데이터를 선언형으로 쉽게 처리할수 있다. 복잡한 반복문을 사용하지 않아도 되며 추후 코드가 길어지는 상황에서 루프문을 중첩해 사용해야 되는 최악의 경우도 막을 수 있다.

 

이렇게 여러 생각을 하며 힘들게 작성한 내 코드가 다른 팀원들과 프로젝트를 진행하며 누군가의 실수로 없어진다는 것은 상상하기도 싫은 일이다. 하지만 팀 프로젝트 라는 것은 개인이 구현한 코드를 공유해 최종적인 결과물을 만들어내는 것이고 코드 공유를 하기위해 사용하는 것은 대표적으로 깃허브가 있다. 깃허브는 사소한 실수에도 프로젝트를 처음과 같은 상황으로 만들 수 있고 내가 작업한 부분을 손쉽게 없앨 수도 있다. 그래서 같은 기능을 작업할 때 팀원과 미리 논의가 필요하며 독단적인 행동을 한다면 합치는 과정에서 상당히 많은 시간을 오류를 해결하는데 날리게 될 것이다.

 

그래서 사소한 문제라도 팀원과 공유하는 것이 좋고 프로젝트의 뼈대를 맞추는 작업도 필요하다. 앞으로도 팀 프로젝트나 협업을 지속적으로 할텐데 혹시라도 이러한 문제들이 발생하지 않도록 명심하자.