2022년 회고 (3) 백엔드 개발자가 되겠어 ✊


난생처음 CS스터디
우아한테크코스 프리코스 3기, 코드스쿼드 프리코스 후기

아직도 2022년 이라니 질릴만도 합니다만... 살면서 가장 바빴던 시기이자 가장 열정적인 시기를 보내고 있는만큼 좀 더 잘 기록하고 싶은 욕심에 글이 길어지고 있습니다. 1년을 3년처럼 살았으니 3편정도는 써야되지 않겠습니까? 허허

나중에 개발자 경력이 더 쌓였을 때도 과거 초심자의 역사를 즐거운 마음으로 다시 읽어보면 좋겠습니다.


백엔드 개발자가 되고 싶어요


이때 즈음부터 백엔드 개발자가 되어야겠다는 결심을 했다. 왜 백엔드인가 하면.

처음에는 나는 프론트엔드가 더 잘 맞는다고 느끼기도 했다. 이전에 기획자로서 했던 일도 이용자와 직접 접하며 생기는 인터액션에 대한 풍부한 상상이 필요했었다. 프론트엔드가 다루는 부분이 연장선으로 여겨져서 익숙했었다. 아무래도 처음 웹 개발을 접하다보니 가장 자주 마주하는 웹페이지가 편한 이유도 있었다.

하지만 공부를 거듭할수록 보여지는 것에 구애받지 않고 온전히 비즈니스 로직에 집중할 수 있는 백엔드의 매력에 푹 빠졌다. 복잡한 문제를 잘 나누어서 효율적으로 처리할 수 있다는 점. 구현을 하는 방법이 매우 다양한데 그 중에서 적절한 방법을 찾는 것이 퍼즐을 푸는 것처럼 즐겁게 느껴졌다. 무엇보다 광범위한 부분을 이해하고 컨트롤 할 수 있다는 점도 성격에 잘 맞았다.

지금도 이 결정은 내게 잘 맞는 선택을 했다는 생각이 든다.

그런데 왜 이렇게 알아야 하는 것이 많죠?


2022년 8월~12월 : CS 스터디 : 환멸의 계곡

한편 8월부터 교육과정에서 만난 동료와 함께 스터디를 시작했다. 짧은 국비교육과정에서 다루지 않는 것들이 많다보니 그 부족함을 채우기 위함이었다.

undefined
스터디 이름이 환멸의 계곡인 이유... ⭐️ 환멸의 계곡에라도 빠졌으면 좋겠다는 의미였다. 가트너의 하이프 사이클에서 Trough of Disillusionment 단계는 "환멸의 계곡" 이라고도 불린다. 이미지 출처는 위키백과 https://ko.wikipedia.org/wiki/하이프_사이클

처음에는 자료구조와 알고리즘을 공부하며 코딩테스트를 대비해보자고 시작했지만 컴퓨터 공학을 전공하였던 동료의 리드에 맞추어 영역을 CS로 넓혀 공부했고 2명이라는 적은 인원에도 주 2회씩 총 45회차나 진행했으니 꽤 길게 이어나간 것이다. (repository) 매주 각각 2~4개 주제를 공부해와서 하나씩 쌓아갔다.

모임일지 겸 자료창고인 Notion 페이지

사실 스스로 느꼈던 한계는 분명했다. 워낙 빠른 시간 내에 하던 스터디이다보니 공부 방식도 다른 사람들이 정리해둔 블로그에 많이 의존했고 뼈문과 출신인 나에게는 기본 지식이 없는 상태에서 공부하다보니 사상누각과 같은 한계가 있었다. 실제로 이 지식이 어디에 적용되어있는지 모르다보니 전체적인 그림보다는 새로운 키워드를 입수하고 추상적으로 이해할 수 밖에 없었던 것이다.

그럼에도 이런 전문 지식을 잘 설명해줄 수 있는 누군가와 함께 공부한다는 그 자체만으로 많은 도움이 되었고, 의지가 되었던 스터디였다. 이 때 처음 배웠던 개념들이 이후에도 반복적으로 등장하면서 점점 이해도가 높아져가는 기반이 되었다.

코드스쿼드 프리코스


2022년 11월 : 코드스쿼드 마스터즈 BE 프리코스

사실 이때만해도 바로 취업을 하고 싶었다. 5.5개월동안 열심히 했으니 바로 취업할 수 있지않을까? 생각을 했는데. 공부를 하면 할 수록 나의 부족한 점만 크게 느껴졌다.

근데 이때쯤 코드스쿼드 프리코스​를 모집한다는 정보를 입수했다. 어차피 취준하느라 공백일 한 달. 가이드라인을 받아 다시 방향성도 잡고 루틴하게 공부시간도 가질겸 신청했다. (어째 국비교육을 신청했을 때랑 같은 의식의 흐름..🤔?) 이때는 몰랐다 이 과정이 얼마나 많은 에너지를 필요로 하는지...

  • 당시 선택에 큰 도움이 되었던 블로그 글
