2024년 7월 2일, GoTo Engineering Bootcamp과의 여정이 끝이 났어요. 부트캠프 동안의 경험을 요약한 8가지 주요 포인트를 소개합니다.
1. 무엇인가요?
GoTo Engineering Bootcamp이 무엇인지 궁금할 수 있습니다. 이 프로그램은 소프트웨어 엔지니어링에 대해 가르치는 9주 강도높은 프로그램으로, 협력과 의사소통을 강조합니다. 저에게는 개인적으로 GoTo Engineering Bootcamp은 9주 동안의 흥미로움, 피로, 도전, 지원 그리고 소중한 통찰력이었어요. 전 학교 채용을 통해 Gojek에 합류했는데, 이 부트캠프는 현실 세계 프로젝트에 참여하기 전에 프로그램의 중요한 부분이었습니다.
2. 부트캠프 전
첫 주는 부트캠프 자체에 대한 '온보딩(onboarding)' 기간이었습니다. 이 기간 동안 기본적인 일정은 소프트 스킬, 제품, 기술 자료 소개 등 다양한 세션들이 주를 이뤘습니다. 개인적으로, 이번 주는 다음 8주로 뛰어들기 전에 부드러운 적응 기간을 제공했어요.
3. 부트캠프
두 번째부터 아홉 번째 주는 부트캠프의 본격적인 주들이었고, 총 세 가지 메인 모듈로 나뉘어졌습니다. 코어 엔지니어링(Core Engineering) 네 주, 데브옵스(DevOps) 두 주, 그리고 모바일 두 주입니다. 부트캠프 동안에는 대부분 코치들로부터 기술 스킬을 배우기 위한 실습 코딩 세션을 진행했습니다. 게다가, 영어 말하기 능력을 향상시키기 위한 스피킹 드릴 세션과 타이핑 속도를 늘리기 위한 타이퍼레이서(Typeracer)도 진행했어요.
부트캠프에 참여해본 적이 없었던 저로써는, 이 부트캠프는 제 기대와 조금 다르게 진행되었어요. 제가 상상했던 부트캠프는 강연과 워크숍이 주를 이룰 줄 알았는데, 실제로는 조금 다르더라구요. 거의 강의가 없었고, 학습은 참가자들의 토론과 논쟁에 의해 이뤄졌습니다. 이는 저에게 놀랍게도 즐거운 시간이었어요. 게다가, 페어 프로그래밍(pair programming)을 실습했는데, 이는 서로 다른 접근 방식을 조율하고 의견을 나누며 토론하는 훌륭한 방법이었습니다.
4. 핵심 엔지니어링
핵심 엔지니어링은 팀 내에서 소프트웨어를 개발할 때 소프트웨어 엔지니어링의 최상의 실천 방법에 대해 배우는 모듈입니다. 이 모듈은 우리가 따를 필요가 있는 규칙들에 대한 소개로 시작합니다. 코드 스타일 일관성, readme 파일, 네이밍 규칙, 커밋 및 기타 규칙에 대한 세부 사항 등으로 구성되어 있습니다. 이 규칙 중 하나라도 위반하면 your-code
을 rm -rf해야 하고 처음부터 다시 시작해야 합니다. 이것이 rm -rf // Never your love code in our t-shirts의 의미입니다.
이 모듈은 부트캠프 중 가장 긴 모듈이었으며 4주 동안 진행되었습니다. 핵심 엔지니어링을 통해 우리는 좋은 코드 작성, 테스트 주도 개발, SOLID 원칙, 프로그램을 표현하는 방법, 코드 냄새, 리팩토링 등에 대해 배웠습니다. 저에게 기억에 남는 하나는 첫 번째 원리 사고에 관한 것입니다. 항상 가정에 도전하는 사고 방식으로, 항상 작성한 코드를 이해하는 것이 중요하다는 것을 배웠습니다. 이 원칙은 Gen AI 시대에 매우 중요한 원칙입니다.
5. 데브옵스
다음으로 이루어진 두 주는 코어 엔지니어링 이후에 데브옵스 였다. 마지막 프로젝트는 지난 두 주 동안 배운 모든 것을 활용하여 쿠버네티스 클러스터 내의 서비스의 테스트, 빌드 및 배포를 자동화하는 파이프라인을 만들고 마지막 날 코치들 앞에서 발표하는 것이었습니다. GitLab CI/CD, Ansible, Docker, Kubernetes를 배우는 것 외에도 Promethus와 Grafana를 사용한 관찰 가능성을 배웠습니다.
데브옵스는 참 흥미로웠는데, 각 참가자마다 독특하고 다른 문제를 가질 수 있어서 흥미로웠습니다. 이 문제를 해결하기 위해 우리는 결론에 도달하기 전에 에러를 읽고 문제를 이해하는 원칙을 가지고 있었습니다. 또한 데브옵스의 성격상 매우 중요한 가정을 버리기 위해 첫 번째 원리적 사고를 적용해야 했습니다.
6. 모바일 — 안드로이드
데브옵스 두 주를 거쳐서 코틀린을 활용한 안드로이드 개발을 배웠습니다. 안드로이드 개발의 기본인 코틀린 자체, 안드로이드 컴포넌트 및 리소스, 안드로이드 비동기 처리, 안드로이드 의존성 주입, 디자인 및 아키텍처 패턴, 안드로이드 지속성 및 유닛 테스트 등이 포함되어 있었습니다. 개인적으로 안드로이드 개발에 대한 경험은 대학 수업 과제에서 뿐이었는데 솔직히 아무 것도 기억나지 않았습니다 😅. 다행히도 안드로이드 주간에는 잊고 이해하지 못했던 내용을 명확하게 설명할 수 있는 조밀한 자료가 제공되었습니다. 이 모듈의 마지막 프로젝트는 원격 API 호출로부터 항목 목록을 보여주는 안드로이드 앱을 만드는 것이었는데, 간단해 보이지만 제게는 꽤 도전적이었습니다.
7. 모바일 — iOS
부트캠프의 마지막 주제는 iOS 개발이었습니다. 이전에는 Swift와 iOS 개발 경험이 없어서 이번 주에 대한 기대를 걸지 않았습니다. 그러나 iOS 개발은 정말 흥미진진했습니다. Swift 같은 이상한 점들을 제외하고는 경험은 훌륭했습니다. 프로토콜 같은 것은 다른 언어에서의 인터페이스와 같고, URLRequest 헤더나 UserDefaults에서 키-값 쌍을 설정할 때 값이 먼저 오는 등의 특이한 점들이 있었습니다. 이 모듈에서도 안드로이드와 유사하게 마지막 프로젝트가 있었는데, 우리가 만든 앱은 원격 API를 호출하고 응답을 보여주는 것이었습니다.
8. 회고
이 부트캠프를 통해 많은 것을 배웠고, 정말 감사한 한 가지는 이 기회가 실수를 할 수 있는 안전한 장소를 제공하고, 재능있고 열정적인 코치들과 동료들과 협력하며 질문을 하고 공부할 수 있는 기회를 제공해준 것이었습니다.
여기까지 읽어 주셔서 감사합니다!