코드 스테이츠 Software Engineering Bootcamp 를 수료하고 나서

Gong Intaek·2021년 6월 11일
0

코드스테이츠

목록 보기
151/151
post-thumbnail

오늘 부로 짧으면 짧고 길면 긴 여정이 하나 마무리 되었다.
대학원의 영구 수료부터 지금까지 걸어온 이 길을 이길의 마지막에서 서서 걸어온것을 다시한번 되짚어 보고자 한다.

계기

대학원 박사과정의 마지막 시기에 논문 작성을 이루지 못하고 시간도 남지 않은 상황에서 더이상 해당길을 진행할수 없음을 알게 되었고, 대학원에 진학하여 배운 것중 천문학을 제외하고 유일하게 크게 관심을 가졌던 것이 프로그래밍이었다. 아니 어쩌면 천문학보다 프로그래밍에 더 관심을 가졌는지도 모른다. 논문이 막히고 차라리 결과를 얻기위한 코딩자체가 수월하게 느껴질때에는 천문학보단느 컴퓨터 관련 전공이 나았던게 아닐까하는 생각이 간간히 들곤 했으니..

아마 프로그래밍에 대한 최초의 기억은 초등학교 시절 으레 다니게 되는 컴퓨터학원에서 가르치는 베이직이 첫 경험이었을 것이다. 하지만 그때의 기억은 너무도 오래 전이기도 하지만 적어도 당시에는 그렇게 큰 흥미를 가졌던 기억은 없었다. 그리고 다시금 겪게 된것은 대학교에서 1학년에서 포트란에 대한 간의 였을 것이다. 하지만 그 때 에도 큰흥미는 없었던 것으로 생각 된다. 그리고 군대를 다녀오고 3학년이 되면서 부터 프로그램밍 언어에 대해 배우기 시작하였다. 그리고 이 이후 어느 즈음에 프로그램에 흥미를 가지게 되지 않았을까 생각한다.

포트란을 통해 이것 저것을 구현해보고 결과가 나타내는 것을 보면서 큰흥미를 가졌던 것으로 생각된다. 어떤 결과를 만들어보려고 몰입해서 코딩하던 때가 그즈음 이었으니 대표적인 걸로는 만델브로 세트를 바탕으로 특정 영역의 모습을 높은 해상도로 보기위해 이런저런 방식으로 구현 해보려 한 것이나. 작게나마 2체 시뮬레이션을 만들어 보고자 뉴턴의 중력 방적식을 바탕으로 2체 시뮬레이터를 제작해본 것이나(뭐 결과는 그다지 좋진 않았다). 정말 게임에 빠지듯 프로그램 코딩에 빠져서 코딩을 해봤던 시기라고 생각 된다.

연구실에서의 코드는 생각 보다 오랜시간을 소모하는 경우가 많았다 복잡하기도하지만 반복적이고 많은 수의 결과를 다양한 변수를 통해 얻어야 했기때문에 특정 모델에 경우 연상을 시작해도 짧은면 6~7시간이 될수도 있지만 길게는 하루 이틀도 넘는 일이 생겼다. 그래서 다음으로 관심을 가졌던 것이 병렬 프로그래밍이었다. 물론 이 이후 간단하게 병렬화를 사용하기는 하나 실제 내부코드를 병렬화 시켜서 사용 하는 부분은 진행하진 않았다. 다양한 모델이기에 그부분을 기점으로 분류해서 일고라 처리하는 방식이 더 깔끔하였기 때문이다.

그리고 나서 배우게된 것이 파이썬과 Mysql그리고 sql 언어였다. ㅈ너천서베이중 하나인 SDSS에서는 자체 데이터 베이스를 공개적으로 제공하고 있다. 이러한 자료를 사용한 연구중에는 파이선을 기반으로 제작된 프로그램을 사용하는 연구가 있었는데, 당시에는 이 프로그램을 활용하여 해당 연구에서 배제한 집단에 대한 연구를 진행해보는 것이 목적이었다. 따라서 이 프로그램을 사용할줄 알고 필요하다면 우리에게맞게 보강하는 작업을 진행해야 했기에 새로운 언어인 python을 학습해야했다. 하지만 지도교수님은 포트란만 사용해본 경헙이 있기에 이부분은 순전히 독학을 해야했다. 단순히 상요하는 방법은 그렇게 오래걸리지 않았으나 해당프로그램이 어떻게 동작하고 연결된 다른 프로그램도 사용하고 있었기에 그것이 연결 된 방식이 어떠한지 파악하는 법 그리고 얻어진 결과는 Mysql에 연결해서 해당 데이터 베이스에 저장하는 방식을 취하는데 그것을 사용하기위해 Mysql을 설치하고 연결 하는 방법 등등..