[후기] 코드스쿼드 2022 마스터즈 코스 수료 (웹 백엔드)
후 길다면 길었고, 짧다면 짧은 6개월이 금방 지나가 버렸다~ (위 닌자 로고의 마지막 기수 ㅎㅎ 2022 과정 중간에 매듭? 같은 걸로 변경됐는데... 개인적으로 별로.... 뭐랄까... 코드스쿼드 멤버들의 언더독? 같은 느낌이 사라졌달까?.... 닌자 로고 짱!!) 2022년 1월 1일. 부트캠프 코드스쿼드에 참여하여 공부하던 게 엊그제 같은데... 어느덧 6개월이 지나 코드스쿼드 과정은 7월 1일부로 마무리했고 수료식도 했다. 같은 목표를 가지고 함께 공부할수 있는 팀원들을 얻게 되어 너무 행복하다 ㅎㅎ!! 1. 과정 시작 전…
(2021) 1. 비전공자로 자바 백엔드 개발자 시작하기
저는 개인적으로 이런 이야기를 하는 것을 썩 좋아하진 않습니다. 어떤 사람의 커리어나, 그 사람의 현재 위치는 운이 굉장히 큰 영향을 끼쳤다고 믿기 때문입니다. 그 사람이 했던 방식, 했던 선택들을 그대로 한다고 해서 똑같은 결과물이 나온다는 보장이 없다고 생각합니다. 그래서 누군가의 상황을 듣고, ”아! 그런 상황은 이렇게 이렇게 해보세요” 라고 조언할 수가 없습니다. 일단, 저도 모든 선택이 다 처음이여서요. 리셋버튼 누르면서 2~3회차 살아온게 아니라는거죠. 꽃보다 누나에서 윤여정 선생님과 이승기님의 이야기는 꼭 한번 보시면…

프리코스에서 배웠던 것들

한참 코로나로 인한 거리두기 중일 때라 프리코스는 온라인으로 진행되었다. 클래스의 개념, JVM의 메모리 구조, 힙 메모리와 스택 메모리부터 차근차근 배우기 시작했는데 그동안 기능 구현을 중심으로 학습해왔던 나에게는 신세계이자 이해하기 어려운 내용들이었다. 이런 개념들을 어떻게 학습해야 할 지 학습 방법부터 새로 배워야 하는 것들이 많았다 🥹

다음이 프리코스 4주 과정동안 에서 주로 배웠던 것들이다.

  • 객체지향의 주요 개념과 구현
  • 주요 자료구조의 개념과 구현
  • 자바의 컬렉션 프레임워크

특히 지금도 심취해있는 객체지향에 대한 짝사랑이 이때부터 본격적으로 시작되었던 것 같다 ... 하하

코드스쿼드 프리코스 1주차 회고

동시에 위의 내용과 함께 얻을 수 있었던 것은 학습하는 방향과 습관이다. 어떤 것을 더 잘 알아야하는지에 대한 학습 방향 가이드라인이 있었고 오후부터 시작하는 코어타임에 동료들과 학습한 내용을 공유하는 것도 방향을 잡는데 큰 도움이 되었다.

코드스쿼드는 수강생들은 자유롭게 방목한 채로 스스로 성장하게 한다.

이게 이전 국비교육을 들었을 때와 가장 큰 차이점이었다. 하루 코어타임이 8시간이라고 해도 짜여진 스케줄은 별로 없고 코어타임동안 자유롭게 공부하고, 필요할 때 동료들과 대화하며 부족한 부분을 채워나갔다. 그리고 이 스타일이 나에게 꽤 잘맞았다.

그리고 더 공부를 하기로 했다.

어떤 영역이든 이런 어려움이 따를테지만, 개발을 배우면서 가장 괴로운 점은 분명히 나는 공부를 하고 있다고는 하는데 모르는 것이 지수적으로 증가한다는 것이다. 심지어 이미 공부를 한 내용도 사실 정확하게 알고 기억하기란 어려웠다.

그런데 아이러니하게도 동시에 이것이 가장 즐거운 점이기도 하다. 내가 모르는 것이 계속 존재하고 개념과 기술의 꼬리를 물며 학습하고, 이전에 학습했던 것을 기반으로 직접 구현할 수 있다는 것이 새로운 세계를 탐험하는 것 같았다.

그리고 내게 필요했던 것은 이 탐험을 어떻게 스스로 할 수 있느냐에 대한 연습이었던 것 같다. 내게는 그 연습시간이 더 많이 필요했고 당시에 바로 취업하기보다는 더 공부하고 싶었다. 스스로 부족함을 많이 느꼈다.

