프로그래머로 거듭나는 여정 부트캠프 경험기에서 얻은 교훈

프로그래머로 거듭나는 여정 부트캠프 경험기에서 얻은 교훈
Cozy CodingPosted On Jul 7, 20245 min read

작가가 이 글을 쓸 당시, 저는 곧 GoTo에서 소프트웨어 엔지니어링 부트캠프 여정을 마친 직후였습니다. GoTo는 인도네시아의 기술 기업으로, 온디맨드 교통, 전자 상거래, 음식 및 식료품 배달, 물류 및 이행, 그리고 금융 서비스를 제공합니다. 저는 캠퍼스 채용 프로그램을 통해 신입 소프트웨어 엔지니어로 GoTo에 합류했습니다. 이 채용 프로그램은 팀에 합류하기 전에 엔지니어링 부트캠프에 참석하도록 지원자들을 요구합니다.

BootcampImage

소프트웨어 엔지니어링 부트캠프라고 들으면 무엇이 생각나시나요? 제 생각에 소프트웨어 엔지니어링 부트캠프는 특정 프레임워크나 언어에 특화된 기술 학습만을 포함하며, 멘토들로부터 하루 종일 강의와 설명을 듣고 일부 최종 프로젝트 작업이 이루어지는 것으로 알려져 있습니다. 그러나 저는 이 GoTo 소프트웨어 엔지니어링 부트캠프에 참여하면서 제 생각이 틀렸음을 깨달았습니다. 이 부트캠프는 완전히 다른 경험이었고 상상조차 할 수 없었습니다. 여기서 기술적인 것뿐만 아니라 소프트웨어 엔지니어의 사고 방식, 업무 방식 및 습관까지 배웠습니다. 이 부트캠프로 나는 포괄적인 제품 엔지니어로 성장했습니다. 이 부트캠프는 "Engineering의 핵심", "DevOps", "Mobile(Android-Kotlin, iOS-Swift, Flutter)"의 세 가지 모듈로 구성되어 있습니다. 이 부트캠프를 통해 저의 소중하고 잊을 수 없는 경험을 느껴보세요.

작업 방식

소프트웨어 엔지니어로서, 우리의 목표는 모범 사례에 따라 좋은 코드를 작성하고 팀과 효과적으로 협업하여 제품을 신속하게 전달하는 것입니다. 이 부트캠프에서는 이러한 목표를 달성하기 위한 단계와 습관을 배우게 됩니다.

원칙과 모범 사례 구현

이 부트캠프에서는 SOLID 원칙, 테스트 주도 개발, 깔끔한 코드 등 소프트웨어 개발의 원칙과 모범 사례를 다시 소개 받았습니다. 우리는 이러한 원칙을 코드에 구현하도록 권장받았습니다. 이를 실행하는 것은 매우 어렵고 지치는 일이었지만, 마침내 이러한 원칙과 모범 사례를 구현하는 본질을 이해했습니다. 이러한 원칙과 모범 사례를 준수함으로써 더 견고하고 확장 가능하며 가독성이 높고 깨끗하며 버그가 적고 이해하기 쉬운 코드를 전달할 수 있습니다.

다른 사람과 협업

부트캠프 참가자로서 우리는 다른 사람들과 협력하고 개발 방법이나 의견이 다를 때 토의하며, 쌍이나 그룹에서 일할 때는 공통의 이해를 갖도록 가르쳐집니다. 어렵거나 기술적인 문제가 발생할 때는 항상 함께 토의하여 문제에 대한 해답을 찾습니다. 토의를 통해 브레인스토밍을 하고 문제를 해결하기 위한 가장 적합한 아이디어를 선택할 수 있습니다.

또한, 개발 중 사용되는 팀 표준 및 문서를 개발합니다. 이러한 표준은 개발 방법을 통일하는 데 유용합니다. 또한 새로운 사람이 합류할 경우 이러한 표준을 이해함으로써 팀의 작업 방식에 빨리 적응할 수 있습니다.

The Journey to Becoming a Great Programmer

우리가 협력하는 한 가지 방법은 페어 프로그래밍을 통해 이루어집니다. 이 작업의 어려움은 두 가지 다른 사고, 이해, 접근법을 결합하는 것에 있습니다. 그러나 이를 실행함으로써 서로 배우고 작업을 공유하며 서로를 평가하여 효과적으로 좋은 코드를 생성할 수 있습니다.

현실적으로 생각해보세요