또한 해당 프로그램에 입력할 자료들을 SDSS 데이터 베이스에서 검색하고 분류하기위해 sql언어를 사용한 겁색방법에 익숙해져야 했고 거기서도 원하는 정보를 추출하기위해 데이터베이스의 스키마 구조에 익숙해져야 했다. 즉 생각치는 않았지만 데이터베이스에 대해 간접적인 교육을 진행하고 있었던것이다. 그리고 그러헥 해당 부분도 익숙해진 상태에서 앞서 이야기한것처럼 마지막이 다가왔다.

이런 프로그래밍에 대한 경험과 프로그래밍에 대한 흥미를 바탕으로 해당 분야로 길을 잡기로 하였다. 하지만 연구에서만 사용한 지식이 실무적인 부분에 어떤이점을 줄지도 알수 없었기에 혼란 스러워 하던 와중, 나보다는 아주 조금 먼저 사회로 나간 연구실 후배가 본인이 부트캠프에 다니고 있으며 형에게는 이러한 부트캠프가 좋을것 같다고 소개해준 곳이 코드스테이츠였다.

코드스테이츠에는 wewin이라는 내게는 좋은 접근법이 있었고 공부 방식또한 이제껏 내가 주로 행하였던 것과 크게 다르지 않은 방식에 방향성을 부여하는 방식이고 온라인 학습이라는 점이 좋아서 크게 거부감 없이 선택할수 있었다.

물론 내가 수료한 것은 Software Engineering Bootcamp(SEB) 과정 이지만, 첫 목표는 SEB가 아니었다. 물론 이 방향도 나쁘지는 않다고 생각하였으나(사실 방향성에 대해 아무 생각이 없었다.) 그래도 이전부터 사용해온 파이선을 활용할 수 있고 연구실에서도 짤게나마 관심을 가지고 학습을 진행하려 했었던 DATA Sience 코스를 목표로 지원을 시작하였다. 근데 지원을 예약하고(당시 실제 지원 모집 일자에 비해 시간이 남은 시점) 어느 순간 해당 코스가 정부 지원하에 이루어지는 AI 코스로 변경 되었다. 뭐 지원하려던 것은 그대로라 지원 일정을 진행하였으나. 탈락...
당시 시점에서는 다음 코스 시작일자가 6개월 뒤로 잡혀있던터라. 다음을 기다리기보단 차선책으로 SEB 과정에 지원하였다.

시작

SEB를 시작 하고 프리코스 과정은 개인적으로는 언어만 새로운 것을 제외한다면 그냥 아는 부분은 대체로 복습하는 부분이 상당수 존재하였다.

  • 개발환경 조성 - 연구실에서 사용하던 OS 가 리눅스이며 fedora, centos, ubuntu 모두 사용해본 경험이 있다. 물론 서류처리를 위해 듀얼부팅도 되야했기에 해당 설치법에도 경험이 존재하고.(물론 이 부분이 중요해진 건 이머시브 코스 부터였지만. )
  • 코플릿 - 부프캠프로 먼저 진입한 후배의 권유로 프로그래머스나 리트코드의 문제를 풀기 시작 해서 프로그래머스의 2단계 문제 일부를 3단계는 아주 소수를 1단계는 대다수를 풀어보았던 경험이 있다.
  • javscript - 언어의 차이를 제외한다면 프로그래밍에 생각 하는 구조는 비슷하고 유사한 동작을 한느 함수 사용에 익숙하다보니 대체적으로 크게 거부감 없이 익숙 해질수 있었다.
  • css, html - 프리코스에서 내가 생소한 분야라고 할 수 있다.
  • 페어 프로그래밍 - 상대방을 어떻게 대하여야 하는지에 대한 기준이 모호했고 아직도 모호하다.
    따라서 상당부분의 시간이 남을 수 있었고 스프린트로 진행된 계산기 같은 경우 나이트 메어를 향해서 달려가 본다던가(구글 계산기 모방하기), 미리 해당내용을 예습 해본다던가 하는 것들을 해볼수가 있었다. 그리고 프리코스 마지막 IM코스를 탑승하기 위한 HA 때 이런저런 위협을 주시기에 너무 깊게 생각 했었나보다. 오래지 않아 HA를 마무리 할수 있었고 이제 전부인지 여쭙는 상태까지 가버렸었다. 여하간 그렇게 조용히 다음 코스로 탑승

이머시브 코스