그래서 고민고민하다 코드스쿼드 마스터즈 본과정까지 듣기로 결정하고 입과시험을 보았다. 그리고 운이 좋게 마스터즈 코스(오프라인 과정)에 합격할 수 있었다.

Sun, Earth, Moon
날짜를 입력하세요.
1991년 7월 8일
ㅤㅤㅤㅤㅤㅤ﹡ㅤㅤㅤㅤㅤㅤㅤㅤㅤ+ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ..ㅤ..ㅤㅤ+..ㅤㅤ+ㅤ.ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤ*ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ.ㅤ.ㅤㅤㅤ..ㅤㅤ*ㅤ+ㅤ.ㅤ+.ㅤㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ+ㅤㅤㅤㅤ..ㅤ.ㅤㅤㅤ.ㅤㅤㅤ+ㅤ..ㅤ+ㅤ.ㅤㅤㅤ.
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ.ㅤㅤ.ㅤㅤ.ㅤㅤ+ㅤㅤㅤ..+ㅤㅤㅤㅤ...ㅤ
ㅤㅤㅤㅤㅤ.ㅤㅤㅤㅤㅤㅤ+ㅤㅤㅤㅤㅤㅤㅤㅤㅤ.ㅤ.ㅤㅤㅤㅤㅤ+.ㅤ+ㅤㅤ.ㅤ.ㅤㅤㅤ..ㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ...ㅤㅤ.ㅤㅤㅤㅤ..+ㅤㅤㅤㅤ+...ㅤㅤ.ㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ"You Are Here!".ㅤ.*.ㅤㅤ+ㅤㅤ+ㅤㅤ.ㅤㅤㅤ.ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ |ㅤ.ㅤㅤㅤ.+ㅤ.+ㅤ.ㅤ.ㅤ.ㅤㅤㅤㅤㅤㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ.ㅤㅤ゜ㅤ\|/ㅤ+ㅤ.+.*ㅤㅤㅤㅤㅤㅤㅤㅤㅤ.🌞ㅤㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ..ㅤㅤㅤVㅤㅤ+ㅤ.ㅤ+ㅤ.ㅤ.ㅤㅤㅤ.ㅤ.ㅤ*ㅤㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ+ㅤㅤㅤ🌍.ㅤㅤㅤㅤ.++ㅤㅤ.ㅤㅤ.ㅤㅤㅤㅤㅤㅤㅤ.ㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ.ㅤㅤㅤ.*.ㅤㅤㅤㅤㅤㅤ+ㅤㅤㅤ+.ㅤㅤㅤㅤㅤ.ㅤㅤㅤㅤㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤ.ㅤㅤㅤㅤㅤ.....ㅤ.ㅤㅤㅤㅤ+ㅤ+ㅤㅤ..ㅤㅤㅤㅤㅤ.ㅤㅤㅤㅤㅤㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ..ㅤㅤ.ㅤㅤ..ㅤ.+.ㅤ.ㅤㅤ+ㅤㅤㅤㅤ.ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ+.ㅤㅤ.ㅤㅤ.ㅤㅤ.ㅤㅤㅤ.++.ㅤ..*ㅤ.ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
ㅤ+ㅤㅤㅤㅤㅤㅤㅤㅤㅤ.+.ㅤㅤ.ㅤㅤ..🌓ㅤ.ㅤㅤ..ㅤㅤ.ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ.ㅤㅤ*ㅤㅤ.ㅤ.ㅤ.ㅤ+..+ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤ...ㅤㅤㅤ..+ㅤㅤㅤ.+.ㅤ.ㅤㅤ.ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ.ㅤ.ㅤㅤ.ㅤㅤ++ㅤㅤㅤ.ㅤㅤ...*ㅤㅤㅤ*ㅤㅤㅤ.ㅤㅤㅤㅤㅤ
+ㅤㅤㅤㅤ...ㅤㅤㅤㅤㅤ.ㅤ+.ㅤ.ㅤㅤ+.ㅤㅤㅤㅤㅤ.ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

입과시험이었던 '멋있게' 출력한 우주. 입과시험이 내 취향 저격이어서 엄청엄청 즐거웠던 기억이 난다. 화면에는 없지만 행성과 로켓 등 요소가 몇 개 더 있다.

private void putMoon(String[][] space, int x, int y, double angle){
    double radian=Math.toRadians(angle);
    float nx = Math.round(x+(space.length/10*Math.cos(radian)));
    float ny = Math.round(y+(space.length/10*Math.sin(radian)));
    
    if(space.length/2<nx && nx<x){       // 달이 지구와 태양 사이에 있다면 반달로 저장
        space[ny][nx]="🌗";
    }else if(x<nx &&nx<space.length/2){
        space[ny][nx]="🌓";
    }else{
        space[ny][nx]="🌝";
    }
}

입과시험에서 썼던 코드 중 가장 맘에 드는 코드. 달 위치를 표시할 때 태양과 지구와의 거리를 고민해서 반달을 출력하는 것도 넣었다.