Nuke Olaf - Log Store

[Nexters] 2020년 상반기 회고 및 넥스터즈 17기 합격 후기 본문

회고록/[Nexters]

[Nexters] 2020년 상반기 회고 및 넥스터즈 17기 합격 후기

NukeOlaf 2020. 7. 11. 00:55

▶2020년 상반기 회고

2020년 1월부터 지금까지 두 개의 프로젝트를 진행했다.

지금 돌이켜 생각해보면 너무나도 소중한 경험이었고, 프로젝트를 통해 많은 것을 배운 것 같다. 나의 개발자 인생 모토인 "같이 일하고 싶은 개발자"가 되기 위해 앞으로도 더 발전하고 성장하고 싶다.

  • 들꽃중년 (2020.1 ~ 2020.2)

https://play.google.com/store/apps/details?id=com.bnvs.seniorcamera

 

들꽃중년 - Google Play 앱

'들꽃중년'은 사용자가 원하는 이미지에 원하는 글귀를 합성하는 서비스입니다. 새해, 기념일, 명절에 주변 지인들에게 감동적인 글귀를 입힌 이미지를 공유해보세요. 주요기능 : - 사진찍기 - ��

play.google.com

정말 아무것도 모르고 처음 진행했던 첫 프로젝트 들꽃중년. camera2 와 opencv 를 사용하여 실시간 이미지 합성기능을 구현하려 했으나, 촉박한 일정으로 인해 opencv 대신 cameraViewphotoFilter 라이브러리를 사용했다.

다른 안드로이드 개발자 한 분, 서버 개발자 한 분 총 3명이서 진행한 프로젝트. 정말 멋모르고 재밌게 개발했다. 협업이란 어떤 느낌인지 대충은 알게 된 프로젝트.

  • Metaler - 금속인 (2020.2 ~ 2020.6)

https://play.google.com/store/apps/details?id=com.bnvs.metaler

 

Metaler - 금속인 - Google Play 앱

Metaler (금속인) 은 금속 자재와 금속 가공에 관련된 업체들에 대한 정보를 공유하는 커뮤니티입니다.

play.google.com

서버 개발자 2명, 안드로이드 개발자 나 포함 2명, ios 개발자 1명에 디자이너, 기획자까지 붙어서 본격적으로 진행한 프로젝트. 금속공예 전공자들을 위한 커뮤니티를 만들었다. 

"클린 아키텍처" 에 대해 처음 알게 되었다. 유지보수 하기 좋은 코드, 협업하기 좋은 코드라는 것에 대해 처음으로 깊게 고민해보면서 내 개발 인생의 터닝 포인트가 되었다. 개발 스타일이 Metaler 이후로 완전히 달라졌다. MVP 패턴을 적용해서 프로젝트를 완성, 출시까지 했다. 그런데 아키텍처 스터디에서 MVVM 과 dataBinding 을 배우고 이 둘의 매력에 푹 빠지게 되었다. 그래서 고민 끝에 기존의 MVP 패턴으로 구성된 프로젝트를 MVVM 패턴으로 리팩토링하는 도전을 감행했다. 물론 정말 힘들었지만, 기존의 MVP 코드가 기능분리가 어느정도 되어있었기 때문에 큰 무리 없이 리팩토링을 마칠 수 있었다.

중간에 서버 개발자와 불화도 있었고, 안드로이드 개발자 한명이 개인적인 사정으로 나가게 되는 등 여러 일들이 있었지만, 적어도 내가 맡은 안드로이드 파트는 끝까지 책임지고 완성하기 위해 노력했다. 여러모로 아쉬운 점들도 많았지만 나름 배운 것도 많고 크게 성장할 수 있는 밑바탕이 된 것 같다.

 


▶넥스터즈 17기 합격 후기

"같이 일하고 싶은 개발자"가 되기 위해서는 어떤 노력을 해야 할까? 물론 혼자 열심히 공부해서 실력을 키우는 것도 좋다. 하지만 같이 일하고 싶은 개발자는 팀워킹 능력도 갖추고 있어야 하지 않을까? 그래서 나는 다양한 사람들과 프로젝트를 진행하며 협업 경험을 많이 쌓는 것도 중요하다고 생각한다. 팀원들과 하나의 같은 목표를 가지고, 그 목표를 달성하기 위해 노력하는 것은 의사소통과 문제해결 능력 함양에 도움이 된다. 

그래서 나는 개발자, 디자이너가 모여 실제 출시를 목표로 팀 프로젝트를 진행하는 IT 연합 동아리인 NEXTERS 에 지원했다. 넥스터즈는 1차 서류, 2차 면접을 통해 회원을 모집한다.

  • 서류 지원

나는 안드로이드 개발자 부문에 지원했다. 개발자는 지원동기, 프로젝트, 프로젝트에 사용한 기술, 깃허브 주소등을 작성해야 했다. 쓰고 싶은 말이 정말 많은데, 글자 수 제한이 있어서 어떻게든 내용을 줄여야했다. 그래도 자기소개서를 쓰면서 내가 개발을 시작한 이유와, 내가 지금까지 해왔던 것들에 대해 회고할 수 있었다.

