
오늘 드디어 코드스테이츠 소프트웨어 엔지니어링 pre 4주 과정이 모두 끝났다. 그동안 배운 것들과 내가 부족한 것과 개선할 점들을 정리해 본다. 이 과정은 javascript 언어(node.js)를 주로 사용하면서 프론트엔드와 백엔드 개발자로 성장하는데 필요한 것들을 배우는 과정이다. 코드스테이츠 홈페이지에 소개된 간단한 소프트웨어 엔지니어링 커리큘럼은 다음과 같다.

개발자에게 꼭 필요한 기술들 특히 협업에 필요한 기술 등을 자기주도학습과 페어 프로그램, 그리고 온라인으로 효과적으로 배울 수 있는 좋은 개발 부트캠프라고 생각한다. 지방에 살고 있는 나에게 코드스테이츠는 개발자가 되기 위한 기회의 한 줄기 빛이 되었다.
4주간 공부한 내용들 정리
1주차:
* Javascript의 기본인 변수, 타입, 함수, 조건문, 문자열
* HTML의 기본 구조, 요소, CSS(텍스트 꾸미기, 박스모델)
* 과제: 간단한 Calculator 만들기
◈ 페어 프로그램: 1주차 때 경험한 페어 프로그램의 충격이 아직도 생생하다. 한국에 살면서 많이 경험하지 못한 좋은 개발법이라고 생각된다. 처음에 pair program을 진행할 때 같이 공부하는 고만고만한 수강생이 서로 의논한다고 뭐 좋은 것이 나오겠어 라는 생각이 있었다. 그렇지만 함께 문제에 대해 분석하고 의견을 나누며 같이 구글링하면서 문제 해결을 위해 노력하다보니 하나하나 문제를 해결할 수 있었다. 정말 짜릿한 경험이었다. 코드 스테이츠에 오기 전에 패스트 캠퍼스에서 안드로이드 앱 개발과정을 조금 수강한 적이 있었다. 혼자 인강을 보는 것으로는 스스로 문제를 해결하는 능력을 키우기에는 분명 한계가 있었다. 페어 프로그램을 통해 협업이 무엇인지 함께 공부하고 개발하는 것이 무엇인지 조금 맛을 보는 시간이었다. 대부분 페어분들이 나보다 실력이 좋아 많은 것들을 배울 수 있는 좋은 시간이었다.
◈ 코플릿: 일종의 코딩 테스트이다. 배운 개념을 코딩 문제를 풀면서 익히는 것이다. 문제를 풀면서 개념을 체득하는 놀라운 학습법이라고 생각한다.
◈ 스프린트 과제: 작은 미니 프로젝트를 진행한다. 그동안 배운 것을 기반으로 페어와 함께 sprint를 진행한다.
2주차:
* Javascript의 배열, 객체, primitive와 reference, Scope, Closure
* 개발자 도구 git 설치 및 Command Line,
* CSS Selector, Layout 화면을 나누는 방법. WireFrame
* 과제: javascript Koans, Twittler WireFrame과 목업
* Javascript의 배열, 객체, primitive와 reference, Scope, Closure
* 개발자 도구 git 설치 및 Command Line,
* CSS Selector, Layout 화면을 나누는 방법. WireFrame
* 과제: javascript Koans, Twittler WireFrame과 목업
배열과 객체라는 다소 어려운 개념을 학습했다.
* 원본 수정되는 pop, push, shift, unshift, splice
* 원본이 유지되는 slice, split, join, concat
* for ... in은 객체의 반복, for ... of(또는 forEach())는 배열의 반복
WireFrame을 작성하는데 필요한 flex box를 배웠다. 몇 번 작업했지만 아직 익숙하지 않아 개인적으로 쿠팡 사이트를 와이어 프래임으로 작성해 보았다. 아직 완성되지 못했다.
3주차:
* 고차함수, 알고리즘 문제 풀기
* DOM 이해하고 조작하기, HTML에 자바스크립트 적용하기
유효성 검사하기(Validation check),
* 과제: Twittler 함수구현하여 id, message를 화면에 출력하기
* 고차함수, 알고리즘 문제 풀기
* DOM 이해하고 조작하기, HTML에 자바스크립트 적용하기
유효성 검사하기(Validation check),
* 과제: Twittler 함수구현하여 id, message를 화면에 출력하기
함수는 일급 객체로 string이나 array 등 처럼 변수에 저장하고 배열이나 객체의 속성값으로 저장할 수도 있다. 고차함수는 함수를 인자로 받거나 함수를 리턴하는 함수이다.
지금까지 잘 과제를 제출하다가 3주차 twittler와 id, password 유효성 검사를 제대로 과제하지 못했다. 주말을 이용해 과제를 하려고 노력했지만 잘 되지 않았다. 이때 나의 한계를 경험하는 시간이었다. 뭔가 내 공부법에 문제가 있다. 물론 많은 것을 학습하고 습득하는데 벅찬 양이었지만 주어진 시간 내에 과제를 제출하려고 급한 마음으로 접근하니 더 문제가 복잡해져서 해결하기 힘들었다.
4주차:
* underbar 구현, 비동기 호출 이해하기, 재귀함수, stringifyJSON, Tree UI, 날씨 api, HA(Hiring Assessment)
* 과제: underbar 구현하기, stringifyJSON, Tree UI, 날씨 API
* underbar 구현, 비동기 호출 이해하기, 재귀함수, stringifyJSON, Tree UI, 날씨 api, HA(Hiring Assessment)
* 과제: underbar 구현하기, stringifyJSON, Tree UI, 날씨 API
4주차 때 설 연휴가 있어서 재귀함수, stringifyJSON, Tree UI를 충분히 공부할 수 있었다. 기간내에 소화한 과제를 제출했다. HA의 시간이 다가오면서 과연 내가 이 PRE 과정을 무사히 통과하여 immersive로 갈 수 있을까 하는 생각이 들었다.
재귀함수 코플릿문제를 다 지우고 다시 풀었다. 코플릿 문제를 이렇게 복습한 적은 없었다. 그래서 재귀함수에 대한 이해와 체득이 있어서 Tree UI와 날씨 api를 구현할 때 좀더 쉽게 구현한 것 같다. 그리고 HA의 재귀함수 문제도 잘 접근할 수 있었다.
HA:
4주간의 pre과정에서 16주간의 immersive과정으로 넘어가는 관문 시험이 HA(Hiring Assessment)이다. 정말이지 나에게 HA는 마의 구간이었다. 그동안 힘들게 지탱했던 멘탈이 갑자기 무너지는 것을 경험하는 시간이었다.
문제는 총 7문제인데 4문제를 해결했고 3문제를 미해결인 상태에서 제출했다. 수요일 10시에 문제가 출제되었고 24시간 뒤인 목요일 10시까지 1차 제출 마감이었다. 해결안되는 문제 때문에 그동안 없었던 심한 두통으로 힘들었다. 도저히 문제를 풀 수 없어 엎드러 쉬고 누워서 쉬기도 했지만 도저히 두통이 사라지지 않았다.
pre 코스를 진행하면서 이렇게 힘든 시간은 없었다. 과연 내가 개발자가 될 수 있을까? 라는 생각이 끊임없이 들어왔다. 이 나이에게 과연 내가 개발자가 될 수 있을까?라는 회의적인 생각이 나를 힘들게 했다.
도저히 안되어서 40분 정도 밖에 나가 산책하는 시간을 가졌다. 집에 돌아오니 한결 머리가 맑아졌다. 모든 문제를 시간내에 풀어야지 하는 생각을 버리고 5번 문제만 제대로 풀자라는 마음을 가지니 한결 마음이 가벼워졌고 문제에 집중할 수 있었다.
엔지니어가 말한 것처럼 HA는 내 개발 실력을 측정하고 내가 어디가 부족한지 깨닫는 기회를 주었다. 코스를 시작하기 전까지 부족한 부분을 공부하고 문제를 해결해야겠다.
잘한 점:
-
배운 모든 것을 내 노션에 모두 정리한 것. 그것을 pdf파일로 모두 출력한 점: 공부하다가 발견하는 관련 mdn 문서를 내 노션에 정리하였다.
-
이해되지 않은 것은 mdn 문서를 부지런히 찾아 읽으며 이해하려고 노력한 점
-
하루에 충분한 공부하는 시간을 가진 점. 평일 보통 5시간 이상 공부하고 주말에도 12시간 이상 공부한 점
-
블로그에 공부한 내용을 정리한 점(pre 기간 동안 총 5개 포스팅): github에 과제 문서를 clone 하고 그것을 코딩하고 과제를 제출할 때 git add, commit, push를 하는데 자주 하지 않다보니 할 때마다 하는 법을 잊어버러 다시 해당 urclass 영상을 보았다. 그래도 잘 push가 되지 않아 안되겠다 생각이 되어 블로그에 git add, commit, push, full request하는 것을 자세히 블로그를 작성했다. 블로그를 작성한 뒤에도 한 차례 push가 제대로 되지 않아 다시 과제를 다른 폴더에 clone하고 git add, commit, push, full request하니 제대로 과제를 제출할 수 있었다. 블로그를 그래도 한번 작성하니 복잡한 과정이 한번 정리가 되어 내 것이 될 수 있었다.
부족한 점:
-
급한 마음에 정답을 먼저 보려는 마음 : 늘 그렇지는 않았지만 스프린터 할 때 시간은 촉박한데 진도가 잘 안 나갈 때 급한 마음에 빨리 과제를 마무리하려고 보니 진지하게 차근차근 문제를 해결하기보다는 정답을 보고 해결하는 것이 문제였다. twittler 함수로 구현할 때 처음부터 차근차근하지 않고 엔지니어가 제공한 reference를 보고 그것을 가지고 구현하려고 한 점이다. 내가 내 힘으로 내 로직에 맞게 구현하려고 하지 않고 잘 안되니 급한 마음에 엔지니어가 준 레퍼런스를 보면서 구현하려고 했다. 그러니 더 머리가 꼬이고 복잡해져서 결국 당일 과제를 제출하지 못했고 몇 차례 혼자서 시도했지만 잘 안되었다. 결국 HA 마지막 마감 기일에도 마무리하지 못해 내가 한 부분만 제출했다. 동기들의 모각코에 들어가 질문하려고 하는데 내가 무엇을 모르는지 무엇을 구체적으로 질문할지가 정해지 않아서 동기들에게 질문하는 것도 어려웠다.
-
개발자 도구 많이 사용하지 못함: 엔지니어와 많은 동기들은 개발자 도구를 자주 사용한 반면 나는 자주 사용하지 못했다. twittler에 관해 동기들 모각코에 들어가 질문하면서 동기 한 분이 개발자 도구를 언급했는데, '아! 내가 자주 이 개발자 도구를 활용하지 못했구나!'라는 생각이 들었다. 개발자 도구를 잘 사용하기 위해 잘 숙지하지 못한 사용법을 여러 경로를 통해 찾아내 확인하고 내 것으로 만들고 기회 될 때마다 사용해야겠다. 코플릿을 풀 때, 스프린트 과제를 진행할 때 중간중간 자주 사용해야 겠다.
-
매일 TIL하지 못한 점: 블로그 글을 5개밖에 작성하지 못했고 계획했던 매일 TIL(Today I learned)을 작성하지 못했다.
-
코플릿 문제 다시 풀기: 4주차 재귀함수만 코플릿 문제를 전부 다 풀었고 그 이전에는 코플릿 문제를 복습하지 못했다.
-
모각코에 자주 참여하지 못한 점: 스스로 공부하는 것이 편해서 혼자서 많이 공부했는데 다음에는 동기들과 줌으로 같이 공부해야겠다.
-
적절한 수면과 운동으로 체력관리의 부족: 새벽 2-3시까지 공부한 적도 있다. 운동은 거의 하지 못했다. 마음에 여유가 없으니 운동하는데 인색했다. 지금부터는 운동도 하루에 한 시간 정도 하고, 산책도 하면서 머리를 식혀야겠다. 수면도 6시간은 적어도 자야겠다.
개선할 점:
-
매일 충분한 수면과 운동: 하루하루 많은 양의 어려운 내용을 소화하다 보니 평일에 수면시간이 부족하고 운동하는 시간을 전혀 갖지 못했다. 마음의 여유가 없으니 긴장되었고 그러니 더욱 창의적인 코딩을 할 수 없었다. 남은 코스를 진행할 때는 조금 내 자신에게 여유를 주어야겠다. 점심시간에 30분 정도 산책하고 저녁을 먹고 잠자기 전에 30분 정도 산책하면서 하루를 정리하는 시간을 가져야겠다.
-
그날 배운 것은 그날 소화하고 블로깅: 코플릿 문제 풀기. 문제를 풀 때 내가 해결하기 힘든 문제는 무엇이며 그것을 해결하기 위해 내가 어떤 노력들을 했으며(어떤 것들을 검색해서 알아냈으며) 결국 그 문제를 어떤 방식으로 해결했는지(아니면 앞으로 해결할지)를 정리한다. github에 매일 TIL하는 것을 도전해야겠다. 오늘 강한결 엔지니어의 블로깅 강의를 들으면서 비전공자의 강력한 무기인 블로깅이라고 하셨다. 매일 조금이라도 한다면 그것이 쌓이면 강력한 나만의 무기가 될 수 있다. 아직 github에 익숙하지 않다. 이번 기회에 github에 매일 TIL하는 것으로 html와 css에 대한 실력을 높일 수 있는 기회로 삼아도 좋겠다.
-
급한 마음을 버리고 개념부터 확실히 소화하자: 수학도 고차방정식, 미적분, 확률 통계를 하기 전에 사칙연산과 같은 기본적인 것이 바탕이 되는 것처럼 개발도 개념과 기본적인 문법이 탄탄해야 함을 이번 기회에 뼈저리게 느꼈다. 당장 시간 내에 과제를 빨리 제출하려는 마음을 버리고 기본적인 것을 생각하면서 레고의 부품을 하나하나 조립하듯이 해야 전체 코플릿 문제도, 스프린트 과제도 완성할 수 있다. 개념과 문법을 확실히 내 것으로 소화해야 한다.
나의 Pre 과정에 대한 총평:
4주간 pre 과정이 모두 끝났다. 정말이지 힘든 시간이었다. 고생을 각오했지만 막상 닥치니 쉽지 않았다. 공부하면서 코드스테이츠 만의 탁월한 학습법에 대해 놀랐다. 코플릿 문제를 풀면서 원리들을 몸으로 익히시는 시스템은 참 좋은 것 같다.
코드스테이츠가 모든 것을 먹기 쉽게 제공하지는 않는다. 자기주도학습으로 모르는 것은 동기들과 구글링을 통해 스스로 검색하는 법을 배워야 한다. 결국 개발자가 된다는 것은 모든 것을 기억하고 코딩하는 것이 아닌 필요한 것이 어디에 있는지 빨리 검색하여 그것을 바탕으로 코딩하는 것이다.
그리고 help-desk에 질문하는 것, 동기들에게 궁금하는 것을 물어볼 때도 내가 스스로 고민하고 해결하려고 삽질을 해야 어떻게 구체적으로 물어볼 수 있다.
미래의 내가 지금의 나에게 꼭 하고 싶은 한 마디의 말이 있다면
다른 사람이 코딩한 것을 보고 그것을 카피하는 것보다는 내가 스스로 이렇게도 해보고 저렇게도 해보면서 나만의 코딩을 하는 것이 실력이 느는 것이다. 이 믿음이 지금 나에게 필요하다, 시간이 좀 더 걸리는 것 같고 돌아가는 것 같지만 결국 살이 되고 피가 되는 것은 내 스스로의 힘으로 코딩하는 것이다. 결국 그것이 시간을 버는 것이다.
나에게 내 자신의 한계와 어떻게 극복할지 생각해 볼 수 있는 기회를 codestates에게 깊이 감사를 드립니다. 앞으로도 결코 쉽지 않은 길이 있지만 포기하지만 않는다면 반드시 개발자가 될 수 있다는 신념으로 전진하겠습니다.
'웹 개발' 카테고리의 다른 글
| [코드스테이츠 졸업생 토크 세션 참여 후기] SW 과정 Full IM23 김폴빈 강의 (0) | 2021.02.19 |
|---|---|
| github에서 clone하여 자료 다운받고, add, commit, push하는 법 (0) | 2021.02.15 |
| 재귀함수(Recursion Function) (0) | 2021.02.11 |
| [코드스테이츠 Software Engineering Pre 과정] 3주차 공부내용: 고차함수 (0) | 2021.02.04 |
| 코드스테이츠(CodeStates) 후기 공유회에서 배운 것들을 정리해 본다. (0) | 2021.01.30 |
댓글