Kotlin/넥스터즈 22기

[230128] 넥스터즈 세번째 세션 활동 후기

kth990303 2023. 1. 29. 20:43
반응형

설연휴동안 꿀같은 휴식을 보내고, 1월 29일 일요일에 3주차 세션을 진행했다.

넥스터즈 첫 번째 세션 및 OT가 엊그제 같은데 사실상 거의 한달이 된 셈.

3주차 세션 일정

3주차부터는 본격적으로 팀 작업이 시작된다.

물론 그 전부터 git 레포 설정, 환경세팅 등을 진행한 팀들이 대부분. 아마 넥스터즈 활동이 3월 4일이 마지막이기 때문에 시간이 빠듯하기 때문에 미리미리 한 것이 아닐까 싶다.

 

3주차는 1~2주차와 다르게 종로 쪽이 아닌 강남에서 진행됐다.

장소가 한 곳으로 고정이 아닌, 대관 사정에 따라 왔다리갔다리 하나보다.

처음에는 강남쪽이길래 가깝다고 좋아했는데 막상 지도에 쳐보니 종로나 강남이나 둘 다 나한테는 거기서 거기였다는 슬픈 소식 🥹...


팀 작업 전, 레크레이션

또한, 이 날에는 레크레이션도 진행됐다.

각 팀끼리 퀴즈를 빠르게 맞추거나, 성대모사 및 눈,코,입 퀴즈 등으로 점수를 얻어 경쟁하는 식으로 진행됐다.

NAVER D2에서 후원을 해줘서 에코백, 회식지원금 등 다양한 상품들이 준비돼있었다.

 

(사진을 많이 못찍은 게 아쉽다)

 

레크레이션 사진 (모자이크 완료)

정이 퀴즈를 맞추러 출동했다 ㅋㅋ

근데 퀴즈 난이도가 극악이어서 한문제도 못 맞췄다는 게 함정... 

 

근데 사실 정 잘못은 아니다.

이 날 우리팀에서 3명이 퀴즈를 맞추러 나갔는데, 3명 다 퀴즈 정답을 못맞췄다 ㅎㅎ ㅜㅜ

 

신기했던건, 우리 팀에 swoon님(ps 하시는 괴발자 분)이랑 같은 학교이면서 같은 동아리였던 분이 있었다.

다음에 기회가 되면 swoon님이랑 같이 만나서 얘기 나눌 수 있으면 좋겠다.

(swoon님 보고 계신가요? ㅜㅜ 빨리 전역하시길 바랍니다..)

 

눈코입 퀴즈는 진짜 아무리 생각해도 누군지 모르겠던데 다른 팀들에 고인물들이 진짜 많았다. (PM 형이랑 나는 정답이 공개돼도 누군지 몰라서 어리둥절해함ㅋㅋㅋ)

신기한건 다른 팀들은 잘만 맞추더라.. 뭐지?

아바타 명장면 i see you 따라하면 15점 준다길래 정이랑 같이 나갔다

하지만 0점으로 끝낼 순 없었다.

아바타2 명대사 중엔 서로 끌어안으며 I see you 라고 말하는 장면이 있다.

대사 따라하면 5점, 둘이서 같이 포즈까지 취하면 15점이라길래 정이랑 같이 나갔다.

 

그걸 본 샤인(우리 학교 동문이자 선배님)이 사진을 찍어서 나한테 카톡으로 보내줬다ㅋㅋㅋㅋㅋ 하..


팀작업

레크레이션이 약 1시간 반동안 진행됐고, 3시부터 본격적으로 팀 작업이 시작됐다.

 

3주차 세션 진행 전에 간단하게 팀회의로 기능을 정해뒀기 때문에, 이번에는 도메인 모델 및 DB 스키마를 백엔드 팀원끼리 회의해보았다.

 

처음에는 ERD 툴을 뭐쓸까 얘기가 나왔다.

Datagrip은 이미 존재하는 테이블에 대한 다이어그램만 만들 수 있고, PGAdmin은 우리가 쓰지도 않을 예정인 IDE인데 ERD 툴을 목적으로 설치하기엔 좀 그랬다.

그래서 고민하던 중, ERD 툴로 고민하지 말고 일단 노트에 손으로 적어가보면서 얘기해가며 수정해보자고 결론이 났다.

도메인 모델 및 연관관계 작성

우리는 저번에도 언급했다시피 넥스터즈 출석체크 애플리케이션을 만드는 것이 목적이다.

그렇기 때문에 관리자 기능, 출석 기능이 주가 돼야 했다.

도메인 모델에 대한 얘기가 거의 1시간동안 진행됐다. 그 이유는 생각보다 기획과 개발에 있어 간극이 좀 있었기 때문이다.

 

넥스터즈는 직군 변경이 자유롭다.

그렇기 때문에 아래와 같은 상황이 가능하다.

 

ex. 15기 안드로이드 참여 -> 19기 백엔드 참여 -> 21기 운영진(CTO) -> 22기 IOS 참여

 

그리고 관리자가 볼 수 있는 화면에는 이러한 전적들이 모두 보여져야 한다.

