나는 지금 코드스쿼드를 다니고있다.
코드스쿼드는 정말 너무 좋다. 존경하는 마스터들과 그리고 너무나 열심히 달리고 있는 팀원들 덕분에 행복하게 코딩을 하고있다. 컴퓨터를 공부하는데 괴로움을 겪고있는 주변 사람들이 있다면 무조건 코드스쿼드를 가라고 추천하고 싶다.

사실 나는 두달전까지만 해도 정말 코딩을 싫어했다.
대학에서 컴퓨터를 전공으로 하고있지만 앉아있는것보다 움직이는걸 더 좋아하며, 태생이 공부랑은 맞지를 않고 장사에 맞는.... 하여간 프로그래머쪽이랑은 거리가 먼 사람이었다.
세상에 안힘든 사람 어디있으며 그리고 내가 힘들어봤자 얼마나 힘들었겠냐만은
코딩을 공부하며 2주에 한번정도는 그만두려고 했다. 또 내가 얼마나 힘들었냐면~~ 상담센터에서 진로상담을 받으려고 하기도 했다!

코딩을 제대로 해보자!고 생각한지 9개월이 지났다.
사실 제대로 코딩을 공부한건 19년 1월부터인것같지만, 그래도 전역을 하고 9개월동안을 한번 돌아보고자 한다.

1. 시작 (18.7 ~ 18.9)

2018년 7월 전역을 하고 스타트업을 해야겠다고 생각을했다.
나는 기획서를 쓰고, 승현이형은 코딩을 했다.
승현이형과 회의가 없는날에는 학교도서관에서 생활코딩으로 html부터 NodeJS까지 강의를 들었다.

2. 3학년 2학기 복학 (18.9 ~ 18.12)

학교에 돌아와서는 5전공 1교양을 들었다.

  • Python : 데이터로표현하는세상,기계학습
  • Javascript: HCI
  • 소프트웨어벤처융합 필수전공: 소프트웨어공학, 소프트웨어프로젝트관리, 창의적소프트웨어설계

HCI는 매주 과제가 나왔는데 생활코딩만 들었던 나에게 HCI과제는 매우 어려웠다.
생활코딩만 들었을때는 나도 개발을 할 수 있을것같았는데 현시창이었다....

1. 이력서 만들기

image-20190505185016236.png

2. canvas 태그로 그림그리기

image-20190505203227093.png

그 외에도 포트폴리오 사이트 만들기, 트리구조를 적용해서 인터페이스 만들기가 과제로 나왔다.

너무나 부끄러운 퀄리티이지만 그당시에 나는 매주 나오는 이 과제를 위해 매일 도서관에서 공부를 했다.
돌아보면 참 기본없이 코딩을 했다.너무 하기싫었지만 어떻게든 하려고 했고 참 많이 외로웠고 힘들었다.
이런 과제를 하면서도 개발을 빠르게 그만둘까? 라는 생각을 하곤했다.

내가 개발자가 되려면 절대 학교에 있으면 안되겠다는 생각이 들어 4학년1학기에는 휴학을 해야겠다고 생각했다.
학기가 끝나고서는 막막했다. 어떻게 개발공부를 해야할지 모르겠어서 고민하던중
삼성 SDS에서 알고리즘 특강이 열린다는 홍보글을 보았다.

3. 겨울방학 (19.1 ~ 19.3)

1. 종강이후

삼성SDS 알고리즘 특강을 듣기위해 코딩테스트를 봤고 역시 광탈했다.
지친 마음을 달래기 위해 학교에서 보내주는 상하이 스타트업 단기인턴에 지원을 했다.
그당시에 나는 어떻게 개발공부를 해야할지 모르기때문에 무작정 스타트업에 들어가야겠다고 생각했다.
다음학기에 학교를 안다니기 위해 방학에 공부를 해서 인턴을 해야겠다고 생각했다.

2. 상하이

