블로그 첫 번째 글이 몰입캠프 회고록이라니...!
기술 블로그를 시작한 건 올해 겨울이었지만(원래는 github.io였던 것...)
이런저런 이유로 여름이 되면서 티스토리로 갈아탔다.
개발로 불태웠던 7월의 기록을 얼른 남기고 싶었지만 생각보다 귀찮아서(?) 미루고 미루다가 드디어 쓰게 된다.
(작성 시점에서 거의 두 달 전 일이라 가물가물 하다 ^-^;)
몰입캠프 지원 동기
몰입캠프는 학생들이 자율적으로 집중 개발 경험을 하는 프로그래밍 캠프입니다.
한마디로 코딩 캠프이다. 여름학기 학점교류 명목으로 지원했지만 사실상 강의가 아니라 실습이다. AtoZ를 스스로 배워야 하는! 내가 몰캠에 지원한 이유는 뭘까?
몇 년 전 몰캠 지원 공고를 보고 고민했던 적이 있다. 그때는 지원서 분량을 보고 쫄아서 지원을 포기했던 것 같다. 그래서 언젠가 한 번 해보고 싶은 생각이 들었다.
대학원 진학을 계획하고 있는 나는 종종 대학원에 가야 하는 이유에 대해 고민한다. 컴공은 학사 후 취업이란 길이 열려있잖아...? 이런 생각을 자주 하는데, 이번 기회를 테스팅 툴로 써보고 싶은 마음도 있었다.(더 늦으면 안 될 것 같았다.)
여름에 연구실 인턴을 안하면 할만한 생산적인 활동이 필요하기도 했고, 새 친구도 사귀고 싶고... 암튼 이런저런 이유들로 좋은 기회라는 생각이 들었다.
첫 주차 기록
몰입캠프 개강일!
오전 11시까지 카이마루에서 모이라고 해서 아침 7시에 일어났다. 피곤해...
엄마가 데려다주셔서 차 안에서 푹~ 잤다.
출근 러시가 있었는데도 3시간이 안 걸린걸 보면 서울과 대전은 참 가깝다. 광주랑은 다르게...
그나저나 카이스트 처음 와봤다.
서현이 만나서 점심으로 퀴즈노스를 먹었다. 퀴즈노스는 비싸지만... 맛있어!
몰입캠프 기간 내내 기숙사-N1 건물 이동하면서 마주쳤던 정겨운 곳ㅎㅎ
점심 먹고서 OT를 들으러 갔다. 하루 절반 이상을 거주하게 될 몰캠 주요 출몰지역 N1 건물로,,
장병규 의장님이 영상으로 파이팅 메시지를 보내주셨는데, 이타적 이기주의라는 키워드가 인상 깊었다. 자유와 방종은 한 끗 차이...
OT 후에는 아래층으로 내려가 실습실을 소개받고, 팀메이트를 정하고 자리 배정하고... 속전속결!
1주차 주제는 탭 구조를 활용한 안드로이드 앱 제작이었다.
처음에 탭 구조가 뭐지? 했는데 그냥 화면 전환을 말하는 거였다. 세부적으로는 이렇다.
탭1 | 나의 연락처 구축. 휴대폰의 연락처 데이터를 활용하거나, JSON 형식을 이용해서 임의의 연락처 데이터를 구축. 추천: ListView나 RecyclerView 등을 이용해서 데이터 보여 주기 |
탭2 | 나만의 이미지 갤러리 구축. 대략 20개 이상의 이미지 필요. |
탭3 | 자유 주제 |
자주 쓰는 필수 기능들 위주로 구성돼 있었다.
다만 탭 3 자유 주제를 정하는 게 좀 어려웠다. 탭 1, 2와 일관성 있는 주제여야 하는 데다가 앱 전체적인 테마 결정에도 영향을 주기 때문에 오래 고민한 기억이 난다.
고민 끝에 우리 팀은
"스포츠 트레이너가 서로 프로필을 공유하고 운동을 배우는 앱"
을 만들기로 했다.
탭 1은 운동 강사들의 프로필, 전화번호, 운동 종목
탭 2는 프로필 별로 자신의 사진(바디프로필, 경력사항, 운동센터 등)
탭 3은 즐겨찾기 탭
이렇게 구성했다. 자연스럽게 Trainer Hub 라는 앱 이름이 떠오름!
tmi) 지피티는 앱 이름 추천에도 꽤나 소질 있다.
개발을 시작하며
IDE로 안드로이드 스튜디오를 추천하길래 설치하려고 봤는데, 이미 설치돼 있었다. 아마 3월에 flutter 독학하면서 쓴 것 같다! 그래도 삭제 후 재설치했다. (버전 디펜던시... 랩실에서 겪은 ptsd가 떠올라서 그랬다.ㅋㅋ)
ios 개발을 너무너무 경험해보고 싶은 나였지만, 크로스플랫폼 or 안드로이드 개발을 권장하는 데다 내 기기 스펙의 한계도 있었다. 조금 아쉽지만 뭐 어때!
안스는 logcat에 에러 로그가 잘 나와있더라... 그동안 vs만 사용해 왔는데 이것도 나름 좋았다.
첫날 과제였던 hello world 띄우기는 건너뛰고 탭 1 연락처 리스트뷰 구현하다가, 9시쯤 되어서 회식을 하러 갔다.
코틀린, git에 점점 익숙해지기
둘째 날 오전 첫 스크럼 회의가 있었는데, 어제 한 일/오늘 할 일/궁금한 점을 공유하는 회의였다. 하기 전엔 부담됐는데 다들 간단하게 말하는 가벼운 회의였다.ㅎㅎ
모두가 있는 자리에서 질문하고 답변을 공유할 수 있다는 점이 좋았다. 혼자 하는 시행착오도 중요하지만 이런 것도 정말 유익하다.
스크럼 후 방향성이 좀 잡히기 시작했는데, 우선 협업을 해야 했다. 각자의 IDE와 git repo를 연동했다.
이때부터 branch 컨벤션을 따라 PR과 merge를 해보면 좋았을 텐데...라는 생각이 든다. (결국 시도하지 않은 rebase와 나의 미숙함... -_-;)
첫날 Android Studio에서 R 클래스가 인식되지 않아 끙끙댔는데, 아침에 다시 보니 unresolved reference 문제여서 import 해주니 바로 해결됐다.
git에 push할 때 생기는 에러도 종종 만나볼 수 있었다. 그중 하나는 fatal: refusing to merge unrelated histories이다.
두 브랜치의 히스토리가 완전히 독립적으로 생성되었기 때문에 발생하는 문제다.
기능별로 브랜치를 생성해서 개발하고 있었는데 tab3 브랜치를 로컬, 원격 각각 만들어서 그런 것 같았다.
이럴 땐 git pull origin tab3 --allow-unrelated-histories 로 브랜치 강제 병합을 하면 된다.
이런저런 시행착오 끝에 3일 간 이룬 것들!
- 탭1 연락처 데이터 json 연동, 추가 및 삭제 기능 구현
- 탭1 즐겨찾기 기능
- 탭1 다이얼 기능
- 메인 페이지 애니메이션 구현
- 탭2 뒤로가기, 즐겨찾기 기능
- 하단 내비게이션 바 디자인 변경
- 앱 컬러, 폰트 변경
- 탭3 카테고리 메뉴 구현
와! 혼자서 많은 걸 만들어냈다!
개발 시작 전에는 '기능 구현을 못하면 어떡하지' 에 대한 걱정을 했는데, 시작하고 나서부터는 '이 프로젝트를 통해 내가 뭘 배울 수 있지' 에 대한 고민을 했다.
챗gpt 프롬프팅으로 웬만한 기본 기능은 구현 가능하기 때문이다.
코틀린 노베였던 내가 3일 동안 앱이라고 부를 수 있는 것을 만든 걸 보면... 아무래도 그렇다.
gpt를 활용해서 좋은 결과물을 만들어내는 건 바람직하지만, 그렇다고 너무 의존하면 내가 얻는 지식은 없을 것 같았다.
그래서 세운 규칙은 이렇다.
- 에러 핸들링 시 챗봇의 도움을 받아도 되지만, 이전에 혼자 고민해 보는 시간을 가지기
- 기능 구현의 경우 gpt의 코드를 이해하고 작성하기(무지성 컨씨컨븨 자제!!)
앞 테이블 팀원은 아예 gpt를 안 쓰기도 하더라... 대다내
추가 기능 구현
일요일은 개발을 쉬었다! 대장금 면접 준비 겸 카이스트 도서관 탐방을 했다.
카이스트 도서관 대따 넓다.
월요일부터는 세부 기능들을 하나하나 구현했다.
탭 2 폴더, 이미지를 정렬하고 탭 1에서 즐겨찾기 한 연락처가 탭 3에 반영 안 되는 문제를 해결했다. 세부적인 ui를 피그마로 다듬어가면서 보충했다.
자투리 시간을 더 써서 개발할 수 있었는데, 면접 일정도 있고 해서 조금 힘을 빼고 개발했던 것 같다.
월요일 저녁 즈음 면접을 위해 서울로 올라갔다.
열차 타기 전 성심당 쇼핑을 하고 싶었는데, 촉박하게 도착해서 그냥 튀소만 사가지고 올라갔다.ㅋㅋ
개발 마무리: 산출물 정리
몰입캠프의 신기한 점은,
한 주의 끝이 수요일이라는 것 :D
수요일엔 각 분반 실습실에서 분반별 발표를 하고, 다음날에 전체 발표가 있다. 전체 발표에서는 금주의 픽으로 선정된 총 8개 팀이 발표한다.
프로덕트를 개발했으면 멋지게 포장하는 일도 중요하기 때문에 마지막 날에는 깃허브 리드미, 노션 산출물 페이지 작성에 시간을 들였다. 아래는 프로젝트 링크이다.
https://github.com/jaehee831/trainer-hub
GitHub - jaehee831/trainer-hub: 운동 관리 앱 Trainer Hub 입니다.
운동 관리 앱 Trainer Hub 입니다. . Contribute to jaehee831/trainer-hub development by creating an account on GitHub.
github.com
1주차를 마무리하며, 느낀 점
배운 점도 아쉬운 점도 많았던 몰입캠프 첫 주차였다.
새로운 사람들과 새로운 환경에서 개발할 수 있어 좋았고, 그냥 집에 있었다면 발휘하지 못하는 집중력으로 lean하게 프로덕트를 완성한 것도 좋았다.
또한 로컬에서 git을 연동해서 개발하는 경험을 해본 것도 의미 있었다.
에뮬레이터와 공기계 사이즈가 맞지 않아 컴포넌트 요소 사이즈를 조정하는 초보자 실수들도 많이 했다. 소중한 시행착오의 과정들!
탭 1의 연락처 데이터를 모바일 내장 DB인 Room에 저장해서 사용하는 팀들이 있었다. 나는 별도로 연락처 list를 만들어서 코드 단에서 해결했던 것 같은데, 조금 빨리 알았다면 Room을 써볼 걸 그랬다.
아쉬웠던 점은, git을 통한 협업이 부족했던 것과 면접 일정 때문에 개발에 풀집중하지 못했다는 것이다...
솔직히 이 정도면 나름 괜찮은데?라는 안일한 생각으로 개발에 임했던 것 같다.
분반 발표, 전체 발표날 다른 친구들의 앱을 보면서 많이 반성했다.
기능을 완성한 것에 만족하지 말고 어떻게 하면 디벨롭할 수 있을지 생각하는 개발자가 되어야겠다고 생각했다.
프-백이 어떻게 상호작용하는지 궁금했고, 내가 개발을 업으로 삼을 수 있을까? 에 대해서도 고민해 본 한 주였다.
이동욱 인프랩 CTO님 강연
목요일 전체 발표 끝나고 일정이 하나 더 있다.
말하자면 몰캠의 이스터에그인데, 바로 유명한 현업 개발자 분들의 강연 세션이다.
스타트업, 디자이너, CTO 등 다양한 자리에서 양질의 경험을 가지고 계신 분들이 오신다.
이번 주에는 인프랩 CTO 이동욱 연사가 오셨다. 강연 시작 전 이분의 기술 블로그를 읽어 봤는데, 굉장히 인상 깊었다.
서버 백엔드 엔지니어
이력서
jojoldu.github.io
강연 주제는
4번째 회사에 오기까지 했던 선택과 기준, 프론트와 벡엔드의 분업
좋은 개발자가 되기 위한 현실적인 고민들을 이야기해주셨다. 여러 인사이트를 얻었다.
좋은 개발 문화, 뛰어난 동료, 365/24 운영, 장애 경험 등...
1등을 목표로 하지 않는 조직에서는 아무리 성장해도 한계가 있다.
또한 예쁜 코드, 프로덕트보다 더 중요한 건 문제해결능력이라는 것.
어떤 어려운 상황에서 문제를 어떻게 해결했는지 흔적을 남기는 게 중요하다.
주어진 환경에서 “내가 제어할 수 있는 것들”에 집중하기,
억울한 일 투성이에서 불평만 할 것인가, 그 상황에서 무엇이라도 배우고 일어날 것인가
강연이 끝나고 질문을 하나 드렸다.
좋은 개발자란 무엇이라고 생각하시는지?
이동욱 연사님은 "꾸준히 할 수 있는지의 문제"라고 하셨다.
내가 적당히 좋아하는 일인가? 좋아하는 감정이 일시적인가?
공감 가는 말이다.
'Event' 카테고리의 다른 글
2024 대통령과학장학금 최종합격 후기 (1) | 2024.08.26 |
---|---|
SPARCS AI 스타트업 해커톤 2024 참가 후기 (0) | 2024.08.24 |
카이스트 몰입캠프 4주차 후기 (1) | 2024.08.24 |
카이스트 몰입캠프 3주차 후기 (0) | 2024.08.23 |
카이스트 몰입캠프 2주차 후기 (0) | 2024.08.23 |