구현 과정에서 종종 상충되는 다양한 원칙들이 있습니다. 부트캠프에서 배운 것은 때로는 우리가 사용하는 다양한 원칙 사이에서 중간 지점을 찾아야 하며, 그렇게 해야 개발 과정이 최적으로 유지될 수 있다는 것입니다. 또한 현실적으로 사고하는 것이 중요하다는 것을 배웠지만, 우리가 내리는 결정에는 강력하고 합리적인 이유가 있어야 한다는 것을 명심해야 합니다.

가능한 한 많은 작업을 자동화하세요

우리는 가끔 직접 작업을 수행할 때 실수나 간과할 수 있는 부분이 있습니다. 소프트웨어 개발에서 작은 실수가 큰 영향을 미칠 수 있습니다. 이를 줄이기 위해 우리는 가능한 작업을 자동화하여 인간의 개입을 줄일 수 있습니다. 핵심 엔지니어링에서는 코드 작성 표준화 과정을 자동화하여 모든 사람이 동일한 코드 작성 표준을 갖게 하고 있습니다(예: 변수 명명, 공백 등).

DevOps 모듈에서는 조심스러움이 필요하고 매우 시간이 소요되는 수동 배포 프로세스를 시도했습니다. 우리가 빠르고 자주 배포해야 할 때 문제가 될 수 있습니다. 그래서 CI/CD를 최대화하고 대부분의 작업을 자동화하려고 노력했습니다. 이를 구현함으로써 코드가 일련의 테스트를 통과했음을 보장하고, 배포 프로세스가 빨라지며 다운타임이 줄어듭니다.

'왜?'를 묻고 원인 분석하기

이 부트캠프에서는 우리에게 '첫 원리 사고'가 소개되었습니다. 기본적이고 간단한 요소들로 문제를 분해한 다음 해결책을 만들어내도록 요구하는 이 원리는 우리에게 문제의 뿌리 원인을 찾도록 장려합니다.

이 원리는 개발 중에 매우 유용할 것입니다. 예를 들어, 제품을 개발하는 작업을 받았을 때, 우리는 왜 그 제품이 필요한지를 파악하여 개발할 때 선택한 접근 방식과 도구를 결정할 수 있습니다. 또 다른 예는 오류를 발견했을 때, 뿌리 오류를 찾아내어 문제를 적절히 해결할 수 있습니다.

빠르게 배우기

8주 안에 소프트웨어 엔지니어링 관련 모든 것을 배우는 것은 불가능해 보입니다. 상상해보세요, 어떻게 한 주씩 안드로이드와 iOS 개발 관련 자료를 이렇게 많이 배우겠습니까. 그러나 실제로는, 개발 시간과 뒤떨어지지 않기 위해 빠르게 새로운 기술 스택을 배워야 하는 상황이 올 수도 있습니다. 이 부트캠프에서, 우리는 어떻게 빠르게 배워야하는지를 배웠습니다. 물론, 이해해야 할 첫 번째 것은 기초적인 지식과 관련이 있습니다. 기초를 배운 후에는 앞으로 개발과 관련된 배워야 할 자료를 탐구하고 매핑해야합니다. 그리고 계속 진행하면서 동시에 배울 수 있기 때문에 처음에 자세히 배울 필요는 없습니다.

화려한 열정을 가져보세요

저를 정말 감명 깊게 한 한 가지는 코치들이 우리에게 불꽃처럼 열정을 가져야 한다고 강조한 것입니다. 코치들이 우리를 가르칠 때, 저희는 정말 그 불꽃을 보았고 최선을 다하였습니다. 업무에 그 화려한 열정이 있을 때 우리는 그저 끝내기만 하는 것이 아니라 이해하려고 노력하고 최선을 다합니다. 우리가 하는 일을 더욱 사랑하게 되고, 그에 대한 열정을 계속 가지고 일할 수 있습니다.

결론

The Journey to Becoming a Great Programmer

부트캠프를 통해 한 무더운 여정이었지만 매우 보람찼습니다. 개발 및 업무 처리 시에 적용할 수 있는 많은 것들을 배웠습니다. 이 여정을 함께해 준 모든 부트캠프 참가자, 코치, 그리고 학습 관리팀에게 특별한 찬사를 보냅니다. 이들과 함께 이야기 나누고 배우며 협력할 수 있었던 기회가 저에게 주어져 영광으로 생각됩니다.

이 여정의 끝은 아닙니다. 위대한 프로그래머가 되기까지의 길은 아직 멀고도 험난합니다. 그러나 이 부트캠프는 미래에 계속해서 학습하고 성장할 수 있는 제 적축을 제공할 수 있습니다. 여러분도 이 원칙들을 배우고 적용하여 더 나은 소프트웨어 엔지니어가 되길 바랍니다.