혼자서 개발공부를 하는건 쉽지 않았다. 왜냐하면 내가 개발을 싫어했기때문이다. 같이 소프트웨어공학 팀플을 했던 A와 상하이에 같이 갔는데 이야기가 잘 되서 엘리스 코딩의 인강강의를 들으며 알고리즘 스터디를 시작했다.

엘리스 코딩의 알고리즘강의는 정말 별로였다. 그래서 문제를 풀기위해 질문도 참 많이하고, 고민도 많이했다. 하루종일 풀어서 2문제를 풀면 많이 푸는거였는데 그때 문제의 난이도는 사실 꽤 낮았다. 그래도 중국에서 한 2주동안 알고리즘 강의를 들으며 문제를 풀었고 한국에 돌아와서도 완강을 했다. 그때 자료구조의 기본에 대해 조금 알 수 있었다.
돌아보면 그때 알고리즘과 자료구조를 심도있게 하루에 4시간이상씩 고민할 수 있어서 나름 기초가 탄탄해질 수 있었던것같다.

막막했다. 미래가 보이지않았고 이런다고 개발자가될수있을것같지가 않았다. 여자친구와 헤어졌다. 그런데 장학금은 받아야했고 해어진날 장학금지원서를 쓰고 다음날 면접을 보러갔다.

마음이 비어있는데 악착같이 공부를 했다.
돌아보면 그때 A가 없었으면 참 힘들었을것같다. A의 집에서 자주 자고 아침을 먹고 다시스터디를 하고 그랬다.
A에게 한탄을 많이했었다. 나는 지나치게 비관적이었고 A는 긍정적이었다. A가 없었다면 분명 나는 그시기를 못견뎠을것같다.

3. B의 합류

B도 알고리즘 스터디를 하고싶어했고 그렇게 방학에 매일 알고리즘을 풀기시작했다.
그때 우리의 목표는 카카오페이 인턴을 위한 코딩테스트였다.(합격이 아니라 시험이 목표였다)
당연히 광탈을 하고 그다음부터는 자바스크립트로 방향을 돌렸다. 언어도 파이썬에서 자바스크립트로 변경했고, 자바스크립트로 알고리즘을 풀면서 호눅스의 인프런강의를 듣기 시작했다.

4월부터 코드스쿼드를 가야겠다고 생각하고 있었던 터라 준비가 필요했다.

4. C의 합류

그러던중 C가 합류를 하게 되었다. C덕분에 다같이 코드시그널로 알고리즘을 풀기시작했다.
하루에 3시간씩 알고리즘을 풀고, 그다음에는 각자 하고싶은 공부를 하는거였다.

소프트웨어 마에스트로 , 인턴준비 , 프로그라피(개발동아리) 참 이것저것 많이 시도를 했다.

우린 어떻게 해야 개발자가될수있는지 몰랐고4명이서 같이있으니까 자꾸 해보자 해보자 얘기가 나와 뭔 활동만 공고가 뜨면 다 지원했던것같다.

나는 뭔가 구현을 하고싶어서 javascript 30을 시작했다. B와 같이 hexo로 개발블로그도 만들어봤다. 나는 javascript30 을 열심히 하느라 알고리즘에 점점 더 소홀해졌고 그사이에 친구들은 알고리즘실력이 더 좋아졌다. 뭔가 만들어보고싶어서, 다들 구현을 하면 실력이 는다고 해서 javascript30을 했는데 실력이 느는것같지는 않았다.

5. 보호자

그러던중에 할머니가 병원에 입원하셔서 보호자를 하게 되었다. 응급실에서 보호자를 하면서 프로그라피 면접을 위한 사전과제를 했다. 장학금재단에서 연락이 왔다.할머니가 아프셔서 나는 장학금을 거절하고 휴학을 하려고 했으나 생활비까지 준다는것을 알게되었다. 급하게 인턴을 알아보았다. 할줄아는것도 없는데 인턴을 해야만했다. 다시 학교에 수업을 들으러 가는건 죽어도 싫었다. 디앤아이파비스라는 회사에 방문했고 떨어졌다. 하지만 면접을 볼 수 있어 좋았고 동기부여가 되었다. 이때 대표님께서 이메일로 참 좋은 말씀을 해주셨고, 시간이지나서도 한번더 메일을 보내주셨는데 아직도 좋은 기억으로 남아있다.