이제부터는 본격적인 개발자 코스라고 생각할 수 있다. 우선 환경 세팅부터 시작하였다. 기존 프리코스의경우 OS에 상관없이 진행 해도 문제가 되지 않았지만 이머시브 코스부터는 특정 OS를 바탕으로 협업의 기틀을 차근 차근 잡아 갔다. 깃 활용 법, 깃 워크 플로우 같은 것이라던지 바닐라 자바스크립트와 css, html 구조가 아닌 react의 사용법이라던지 react내에서의 정보 관리를 위한 redux, 기본적인 서버 생성, 데이터 베이스 구축, 데이터 베이스 구조, 웹상태에서의 연결에 관한 이야기 cors, 알고리즘 등등 이전보다는 더 깊은 내용들에 대해 학습 하기 시작하였다. 이제부터는 나도 모르는것이 많았기에 어떤 스프린트에서는 해당내용을 따라잡기에 바빠야 했고 아는 내용이 일부나오면 조금은 숨돌리면서 진행할수 있었다. 그렇게 학습을 진행하며 단계별로 3번의 HA를 보았으며 크게 문제 없이 해당 HA를 볼수 있었다. 상당히 긴 시간동안 진행되었지만 주로 학습에 관련된 부분이라 지금와서는 크게 생각나는 부분이 있지는 않다. 그리고 배우기 에 바빠던 시기라 머리에 깊게 남을 만한 일도 없었고, 뭐 이때 당시에도 페어 프로그래밍을 진행하였지만 여전히 사람을 대하는건 모호한 일이었다.

프로젝트

교육과정을 마치고 두번의 프로젝트를 진행하였다. 2주(실은 2주가 안된다.)와 4주로 나뉜 두 프로젝트에서 나는 두경우 서로 다른 사람을 만나게 되지 않을까 생각했었다. 현실은 그렇지 못햇지만.
두 프로젝트 모두 음식 레시피를 검색하고 공유하는 아이디어를 바탕으로 진행되었다.

첫번째 프로젝트에서는 프론트 둘 백엔드 둘로 나뉘어 진행하였고 3일의 SR과정이후 코드 작성을 시작하였다. 하지만 실제로는 백 하나 프론트 하나 로 진행된 프로젝트와 비슷한 양상을 보여주었다. 어쩌면 너무 내 페이스로 몰아쳐서 백엔드에 붙은 동기분이 감을 못잡았을수도 있겠다. 하지만 프로젝트의 기여도는 제작된 부분을 통해 이야기하게 되는 법이니깐.

여하간 전체적인 프레임을 구축하고 용도별로 나뉜 페이지에서 해당 API에 해당하는 기능을 구현해서 취합하는 방식을 취했기에 같음 기능을 동시에 작어하지 않는 이상 충돌날 이유도 없고 틀은 제공된 채로 진행되었기 때문에 express의 req와 res만 잘넣어 주는 부분이라 오래걸리지 않을 것으로 생각하였으나. 생각보다 진도가 빠르진 않아 나누었던 업무중 작업하고 있는것을 제외한 나머지를 우선적으로 처리하는 수밖에 없었다.(시간이 많이 없으니까.)

프론트에서는 반대로 주도로 진행하시는 분이 그렇지 못한 분을 하나하나 알려주면서 제작하는 상황이 발생하기도 하였다. 그렇게 어찌저찌 프로젝트가 마무리되었다.

두번째 프로젝트를 시작할때 정해진 팀을 발표해줄 때는 좀 많이 아쉽기도 했다. 그렇지만 어쩌겠나 이미 확정되었으니 진행하는 수밖에. 앞서 퍼스트에서 같은 팀을 하신분 들중 프론트를 맡으신 분은 다른 팀에 배정 되고 새로운 팀원이 오셨으며 나머지는 그대로 같은 팀이 되었다. 그리고 나는 팀장이 되었다(팀원이 좋은데..). 아이디어에서는 별다른 아이디어가 나오지도 않아서 이전 것을 차용하고 업무는 모두 프론트를 하신다고 하여 백엔드를 전담하는 방향으로 갔다. 뭐 기간도 기간이지만 내용도 크게 다르지 않으니 새로운 스택을 넣는다하더라도 제작에 크게 오래걸리지 않을것으로 생각 했으니.

생각만큼 오래걸리지 않았다 내가 전담한 백엔드는, 프론트의 경우 세분이 진행해야 할부분을 세등분하여 진행하였으나. DB를 구축하고 서버의 대부분의 기능을 구현할 때까지 프론튼의 진도는 그다지 진행되지 않았다 각자 자신이 잡은 페이지 구성에 힘을쓰고 있는 상황이었으며 다른 두분은 페이지의 완성이 아닌 구도 잡기가 우선이었고 거기에 기능을 구현 하는 와중이었다. 나머지 한분도 크게 다르지 않은 상황. 그리고 이시점이 프로젝트 기간의 중반이 된 시점이었다. 나머지 2주동안 완성된 코드를 기대할수 있을까?

