우아한테크캠프 인턴들의 8월의 마지막 회고
안녕하세요, 회고글을 작성하며 되돌아 본 8월은 그 어느 때보다도 교육 진행에 변수가 많았습니다. 서울/경기지역 사회적거리두기가 2.5단계로 격상됨에 따라 우아한형제들도 다시 전사 재택근무에 돌입했고, 이에 따라 온/오프라인을 병행했던 우아한테크캠프 교육 또한 8월17일을 기점으로 전체 온라인 교육으로 전환되었습니다.
교육 구상 단계에서부터 상황에 따라 언제든 전체 온라인으로 전환할 수 있도록 사전 준비는 하고 있었지만, 교육 후반부에는 더욱 긴밀한 커뮤니케이션을 요구하는 팀 프로젝트 교육이 계획되어 있어서 온라인으로만 진행해야 한다는 것이 쉽지 않은 결정이었고 이에 따른 아쉬움도 많았습니다. 그럼에도 불구하고 성공적인 마무리를 위해 꿋꿋이 교육을 완성해 주신 윤지수/정호영 마스터님과 마지막 프로젝트까지 최선을 다해주신 30명의 교육생분들께 감사와 격려의 말씀을 전하며 우아한테크캠프 8월 회고글을 시작하겠습니다.
지난 7/1(수)에 시작한 테크캠프 3기는 무더위가 여전히 한창이던 8/28(금)에 막을 내렸습니다. 교육생분들의 고충을 파악하고자 8월에는 1:1 면담을 희망하신 분들을 대상으로 한 분씩 만나뵙기도 했는데요. 짧은 기간 내에 주어진 조건을 고려하여 기획서의 요구사항들을 구현하다 보니 밤샘을 하며 아침을 맞이했다는 분들도 있었고, 점점 복잡해 지는 요구사항과 강도가 세지는 프로젝트로 인해 벅차다는 의견도 많았습니다. 하지만! 그렇기 때문에 짧은 시간동안 목표했던 것의 이상을 학습하고 있어서 뿌듯하고, 하루하루 시간이 너무 빠르게 지나가고 있어서 아쉽다고 이야기 해주시던 것이 기억납니다. 아마 교육생분들께는 찰나 같았던 한 달이었겠지요?ㅎㅎ
그럼 테크캠프 3기를 시작하기 전 어떤 목표를 갖고 과정을 계획했었을까요? 당시 모집하면서 아래와 같이 설명드린 바 있습니다.
8주 동안 2주 단위의 미니 프로젝트 네 개로 이루어져 있으며, 실제 서비스를 반복적으로 만들어보는 학습을 통해 하나의 서비스를 이루는 전체 데이터의 흐름과 시스템의 구조를 파악할 수 있는 것을 목표로 진행합니다.
마지막 8월 한 달은 총 세 개의 프로젝트가 진행되었습니다. 특히 네 번째 마지막 프로젝트는 세 명의 팀원이 한 조가 되어 기존 프로젝트 수행기간(2주) 보다 일주일이 추가된 3주의 시간동안 실제 서비스를 직접 구현했습니다.
그럼 각 프로젝트는 실제로 어떻게 진행이 되었는지, 그 과정에서 생각지 못했던 어려움은 과연 무엇이었는지, 그 과정에서 어떤 것들을 배우고 성장할 수 있었는지 등 여운이 채 가시지 않은 마지막 한달의 기록을 8월의 회고글을 통해 되돌아 보겠습니다.
우아한테크캠프 교육생 분들의 글 전문에서 일부를 발췌하였습니다. 전문은 개별 글의 하단에 첨부된 링크로 이동하여 읽어주세요
남현우님의 글
[친절과 불친절 사이 - 우아한 테크 캠프 회고]
연결 고리
사실 제일 핵심적으로 하고 싶었던 이야기가 바로 이 부분이다. 전 프로젝트와 다음 프로젝트는 내용상의 연결고리는 찾아보기 힘들지만, 그것을 구현하는 방법에는 연장 선상에 놓여 있었다. 2주차 프로젝트에서 SPA를 바닐라 JS로 만들고 나니, 리액트가 제공해주는 상태 관리 시스템이 너무 절실했다. 그런데 3주차에 바로 옵저버 패턴 등을 이용해 상태 관리에 대한 학습 내용 + 구현 사항을 제공 받았다. 무엇인지 모를 갈증을 남긴 채 다음 프로젝트로 나아가면, 그 곳에서 물(인줄 알았지만 사실 숙제)을 제공받았다. 그 다음의 경우는 3주차에서 4주차로 넘어오는 프로젝트에서는 3주차에 학습한 내용이 4주차에 라이브러리로 제공되니 그 작동 원리를 생각/짐작하며 이용할 수 있게 되었다.
결핍을 통해 갈증을 느끼게 하고, 그것에 대한 학습의 기회를 제공한다. 혹은 학습의 기회를 제공하여, 이용하게 될 도구가 미리 어떻게 작동하는 지, 언제 필요한 것인지 이해하게 한다. 참 좋은 방법의 교육 형태라고 생각한다. 이것에 물 들었는지, 혹은 이러한 교육 방식이 너무 좋았는지 이제는 알아서 이렇게 하고 있다. 4주차 프로젝트에 Redux를 제약 조건으로 넣어 놓았더니, Flux 패턴과 redux를 공부하고, context api를 리덕스 처럼 쓸 수 있는 방법에 대해 고민하여 프로젝트에 적용 중이다.
어떻게 보면 실제로 웹이 개발된 과정을 직접 경험했는지도 모르겠다. 순수한 HTML/CSS 그리고 바닐라 자바스크립트에서로만 운영되던 웹 서비스들이, 유저와의 인터랙션이 많아지면서 SPA 기반으로 바뀌었다. 이 과정에서 리액트 앵귤러와 같은 라이브러리/프레임워크 등이 등장했다. 이러한 도구들이 점진적으로 발전하며, 그 중에 React에서는 상태를 더 효율적으로 관리하기 위한 방법으로 내놓은 것이 Flux 패턴이다. 그리고 그것을 개선 /발전시킨 것이 Redux라는 라이브러리다. 하나도 없던 상태에서 하나씩 추가되는 것을 경험하니 그 감회가 새롭다. 역설적이게 모든 것을 이용할 수 있는 지금에서야 말이다.
친절과 불친절 사이 - 우아한 테크 캠프 회고 전문읽기
조찬기님의 글
[나는 비로소 성장했습니다. (우아한테크캠프 3기)]
이걸 구현하라고? 마우스 이벤트로 드래그 & 드랍 구현
우아한테크캠프의 교육 과정은 쉽지 않습니다. (교육을 담당하고 있는 코드스쿼드 또한 동일합니다.) 특히 현재 잘 정제되어있고 나와있는 라이브러리를 사용하지 않고 직접 구현해 보는 훈련을 시키는 점 때문인데요.
하나의 예시로, 한 프로젝트에서 드래그 앤 드랍을 마우스 이벤트로 직접 구현하는 과제가 있었습니다. 이런 어처구니 없는 요구사항 덕분에 처음에는 적잖이 당황했습니다. 심지어 어떤분은 크롱님께 “드래그 앤 드랍을 사용안하고 어떻게 구현해요?” 라고 질문하더라고요.
고생했지만 간신히 구현할 수 있었습니다. 완성하고 보니 드래그앤드랍 API를 사용할 때와 코드가 크게 다르지 않았습니다. 이전엔 말도안된다고 생각했던 문제를, 풀고나서 보니 그만큼 행복함이 몰려왔습니다.이게 바로 성장하는 즐거움이 아닐까요??
나는 비로소 성장했습니다. (우아한테크캠프 3기) 전문읽기
추연호님의 글
[Github Actions + CodeDeploy + EC2 자동배포하기]
안녕하세요. bmart-5 팀의 추연호 입니다.
이번 프로젝트에서 Github actions와 S3, CodeDeploy를 활용하여 EC2에 자동 배포하는 환경을 구축했는데, 삽질의 과정이 꽤나 고되고, 힘들었기 때문에 도입을 고민하시는 다른 팀들의 시간을 줄여드리고자 간단하게 글을 작성하려고 합니다.
참고로 저희 팀의 배포 방식은 프로젝트 전체를 압축해서 EC2에 업로드하는 방식인데, 빌드 결과물만이 아니라 풀스택 코드가 전체가 업로드 되는 방식이라 (node_modules 포함 용량이 150MB 이상) 최적화된 방법은 아닙니다. builld 결과물만 배포하거나, node_modules 를 캐싱하거나, 클라이언트와 서버를 분리해서 배포하는 등으로 팀별로 최적화하신다면 조금 더 가볍고 안정적으로 배포하실 수 있을 거라고 생각합니다.
그럼 제가 성공한 방법에 대한 간단한 Step by Step 튜토리얼 방식으로 진행해 보겠습니다..!
중략
개인적으로는 나름 DevOps 영역을 경험해볼 수 있어서 의미있는 삽질이었습니다. AWS 문서와도 친숙해질 수 있는 시간이었습니다.
Github Actions + CodeDeploy + EC2 자동배포하기 전문읽기
전은정님의 글
[마음의 소리 (우테캠 3기를 마치며 😘)]
😖 다 아는 게 아니야, 모른다는 것을 모를 뿐
3기 테크캠프는 mission-driven-education 였는데요, 2주마다 새로운 미션에 대한 기획서와 그에 대한 세부 요구사항이 나옵니다. 이 놈들은 고약한 특징이 있는데요 (음.. 주관적..), 첫 눈에는 상당히 낯이 익고, 한 번 쯤은 해 본 것 같고, 뭐 하던 대로 뚝딱뚝딱 해치울 수 있을 거 같은 느낌을 준다는 것입니다.
그렇지만 주어진 대로 미션을 수행하다보면 이 놈들이 우리들의 약점을 밝혀내기 내기 위해 얼마나 정성껏 준비된 녀석들인가 를 깨닫게 되고, 아는 척 하지마! 라는 외침이 들려옵니다.
여기서 주의! 3기 테크캠프는 내가 모르는 것이 무엇인지를 알게 해주지만 그걸 밥을 떠먹여주는 듯 하나부터 열까지 상세히 알려주는 친절한 곳은 아니었습니다. 미션을 완수하는 데 필요한 지식이나 기술들을 강의를 통해 쫘라락~ 하고 다 알려주지 않습니다. 강의 또한 가장 핵심적인 부분만 건드려주고, 좋은 개발자가 되기 위해 알아야 할 키워드와 개념들을 던져주는 방식입니다. (+ 크롱과 호눅스의 희한하면서 웃긴 농담 혹은 만담 타임 ㅋㅋㅋ)
테크캠프 3기 친구들이 너무 멋져서 크롱과 호눅스한테까지 가기도 전에 많은 질문들이 해결되곤 했어요. 멋진 친구들을 모아놨으니 함께 열심히 구르다보면 결국 함께 성장한 모습을 발견하게 될거야 라고 하는 테크캠프의 큰 그림이지 않을까..
마음의 소리 (우테캠 3기를 마치며 😘) 전문읽기
장해민님의 글
[Frontend Designer]
도구로서의 JavaScript
프로그래밍을 할 때 소설가를 자주 떠올리곤 합니다. 그들은 기억에 남는 캐릭터, 잊을 수 없는 스토리를 독자들에게 선사하기 위해 골머리를 앓습니다. 맞춤법에 극도로 신경을 쓰거나 한국어와 한글의 기원과 어원, 역사를 공부하고 떠올리면서 썼다간 책을 완성하기 어려울 겁니다. 우리도 마찬가지입니다. 프론트엔드 개발자에겐 마치 작가와 독자의 관계처럼 직접적으로 교류하는 사용자가 있습니다. 나의 작품을 소비해 줄 사람들에게 더 나은 경험과 가치를 선사하고 싶습니다. 그러기 위해선 기술의 원리보다 그들의 마음을 읽는 것이 우선입니다.
기술을 깊게 이해하고 있는 것이 중요할 때가 있습니다. this가 무엇을 가리키는지 정확히 몰라도 모든 것을 만들 수 있지만 알고 있다면 더 많은 것을 더욱 멋진 방법으로 만들 수 있겠죠. 조금 더 효율적이고 고급스러운 코드를 작성할 수도 있습니다. 하지만 처음부터 이 알쏭달쏭한 언어의 밑바닥부터 샅샅이 살펴볼 필요는 없습니다. 기술이 필요한 순간이 찾아오면 그때 해내도 늦지 않습니다.
저는 종종
어떻게 만들지 보다 무엇을 만들지 생각합니다.
JavaScript가 어떤 원리로 작동하는지 보다 이것으로 무엇을 할 수 있을지 생각합니다.
나에게 진짜 필요한 것이 무엇인지 생각합니다.
Frontend Designer 전문읽기
캠프 교육생 분들은 프로젝트로 바쁜 나날을 보내시면서도 기술공유를 위해 하루하루를 기록하셨고, 그 중 앞으로 더 많은 분들에게 도움이 되길 바라며 글의 일부를 보내주셨습니다. 이 글이 우아한테크캠프 교육생 분들의 값진 노력의 결과물에 유종의 미를 더할 수 있기를 바랍니다. 그리고 아쉽게도 이번 8월 회고글에 선정되지는 못했지만 글을 보내주셨던 분들에게도 다시 한 번 감사의 인사를 드립니다. 두 달 동안 정말 고생 많으셨습니다. 우리 또 만나요!