이맘쯤에 난 A가 너무 부러웠다. A는 프로그래밍 말고도 다른것들을 이것저것 지원했고 상을 받고 성과를 내고있었다. 난 개발할 시간도 부족하다고 생각하는데 다른것도 하면서 심지어 잘되는게 너무 부러웠다. 분명 4명중에 내가 제일 오버하는것 같은데 왜 내가 제일 더딘것같지? 왜 내가 제일 못하는것 같지? 생각이들었다. 돌아보면 자기 페이스가 있는법인데 나를 향한 나의 자책이 나를 더 힘들게 만들었다.

4. 지옥같은 3월 (19.3)

그리고 3월이 되었다 3월에는 아침 9시부터 6시까지 도서관에서 공부를했다.
나는 계속 javascript30을 공부했고, 프로그래머스에서 하는 스터디를 신청했는데 그게 너무 어려워서 또 도중에 번아웃이 왔다. 내가 하고있는 javascript30은 장난이구나. 실무는 다른 레벨이구나... 라고 생각했다. hashcode에 질문을 많이했다. 그당시에 나는.. 스스로 해결할 수준이 안됬고, 물어볼 사람도 없었다.

1. D의 합류

프로그라피에서 만난 D도 스터디를 하고싶다고 했고 합류를 했다. 3월부터 우리는 프로젝트를 하기로 했었다. D는 Django를 공부하는 친구였는데, D덕분에 A와B가 졸업프로젝트에서 맡기로했던 백앤드부분을 도울 수 있었다.

2. 프로그래머스 스터디

프로그래머스 스터디를 환불했다. 어떻게든 견뎌내고 이겨내고 싶었는데 그과제는 지금 생각해도 나에게 많이 과했던것같다. 개발자가 되고싶어서 발버둥은 치는데 이렇게 하면 개발자가 될 수있는건가? 그 질문에 답을 3월에도 찾지 못했다.

3. 응급실

프로그래머스 스터디환불, 할머니 병원 입원, 엄마의 수술 3가지가 겹치니까 번아웃이왔고 코드를 못보고 침대에만 누워있었던것같다. 그러던중에... 또 할머니가 갑자기 상태가 안좋아져서 구급차를 타고 응급실에 가게되었다. 그 구급차에서 생각이 참 많았다.

졸업프로젝트에서 내가 맡은 부분은 로그인과 로그인 폼이었다. 병원에 있어 나는 스터디에 참여를 못했고 친구들과 약속한 기간이 다가오고 있었다. 이때 진짜 개발이 너무 하기싫었는데... 좋아하는 친구들과 하는 과제에 폐를 끼치고 싶지 않은 마음에 억지로 코드를 다시 짜기로 마음을 먹었다.

내가 맡은 부분을 해결하기위해 리액트 부트스트랩을 사용하게되었고, 만들다보니 생각보다 쉽게 또.. 재미를 찾았다.
그리고 D와 내가 만든 코드를 통합했는데 그 쾌감이 상당했다. 그리고 병원에서 react로 프로그라피 과제를 했고, 멘토인 범준이에게 todo앱관련 설명을 들으면서 리액트의 재미를 느꼈다. 병원으로 돌아와서는 다시 복습을 했고, 슬럼프에서 탈출할 수 있었다.

친구들과 계속 같이 공부를 하고 싶었는데 4월부터 코드스쿼드가 시작을 했다.
확실하게 깨달았다. 혼자서 시행착오를 겪으며 성장하는것은 너무나도 오래걸렸다.

5. 코드스쿼드 (19.4 ~ )

코드스쿼드과정은 23주차인데 5주차가 지난 지금 나는 두번정도 벽을 넘었다는 생각이 든다.
코드스쿼드 과정은 홍보가 될까봐 따로 적지않으려고 한다.