솔직히 나는 그러한 기대를 할수가 없었다. 서로의 방식으로 각자의 페이지를 만드는 와중 마지막에 통합할때 얼마나 문제 없이 통합이 가능할 것 인가. 솔직히 문제 없을수가 없지 않을 까 하는 생각을 버릴수가 없었다. 우선 통합적인 자료 전달구조도 없는 상황에서 로그인에서 얻게될 억세스 토큰을 전달할 방법도 전무한 상황. 로그인을 구현 하시는분은 말그대로 구현만 하시고 계시고 해당부분에 대해서는 고려를 안하는 상황에 문제가 있을수 밖에 없겠다 싶어 통합 프레임에 대해 이야기를 하였다. 전체적인 구조를 잡고 거기에서 용도별로 작업하여 붙이는 구조를 그러니 프론트분들이 서로가 사용할 그런한 통합 적인 프레임 구축을 하기를 바랬으나. 누구 나서서 하시는 분은 없었다. 극단적인 상황으로 내가 나서게 되었고 그렇게 생각지도 않던 풀스택의 길을 걷기 시작 했다.

사용된 스택과 전체적인 페이징을 위한 라우터 돔 정보 관리를 위한 리덕스들을 바탕으로 페이지별로 파일을 분배 그리고 대략적인 프레임 이상으로 개개 기능들을 부여하기 시작해서 전체적인 부분에 하나하나 손을 대기 시작했다. 라우터로 페이징을 하는 방식으로 갔기때문에 좀더 단순하게 로그인 모달을 구현하기 시작했고 그렇게 로그인을 제작하시던 분의 작업분은 고려할수 없는 상황으로 가버렸다. 그리고 주요기능중의 하나인 검색기능을 부여 하고 검색결과를 표출하는 페이지를 만들고 나오는 결과를 12개로 제한하여 12개 별로 페이지화 시키고 페이지 넘버를 url의 id로 사용해서 링크할수있도록 페이지 라우트를 제작하고 각 페이지로 링크할수 있는 기능도 부여하고 진행되지 않은 페이지 기능을 하나하나 구현 하다보니 프로트의 기능구현의 60%이상이 내손으로 진행되는 암울한 상황이 진행되었다.

여하튼 프론트에 대한 관여는 페이지 기능구현으로 멈추고 css부분을 프론트분들에게 넘기면서 나는 나머지 버그패칭을 진행하여 어찌저찌 프로젝트를 마무리 할수 있었다.

두프로젝트 모두 내게는 학습이 되는 기회가 되었을지는 모르겟지만 제대로된 프로젝트 진행이라고는 생각지 못하겠다. 최소 요구사항을 겨우겨우 만들어가는 프로젝트라니 최소 그정도는 가뿐하게 하고 어드밴스드를 고려 할까 하는 상황을 생각 했는데 뭔가 암울 한 현실의 한부분을 본듯한 기분이었다.

마치고

그렇게 프로젝트도 마치고 전반적인 학습 코스가 마무리 되었다. 글세 나는 개발자가 될수 있는 길위에 올라간걸까? 내가 과연할수 있을까? 솔직히 모르겟다라는 생각이 크다. 어떤것에 대한 확고한 목적도 없고 어떤 기술에 크나큰 흥미가 있어 그부분을 부각 할수 있는것도 아니고 아무생각 없이 비어진 머리로는 취업에 관하여 들었던 잡서칭에 관련된 지식조차 뜬구름 처럼 느껴진다.

그렇게 의욕적으로 회사에 지원할수 있을까? 나는 과연 할수 있을까? 그냥 모르겠다라는 생각 뿐이다.

내게 만약 웹서비스를 제작할수 있는 능력을 얻었냐고 한다면 적어도 내가 배운것을 활용해서 만들 능력은 얻어다고 말할수 있을 것이다. 하지만 그것이 과연 내게 서비스를 요구한 대상이 원할만한 완성도 일까? 진행한 두프로젝트 모두 겨우 동작이 가능한 수준에서 멈추어 버렸다. 이런 결과물이 있는 내가 어떻게 확신을 가질수 있을까.

여전히 모르겠다. 하지만 한가지 길이 끝났다는 것에서는 약간의 후련함도 있는것 같기는 하다.

코드스테이츠를 주변사람에게 추천 하겠는가?

그 주변사람이 학습에 대해 어떻게 받아들이냐에따라 다르지 않을까 싶다. 코드스테이츠는 자기 주도 학습이다. 스스로 배워야하지만 스스로 잘배워야 한다. 프로젝트를 진행하신분 중 한분도 끈임없이 학습을 진행하시는 분이셨다. 하지만 그러한 학습만큼 결과가 나왔는가 하면 나는 그렇게 생각하지는 못할것 같다. 즉 스스로가 이런한 방식으로도 제대로된 학습을 할수 잇다고 생각한다면 추천 하겟지만 그렇지 않다면 좀더 지식을 강제로 넣어주는 곳이 좋을것이라 생각한다.

profile
개발자가 되기위해 공부중

0개의 댓글