// 지원동기
저는 무언가를 만드는 것을 좋아합니다. 그래서 미술대학에 진학하여 디자인을 공부했습니다. 그런데, 디자인을 공부하다보니 디자인이 실제로 동작하게 하고 싶다는 생각이 들어 개발을 공부하기 시작했습니다.그런데 생각 외로 개발이 저와 잘 맞았고, 제가 짠 코드대로 프로그램이 만들어지는 것이 너무 재밌었습니다. 그렇게 이것저것 공부하던 중, 친한 친구의 소개로 안드로이드 프로젝트에 참여하여 실제 협업을 통한 앱 출시를 경험해보았습니다.그때 저는 혼자서만 개발을 했더라면 몰랐을 다른 사람들과 협업하여 무언가를 만들어내는 것의 값짐을 배울 수 있었습니다. 그 프로젝트를 계기로 다른 사람들과 협업하여 재밌는 것을 만들 수 있는 곳이 있을까 찾아보던 중, 넥스터즈에 대해 알게 되었습니다.저는 넥스터즈에서 다양한 사람들과 어울리며 멋진 세상을 위한 새로운 무언가를 만들어보고 싶습니다. 이곳에서 팀원들과 함께 고민하고 배움을 공유하며 성장하고 싶습니다.

// 프로젝트
1. 2개월 / 카메라 필터 및 이미지 텍스트 합성 앱 / 안드로이드 프론트 개발 / Android(Kotlin), Camera2 API / 구글 플레이스토어 출시 (https://play.google.com/store/apps/details?id=com.bnvs.seniorcamera)2. 5개월 / 금속공예 관련 커뮤니티 서비스 / 안드로이드 프론트 개발, 배포 / Android(Kotlin), Retrofit2, AAC ViewModel, dataBinding / 구글 플레이스토어 출시 (https://play.google.com/store/apps/details?id=com.bnvs.metaler)

// 기술 관련
처음 프로젝트를 진행할 때, 모든 코드를 Activity 에만 작성하다보니, Activity가 비대해지고 코드를 수정하고 관리하기 어렵다고 느꼈습니다. 그 부분에 대해 해결하고 싶어 찾아보다가 "clean architecture"라는 것에 대해 알게 되었습니다.저는 그 중 MVP 패턴을 프로젝트에 적용했습니다. 패턴 적용이후, View 와  business logic 이 분리되면서 코드의 유지보수성과 가독성이 좋아졌습니다. 또한, View 와 Presenter 의 기능을 Contract 라는 interface 로 작성하고 관리하며 추상화와 다형성등의 개념에 대해 좀 더 이해할 수 있었습니다.MVP 패턴으로 프로젝트를 완성할 무렵, 개발 스터디에서 MVVM 패턴에 대해 접하게 되었습니다. MVVM 패턴을 구현할때 xml 에서 dataBinding 을 통해 데이터를 선언적으로 결합한다는 점이 매력적이었습니다.프로젝트의 목표출시일이 남은 상황이라 MVP 패턴을 MVVM 패턴으로 리팩토링해보았습니다. 그러면서 Lvie Data 를 사용하며 옵저버 패턴을 좀 더 잘 이해할 수 있었고, lifecycle 에 대해 좀 더 이해할 수 있는 기회가 되었습니다.

  • 면접

다행히 1차 서류모집에서 합격하여 면접을 보게 되었다. 지금까지 한번도 이런 동아리 같은 곳에서 면접을 본 적이 없어서 조금 떨렸다. 면접 후기글을 찾아보니 거의 기업 면접 수준으로 질문 수준이 높다고 하니까 더 긴장됐다. 면접은 약 30분간 진행되었는데, 처음엔 1분 자기소개를 하고 그 뒤엔 기술이나 협업과 관련된 질문이 들어왔다. 아직 부족한게 많아서 몇개는 답변하지 못했고, 갑작스럽게 질문이 들어오다보니 아는 건데도 생각이 안나서 제대로 대답하지 못했다. 그래도 아는 한도 내에서 최선을 다해 답변하려고 노력했다.

1. 자기소개(1분 내외)
2. 자신의 성격에 대해 알려주세요
3. 기술질문
(1) 프로세스와 스레드의 차이가 무엇인가?
(2) Rest API 란 무엇인가?
(3) MVC 패턴이란 무엇인가?
(4) 스택과 큐란 무엇인가?
4. 자소서 기반 질문
(1) Dagger 를 사용한 이유, 프로젝트 진행시에 Dagger 를 모르는 동료에게 사용하라고 할것인가? 이유는?
(2) 리사이클러뷰와 리스트뷰의 차이
(3) 메모장 어플에 JSON Object 를 사용한 이유
(4) 메모장 어플을 다시 만든다면 어떤 부분에서 시간이 오래 걸릴 것 같은가?
(5) Github 란 무엇이라고 생각하는가?
(6) 본인의 Github 가 제대로 관리되지 않고 있는 것 같다. 이유가 무엇이라고 생각하는지?
(7) 구글이 AAC 라이브러리를 만든 이유가 무엇이라고 생각하는가?
(8) MVVM 아키텍처를 사용한 이유는?
(9) clean architecture 란 무엇이며 왜 사용하는가?
(10) 당신이 PM 이라면 어떻게 팀을 이끌어나갈 것인가?
(11) 8주간의 프로젝트 중 약 2주간은 기획과 디자인이 나와야 하기 때문에 개발자가 할 수 있는 것이 많이 없다. 이때 안드로이드 개발자는 무엇을 하는게 좋다고 생각하는가?
(12) 안드로이드 개발자는 디자이너와 협업하면서 어떤 점에서 디자이너를 도와줄 수 있을까?

 

  • 합격

OT 에서 듣기로는 이번 넥스터즈 신입 회원 모집 경쟁률이 11:1 이었다고 한다. 정말 감사하게도 면접관분들께 어필이 잘 된 것 같았다. 이 글을 쓰고 있는 지금은 팀 빌딩이 되어 프로젝트를 진행 중이다. 운 좋게 내가 발제한 아이디어가 투표를 많이 받아서 내 아이디어로 실제 프로젝트를 진행하게 되었다. 과분하게도 너무 좋은 분들과 한 팀이 되어 많이 배우고 있다. 지금 진행하고 있는 프로젝트도 많이 기대가 된다. 8월 29일까지 8주동안 또다시 달리자!

Comments