코드스쿼드 과정중에서도 한번의 슬럼프가 있었다. todo앱에서 redoundo기능을 추가하는 과정에서 로직을 설계하는데 떠오르지가 않았다. 연휴에 페어와 같이 따로만나서 아침부터 저녁까지 코딩을 하며 기존의 코드를 절반이상 뜯어고쳤다.

이때 깨달은건 두가지인데 첫번째로는 구현하기전에 앱의 전반적인 동작 흐름을 명확하게 파악하고 있어야한다는것이다.
이때의 경험덕분에 다음 미션을 할때는 설계를 6시간동안 했고, 이것을 구현하는데는 30분밖에 걸리지 않았다.
두번째로는 거지같은 설계도 리팩토링으로 어느정도는 뜯어고칠 수 있다는것이다. 결국 todo앱의 로직은 crud에 undo + redo였기때문에 수도코드는 구현하는 누구나 비슷하다. 그렇기때문에 클린코드는 내 설계에서도 가능한것이다.
그걸 믿는다는게 중요한것같다.

결국 좋은 설계만 하면 된다. 누구나 할 수 있는 일이다. 코드를 작성하는것은 설계를 구현하는것이기에 생각을 디테일하고 논리정연하게 한다면 아름다운 코드를 작성할 수 있다.
어느순간 코딩이 취미가 되어있었다. 잠이안와서 코딩을 하다가 자기도 했다. 같은 과정을 하는 E는 자다가 꿈에서 로직이 생각이 났다고도 했다. 여기있는 사람들은 다들... 하여간 대단하다.

6. 결론

개발자가 진짜 되고싶었는데 나는 요새 내가 이미 개발자인걸 느낀다. 왜냐면 심심하면 github들어가고, 개발문서 읽어보고 필요한 기능있으면 이런 라이브러리 없나 생각한다. 얼마전에는 코드에 문제가 생겼을때 중간에 찾는 방법이 없을까 고민하던중 tdd라는 방법이 있는것을 알게되었고 mocha라는 라이브러리를 사용하게 되었다. 터미널에서 cdcd 하는거 불편해서 방법이 없나 찾아보니 autojump 라는 라이브러리가 있는걸 알게되었고 brew를 이용해서 다운을 받았다. j로 이동할 장소를 타이핑하는게 귀찮아서 찾아보니 auto-suggestion이라는 라이브러리가 있다는것을 또 알게되었다. vscode에서 commit을 작성할때 커밋내용을 작성할때 하이라이팅이 있었으면 좋겠어서 vim을 커스터마이징하기도 했다.

내가 개발자가 될 수있었던건

  • 스터디
  • 수많은 시행착오
  • 코드스쿼드

나는 9개월동안 10번도 넘게 코딩을 그만 두려고 했고 2번의 큰 위기가 있었다.
코딩은 설계를 구현하는것이다. 따라서 로직만 알고있으면 무조건 할 수 있다. 구현을 하기위해서는 언어에 대한 기본지식이 필요하다. 이 기본지식을 얻기위해서는 어느정도의 시간이 필요하고, 이때문에 코딩을 잘하기위해서는 순서가 있다고 생각한다.

앞으로도 자신만의 페이스를 지키면서 무조건 할 수 있는 일이라고 생각하고 설계하고 방법을 찾으려고 한다.

9개월째에 나는 개발을 싫어하지 않게 되었다.
개발자라고 생각은 하지만, 아직 너무나도 갈길이 멀기에 개발자지망생...? 정도이지 않을까 싶다.
그래도 자기만의 페이스를 지키면서 계속 설계와 구현을 해나가다 보면 어느새 업계에서 일하는, 평범한 개발자가 되어있지 않을까?

서비스를 만들기 위해 코딩을 하고있고, 코딩은 재미있는 일이다. 무엇이 되기 위해 애쓰다보면 재미도, 행복도 잃게되니까
너무 진지하지도 않고, 또 너무 욕심을 부리지도 말며, 유쾌함을 잃지 말자고 다짐한다ㅎㅎ
회고 끝!