회원 모델로만 운영한다면 기수마다 직군이 변경될 때, 또는 운영진으로 참여했을 때의 정보들이 굉장히 복잡할 것이라 판단했다. 특정 기수일 때 어떠한 활동으로 했는지를 담는 모델이 필요하다고 판단했다.

따라서 회원에 관한 모델뿐만 아니라 특정 기수에 대한 회원 모델도 별도로 생성하기로 했다.

 

그리고 특정 기수에 대한 회원 네이밍을 무엇으로 할까 고민하다가 `기수회원`으로 하기로 결정.

이름 정하는 데에도 많은 시간이 소요됐다.

특정 기수 회원에 대해 영어로는 뭐라고 네이밍 지으면 좋을까? 싶어 구글링했는데 horseman같은 이상한 것만 나와서 구글링은 포기. 최종적으로는 GenerationMember로 하기로 결정했다.

 

 

업무연락용 백엔드 카톡방 생성

그리고 업무연락은 어디로 할까 얘기가 나왔다.

디스코드, 슬랙, 카톡 등 많은 후보군들이 있었다.

 

처음에는 PR 날릴 때 webhook을 이용해서 slack에 알림을 띄워주면 좋을 듯해서 슬랙으로 정하자는 얘기가 나왔다. 근데 어차피 PR 날리면 팀원들에게 이메일이 보내지기도 하고, 카톡으로 간단한 업무연락하는 것도 괜찮다는 의견이 나와서 최종적으로 카톡방으로 운영하기로 결정!

 

이렇게 백엔드 단톡방이 만들어졌다~

지금은 PR 및 레포 권한 관련해서 얘기를 나누는 중이다.

 

코드 작성 및 PR 보내기~

회의를 다 하고 인텔리제이를 키니까 남은 시간이 40분정도였다.

40분동안 뭘할까? 하다가 몹프로그래밍을 하기로 결정. 드라이버는 나로 당첨됐다..ㅋㅋㅋ

우테코에서 페어프로그래밍 및 몹프로그래밍 경험이 있어서 드라이버가 부담스럽지 않았기 때문에 열심히 하겠다고 선언했다.

 

그렇게 선언한지 5분만에... 나는 어리버리를 타게 됐다.

그 이유는 아래와 같다.

왼쪽이 코틀린코드, 오른쪽이 자바 코드. 코틀린 너무 오랜만에 만지니까 적응이 안됐다

그 이유는 바로 코틀린으로 코드를 작성해야 되는데, 자꾸 자바를 작성하던 습관이 나와버린 것ㅋㅋㅋ

 

위 사진으로 코드를 한 번 비교해보자.

private String username; 형태와 같은 java 꼴이 너무나도 익숙해져서 그런가. 처음 엔티티 프로퍼티 선언할 때 private 붙이고 세미콜론 붙이면서 빨간줄이 뜨길래 맞왜틀을 외치곤 했다.

 

또, static final 상수 선언 코틀린에서 하는 법도 순간 까먹어서 private const val로 하지 않나. 

정말 얼탔다. 자바에 너무 익숙해져서 코틀린 감을 다 날려버렸나보다.

그렇게 10분동안만 드라이버하려다가 약 40분동안 드라이버를 진행하게 됐으며, 자꾸 자바가 손에 익어서 얼타다가 5시가 돼서 해산했다ㅋㅋㅋ (이 날 나는 회식 참여가 불가능했기 때문에 회식은 따로 안갔다.)

 

결국 다음날, 예전에 참여했었던 우테코 지원플랫폼 코드를 다시 보면서 코틀린 적응을 좀 시켰다.

그 후 넥스터즈 코드를 작성하여 PR을 날렸다. 

 

해당 PR은 여기서 볼 수 있다.

엔티티만 구축한 것이고, 도메인 로직은 아직 1도 없어서 볼 건 없다.

리뷰가 몇 가지 좀 달린 것 같던데, 좀 이따가 코드리뷰 반영하러 가야겠다.

https://github.com/Nexters/nexters-admin-server/pull/1

 

[feat] 초기 엔티티 구축 by kth990303 · Pull Request #1 · Nexters/nexters-admin-server

close #2 초기 엔티티를 구축했습니다. 도메인 프로퍼티 검증 로직은 별도로 추가하지 않았고, 엔티티 필드들만 추가해보았습니다. 누락된 프로퍼티, 오타, 수정되면 좋을 듯한 로직 있으면 편하

github.com

 

우리 팀 기술스택이 코틀린이어서 정말 다행이다. 아니었으면 코틀린 다 까먹을뻔.

빨리 다시 손에 익히든지 해야겠다...


이제 본격적으로 팀 작업이 실시가 됐기 때문에 앞으로 다양한 트러블슈팅을 하면서 성장할 수 있지 않을까 기대된다.

벌써 PR에 대한 코드리뷰가 달리기 시작했고, 그러다보니 우테코 시절의 바빴던 때가 생각이 나기도 한다.

열심히 해서 코틀린 감각 되살리는 것은 물론이고, 실력상승 해봐야겠다.

반응형