팀원들과 구현한 수강생 관리 클래스와 점수 관리 클래스를 git branch test에 merge하는 과정을 가졌고 이 부분에서 .gitignore에 관련된 세팅문제가 발생하여 이를 해결하는 시간을 갖었다. 그리고 이것을 해결하고 코드를 보았는데,
기능을 구현하는 코드에 모든 메서드들이 다 들어가 있어서 메서들을 찾기에 가독성이 낮고 코드를 수정하기에 비효율적이라고 느껴져서 기능 메서드들을 각 클래스로 다시 만드는 과정을 팀원들과 회의하여 진행하였다.
클래스로 나누기전 코드
https://github.com/taehyeokNam/studentManagement/commit/f39320cace313fa40fd806f7f8ab108790f59207
우리 팀은 기존의 상태를 추가하는 클래스를 enum 타입을 활용하여 코드를 축약해 보았다.
public enum StudentStatus {
Green,
Yellow,
Red;
}
enum을 활용하면 코드의 가독성, 유지보수성,안전성을 향상시킬 수 있다고 알았는데, 실제로 활용해보니 코드를 엄청 축약시킬 수 있어서 좋은 것 같다.
기존의 CampManagementApplication
클래스에 모든 기능들을 모아놨던 것을 분리하는 작업을 진행하였다.
각 클래스의 주요 기능들
StudentManager : 수강생 관리 (등록,수정,조회,삭제)
ScoreManager : 점수 관리 (등록,수정,조회,삭제)
StudentStatus : 수강생 상태 (enum)
Student : 학생 정보 저장
Score : 점수 관련 정보 저장
GradeCalculator : 수강생 평균 등급 계산
InputUtils : 예외 처리 메서드
이런식으로 나누어서 프로그램을 만들었더니 800줄이였던 메인 클래스가 200줄 가량으로 줄어들었다.
완성본
https://github.com/taehyeokNam/studentManagement/commit/5e1dda4f9f1d4c23712071dab331ab1c7ee37e34
발표 대본을 준비하면서 팀원들과 회의를 진행하였는데, 이번 프로젝트를 진행하면서 공통으로 느꼈던 어려운 점은 git 충돌과 관련된 경험이였다. 그래서 그 부분을 중점적으로 설명하기로 하였고, 우리는 마지막에 기능을 모두 구현한 후 클래스를 나누는 작업을 진행하였는데, 처음부터 하나씩 클래스를 나누어가면서 진행하였으면, 충돌도 덜 나고 작업이 더 효율적이였을 것 같다고 생각한점을 발표에 녹여내기로 결정하였다.
프로젝트를 제출 후 피드백을 받았는데 주요 내용은
클래스들을 계층별로 구분을 잘했지만 공통된 도메인으로 묶어서 package도 추가하여 구분했으면 좋았겠다
최대한 static
을 줄이는 방식을 구현해보자
enum
을 상태 관리 클래스에만 이용하지 말고 다른 사용할 수 있는 SubjectType
클래스에도 이용해 보자
사용하지 않는 메서드를 정리해서 코드를 더 깔끔하게 만들어보자
git branch 전략을 더 전략적으로 세워보자
이렇게 크게 5가지 피드백을 받았고 팀원들과 이에 대해 아쉬웠던 점을 말해보는 시간을 가져보았다.
프로젝트가 끝나고 피드백을 하면서 KPT회고를 진행하였다
Keep - 현재 만족하고 있고 계속 가져가야 할 부분
서로 직면한 문제에 대해서 같이 해결해보는 부분이 좋았습니다. 한 사람이라도 질문하면 이를 해결하기 위해서 다같이 노력하는 과정에서 많은 것을 얻는 것 같아서 좋았습니다.
너무 무겁지 않고 화기애애한 서로를 존중하는 팀 분위기가 좋았습니다.
화면공유를 통해 다같이 코드리뷰 및 코드 작성하는 부분이
서로 다른 구현 방식 또는 생각을 공유해볼 수 있어서 좋았습니다.
Problem - 불편하게 느끼는 부분
문서 작성 부분의 디테일이 부족하여 업무 분담이 명확히 안된 부분이 있어서 업무 비중이 특정 인원에 몰리는 경향이 있었습니다.
프로젝트 중반 쯤에 Git을 제대로 활용하기 시작해서
PULL과 PUSH를 하며 MERGE를 많이 이용해보지 못한 점이 아쉽고 초기의 세팅을 맞춰서 진행하지 못한점이 아쉬웠습니다.
업무를 진행하면서 전체적인 소통이 특정 파트에 인원들 끼리의 소통보다 많이 부족해서 아쉬웠습니다.
Try - Problem에 대한 해결책 및 시도 가능한 것
문서작성을 템플릿 이나 특정 프로그램을 이용해서 시각화 해서 한눈에 들어오고 모두 인지하기 좋게 만들어 보아야 겠다.
이번 경험을 통해 git
으로 협업할 때 초기의 .gitignore
세팅을 정확하게 하여서 이것과 관련된 충돌은 일어나지 않도록 해야겠다. 그리고 PULL
과 PUSH
를 자주하여 commit
과 코드 리뷰를 자세하게 그리고 자주 하는 방식으로 git
을 이용해야 겠다
모든 팀원들이 한자리에 모이는 회의 시간을 하루에 한번보다 더 자주 최소 2~3번정도 진행하면서 소통하는 시간을 더 만들어야겠다.
이렇게 두번째 팀프로젝트를 마무리하게 되었는데, 이번 프로젝트를 진행하면서 팀원들에게 도움을 많이 받아서 성장하는 기분이 드는 프로젝트였다. 하지만, 아쉬운 점도 많은 프로젝트였는데, 팀원들보다 내가 실력이 뛰어나지 않아서 내가 프로젝트에 기여할 수 있는 역할이 한정적이였던 점이 돌이켜 생각해보니 많이 아쉬웠던 것 같다. 이와 비슷한 프로젝트를 또 다시 진행한다면 이번에는 내가 앞에서 이끌어서 많은 도움이 될 수 있었으면 좋겠다.