수료 후기에 앞서 적었던 회고 글을 다시 읽어보았다.
회고 글을 적을 당시 부스트 캠프 멤버십에 붙을 거란 생각을 하지 않았다.
내심.. 붙었으면 좋겠다!! 라고 생각은 했지만 붙을 거란 기대는 하지 않기로 했다.
아래 링크는 챌린지 수료 당시 적었던 글이다.
https://jja2han.tistory.com/360
챌린지가 끝나고 이것저것 하기 보단 개인적인 시간을 보낸것 같다.
챌린지에 떨어질 것 같아서 마음준비도 하고, 챌린지때 배운 내용을 정리했다.
무엇보다 큰 변화는 코테 언어를 C++에서 Kotlin으로 전환한것이었다.
챌린지를 하면서 가장 크게 느꼈던 점은 Kotlin이란 언어가 굉장히 매력적인 언어라는 점이었다.
따라서 기존 언어인 C++을 Kotlin으로 변환하는 시간을 가졌다.
https://github.com/jaehan4707/KIL
부스트캠프 결과 발표 전까지 Kotlin으로 알고리즘을 풀고 이것저것 정리해보았다.
그러다가!!
멤버십에 합격했다는 메일을 받았다.
솔직하게 출석현황이 많이 좋지 않아서 마음고생도 많이 했고, 걱정도 많이 했다.
부스트캠프 취지 상 열정적으로 배우려는 사람을 원하고, 뽑는거 같아서 내가 열심히 한것과 별개로 출석현황이 많이 좋지 못해서
떨어질거라고 생각을 했었다.
챌린지를 하고, 멤버십 결과를 기다리는 사람들에게 말해주자면 본인이 정말 열심히 했다면 충분히 합격할 수 있다는 사실을
가르쳐주고 싶다.
멤버십
멤버십 일정은 챌린지보다 빡빡하지 않았다. 떨어질것이라는 두려움이 없어서 그랬던것도 있지만, 챌린지라는 훈련소에 적응한 뒤 멤버십 과정은 그렇게 힘들지 않았다..(라고 초기에 생각했다)
챌린지와 멤버십의 차이를 요약하자면
- 챌린지는 CS와 Kotlin 언어를 배우는 과정 (Android 기준)
- 멤버십은 Android에 전반적인 기술을 배우는 과정
이라고 생각하면 편하다. Kotlin과 Android를 다른 분야의 언어인 (JS,Web)와 (Swift,IOS)로 대체한다고 생각하면 편할 것이다.
개인적으로 나는 전공자라 CS에 대한 이해보다는 Kotlin과 Android 기술, 프로젝트 경험을 쌓고 싶어서 지원을 했고,
챌린지 과정은 나의 만족감을 채워주지는 못했다.
멤버십에 대해서 쭉 이야기 해보자면 다른 분야는 잘 모르겠지만, Android 분야는 한 달에 2가지 미션이 주어진다.
1,2주차 미션 3,4주차 미션 5주차 휴식기로 구성된다.
작년 기수였던 친구가 하는말은
휴식기 있는거 완전 개꿀아니냐?
라고 했다. 일정만 듣고는 나도 엄청 편할것 같다고 생각했다.
사실은 아니었다....
4-2학기와 병행하고 있었기 때문에 학교 수업, 튜터, 마스터 클래스, 미션 수행, 학습을 병행하니 몸이 남아나지 않았다.
멤버십에서 하는 모든 활동은 정말 만족스러웠다.
학교의 커리큘럼에서 안드로이드 관련 분야는 비주류 분야였기 때문이다.
그런 비주류 분야에서 배웠던 지식으로는 개발자로 나아갈 수 없다고 생각했고, 부스트 캠프의 Android 커리큘럼은
정말 풍족했고 많은 도움이 되었다.
그리고 미션을 진행하면서 배정받았던 현업 개발자 즉 멘토님과의 대화는 정말 나의 가치관을 많이 바꿀정도로 도움이 되었다.
왜 그 기술을 선택했나요?
그 기술에 대해서 자세히 아나요?
다른 방향성이 있지 않을까요?
와 같은 질문들을 공통적으로 하셨던 것 같다.
즉 엄청난 결과물이 아닌 "왜"라는 것에 포커스를 맞추셨던것 같고, 시간이 지나면서 "왜"가 중요한 이유에 대해서 깨닫게 되었다.
그리고 멘토님의 코드 리뷰는 어떻게 하면 코드 작성자가 아닌 다른 사람이 읽을 때 가독성이 좋은 코드를 작성하는데 많은 도움이 되었다.
- MVVM이 뭐야?
- Android 생명주기는 뭐야?
- Activity와 Fragment의 차이는 뭐야?
와 같은 Android 개발자라면 알아야 할 내용도 나는 명확하게 답변 하지 못했기에, 기본적인 내용을 많이 배울 수 있었다.
페어 프로그래밍
멤버십을 진행하면서 인상 깊었던 경험은 페어프로그래밍이었다.
페어프로그래밍에 대해선 경험이 없었고, 같이 결과물을 만드는 협업인가?와 같은 생각이 기본적으로 있었다.
하지만 협업과 페어프로그래밍은 비슷하면서 많이 달랐다.
항상 줌을 켜면서 같이 작업해야했고, 서로의 코드 스타일, 패키지 구조, Activity와 Fragment, LiveData vs Flow와 같은
서로 다른 견해에 대해서 맞춰나가는 작업이 필요했다.
나는 이걸 그룹 프로젝트를 진행하기 전에 해서 정말 다행이라고 생각했다.
페어프로그래밍을 하면서 페어분과 더 좋은 방향성을 찾기 위해서 많은 이야기를 나눴고, 그룹 프로젝트에서도 해당 경험을 살려서
팀원들의 니즈를 충족시키는 프로젝트를 만들 수 있었다.
그리고 분업과 협업의 차이점을 느낄 수 있었다.
그룹 프로젝트
멤버십 과정이 끝나고 기다리고 기다렸던 그룹 프로젝트가 시작되었다.
대부분의 캠퍼분들이 경기도 ﹒ 서울에 살았고, 오프라인 미팅이 사실상 불가능 했기에, 많은 두려움이 있었다.
팀원을 구하지 못하면 어떻게 되는거지?
오프라인 미팅을 할 수 없는 내가 팀에 들어가면 민폐가 아닐까.. 라는 생각을 굉장히 많이 했다.
운이 좋게도 안드로이드 분야에서는 같은 지역 사람으로 3명 구성되었다.
백엔드만 구하면 되는 상황이었는데,
그때 당시에는
안드로이드와 백엔드가 오프라인 미팅을 굳이 할 필요가 있을까?
라는 생각이 지배했었다. 협업 경험이 적었던 나는 같은 분야끼리의 소통만 원활하게 진행되면 된다고 생각했었다.
지금 생각해보면 굉장히 잘못되고, 안일했던 생각이었다.
여담으로 백엔드 분들이 팀에 참여했는데, 오프라인 미팅의 가능성이 없어서 우리팀에 들어왔다고 하셨다..
뭔가 씁쓸한 느낌이었다.. ㅠ
1주차
그룹 프로젝트 1주차는 아이디어를 선정하고, 기획하는 단계였다.
아이디어가 결정되기 전에 나는 주도적인 성격이 아니라고 생각했다.
팀원들의 의견을 따라가는것이 편하고, 아이디어를 제시하는쪽이 아닌, 결정된 아이디어를 개선하는 성격이 강하다고 생각했다.
하지만 각자 아이디어를 결정하는 시간이 있었고, 나는 굉장히 욕심이 많다는것을 느꼈다.
혼자 아이디어를 생각하면서 적었던 내용이다.
물론 내가 제안한 아이디어가 선택되지 않았지만, 이건 그룹 프로젝트이고 모두의 니즈를 충족시키기에는 내가 생각했던 주제는
조금 맞지 않다고 생각이 들었다.
대신 이미 제시된 아이디어를 조금 더 완성도 있게 개선해야겠다는 생각을 계속 가지고 있었다.
기획단계에서 아이디어, 디자인, 기획서, 프로덕트 백로그와 같은 것을 작성해야 했다.
백로그와 같은 단어는 생소했고, 작성하는데 많은 어려움이 있었다.
정말 기획이 중요하다는것을 백번 느꼈던 주였다.
이래서 기획자가 따로 있는건가? 싶을 정도로 개발과 기획은 비슷한듯 달랐다.
2~5주차
2주차부터 5주차까지는 개발 위주로 진행되었다.
그룹 프로젝트를 하면서 느꼈던 점은 다음과 같다.
서로 간의 코드 스타일은 다르고, 통일하는 시간이 정말로 필요하다.
Git repository의 패키지 컨벤션도 지켜야했고, commit 컨벤션, kotlin 컨벤션, Android 컨벤션등 정말 지킬것이 많았고,
실제로 나는 지키지 못해서 많은 수정을 했다.
이러한 컨벤션을 지키기 위해서 우리팀은 CI로 코틀린 컨벤션을 지키는 ktlint 검사를 적용했고, 효과는 대단했다.
Github Action을 처음 도입해봤는데, 한번 설정해놓으면 개발에만 집중할 수 있어서 정말 편리했다.
그 외에도 Firebase App distribution을 CD로 적용해봤다.
https://jja2han.tistory.com/408
https://jja2han.tistory.com/409
분야 간의 소통이 정말 중요하다
같은 분야에서도 소통이 정말 중요하지만, 다른 분야 특히 백엔드와의 소통이 정말 중요하다고 느꼈다.
언어적인 차이도 있고, 분야간의 차이점이 있어서 많이 어려움을 느꼈다.
Api에서 데이터를 받아오고, 보내는 과정에서 데이터 형식의 일치가 필요했고, Http 응답 내용물의 형식도 통일해야했다.
이러한 부분에서 백엔드와의 오프라인 회의가 정말 필요하다고 느꼈던것 같다.
개발 외적으로 이러한 소통 문제 때문에 개발이 지연되는것은 조금 아깝다고 느꼈다.
개발과 문서화를 동시에 하는 것은 정말 힘들다.
프로젝트의 목표가 개발을 하면서 겪었던 트러블 슈팅과 학습 기록을 문서화하는것이었다.
문서화가 얼마나 중요한지 알고 있었지만, 완성하지 못한 프로젝트를 결과로 만들고 싶지 않아서 개발에 많이 집중했던것 같다.
내가 겪었던 문제와 그 해결과정을 문서화할려고 최대한 노력했지만, 개발을 하는 과정에서 겪었던 오류를 기록하기보다
해결하기에 급급해서 내가 겪었던 모든 문제들을 기록하지 못한것이 조금 아쉬웠다.
기획은 언제든지 수정될 수 있다.
기획단계에서 작업별로 마감기한을 정하고 우선순위를 정했다.
하지만 이러한 마감기한을 우리가 임의로 정했기 때문에 마감기한이 생각보다 길어지는 작업이 있었고, 의도치 않게 빨리 끝났던
작업도 있었다. 그리고 추가된 기능, 수정된 기능, 삭제된 기능등 초기 생각했던 기획과는 다른 방향성으로 개발된것도 있었다.
프로그램을 개발할때 설계가 중요한것처럼 프로젝트를 진행하는데 기획단계가 정말 중요하고, 단단하게 하는것이 추후의 개발 비용을
낮춘다는것을 절실히 느낀것 같다.
느낀점
프로젝트를 진행하면서 힘든점도 많았고, 좋았던 점, 뿌듯했던 점도 정말 많았다.
6주라는 기간이 짧다면 짧고, 길다면 긴 기간이라고 생각한다.
이러한 기간내에 번듯한 결과물을 내기에는 많은 노력이 필요하다.
초기에 선택했던 주제에 대해서 많은 분들이 시간 내에 하기 어려울것이다. 너무 어려운 기술이다라는 우려가 있었고,
실제로 개발 속도가 다른팀에 비하면 느리다는 얘기를 들었고, 많이 불안했었다.
하지만 이러한 불안감을 자극제로 더 열심히 했고, 팀원들끼리 밤을 새우는 날이 많았다.
그렇기 때문에 초기에 목표했던 앱 배포를 할 수 있었다.
물론 완벽한 앱은 아니지만, 처음으로 앱을 배포했다는 그 경험은 너무 소중하고 뿌듯했던것 같다.
https://play.google.com/store/apps/details?id=boostcamp.and07.mindsync&hl=en-KR
해당 주소는 팀 프로젝트의 모든 과정이 담겨있는 소중한 레포지토리이다.
https://github.com/boostcampwm2023/and07-MindSync
앞으로..
팀원들과 상의해서 조금의 휴식기를 가지고 기존의 프로젝트를 개선하기로 했다.
새로운 프로젝트를 하기보단 기존의 프로젝트를 더 완성도 있게 하고, 이력서와 포트폴리오를 작성하는것이 맞는것 같다고 생각한다.
부스트캠프를 하면서 많은 멘토분들이 다양한 프로젝트도 좋지만, 하나의 완성도 있는 프로젝트와
그 프로젝트에서 사용한 기술들에 깊은 이해도와, 깔끔한 이력서와 포트폴리오도 중요하다고 얘기를 해주셨고,
그에 따라서 선택과 집중을 할까한다.
개발자라는 직업에 있어서 부스트캠프가 굉장히 중요한 경험이 되었고, 첫걸음이라서 다행이라고 생각한다.
'Experience > 후기(코딩테스트,프로그램,프로젝트)' 카테고리의 다른 글
SSAFY 11기 수료 후기 (4) | 2025.01.05 |
---|---|
Jetpack Compose 적용기[MindSync] (1) | 2024.03.06 |
부스트캠프 웹・모바일 8기 챌린지 수료 후기 (9) | 2023.08.07 |
2023 부스트캠프 웹 ﹒ 모바일 8기 지원 및 합격 후기 (3) | 2023.07.05 |
[어플리케이션 개발] - 연구실 프로젝트 리뷰 (1) | 2023.07.05 |