본문 바로가기
💬 Smalltalk

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

by iirin 2023. 11. 18.
케케묵은 지난글 👇
2022년 회고 (1) 커뮤니티 기획자가 개발자를 꿈꾸게된 이야기
2022년 회고 (2) 풀스택 국비교육 수강기

매우 늦었고 내용이 별거 없어서... 조금 부끄럽지만...

시작한 글을 마무리해보겠다는 의지로 gitpage에 숨겨져있던 글을 끌고 왔습니다.

 

백엔드 개발자가 되어야겠다!

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

사실 처음에는 나는 프론트엔드가 더 잘 맞는다고 느끼기도 했다. 이전에 기획자로서 했던 일도 이용자와 직접 접하며 생기는 인터액션에 대한 풍부한 상상이 필요했었기 때문에. 프론트엔드가 다루는 부분이 연장선으로 여겨져서 익숙했었다.

아무래도 처음 웹 개발을 접하다보니 가장 자주 마주하는 웹페이지가 편한 이유도 있었다.

 

하지만 공부를 거듭할수록 보여지는 것에 구애받지 않고 온전히 비즈니스 로직에 집중할 수 있는 백엔드의 매력에 푹 빠졌다.

복잡한 문제를 잘 나누어서 효율적으로 처리할 수 있다는 점. 구현을 하는 방법이 매우 다양한데 그 중에서 적절한 방법을 찾는 것이 퍼즐을 푸는 것처럼 즐겁게 느껴졌다. 어플리케이션 외에도 데이터베이스나 네트워크 등 환경마다 효율적인 방식을 측정하고 선택하는 것도 매우 매력적이었다. 무엇보다 광범위한 부분을 이해하고 컨트롤 할 수 있다는 점도 성격에 잘 맞았다.

 

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

 

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

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

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

 

 

스터디 이름이 환멸의 계곡인 이유는... 환멸의 계곡에라도 빠졌으면 좋겠다는 의미였다 🥲 우리는 우매함의 봉우리를 올라가지도 못하는 실력이었으니까.

(가트너의 하이프 사이클에서 Trough of Disillusionment 단계는 "환멸의 계곡" 이라고도 불린다. 이미지 출처는 위키백과 https://ko.wikipedia.org/wiki/하이프_사이클)

 

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

 

 

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

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

 

이 스터디는 아쉽지만 내가 다른 부트캠프를 듣기로 결정하면서 마무리하게 된다.

 

코드스쿼드 프리코스

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

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

근데 이때쯤 코드스쿼드 프리코스​를 모집한다는 정보를 입수했다. 예전에 홈페이지에 방문해서 모집 알람신청을 해두었는데, 잊어버릴 때 즈음 알람이 온 것이다.

어차피 취준하느라 공백일 한 달. 가이드라인을 받아 다시 방향성도 잡고 루틴하게 공부시간도 가질겸 신청했다. 이때는 몰랐다 이 과정이 얼마나 많은 에너지를 필요로 하는지...

 

  • 당시 선택에 큰 도움이 되었던 블로그 글
 

(2021) 1. 비전공자로 자바 백엔드 개발자 시작하기

저는 개인적으로 이런 이야기를 하는 것을 썩 좋아하진 않습니다. 어떤 사람의 커리어나, 그 사람의 현재 위치는 운이 굉장히 큰 영향을 끼쳤다고 믿기 때문입니다. 그 사람이 했던 방식, 했던

jojoldu.tistory.com

 

 

프리코스에서 배웠던 것들

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

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

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

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

 

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

 

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

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

이게 이전 국비교육을 들었을 때와 가장 큰 차이점이었다. 하루 코어타임이 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]="🌝";
    }
}

지금보면 부족함 투성이지만, 입과시험에서 썼던 코드 중 가장 혼자 뿌듯했던 코드. 달 위치를 표시할 때 태양과 지구와의 나란히 선 순서를 고민해서 반달을 출력하도록 넣었다ㅎㅎ

그리고 역시.... 합격 기준은 잘 모르겠다...; 

 

2022년을 마무리하며

한 해동안 진로를 확 트는 경험을 하면서 오랜만에 집중해서 무언가 하며 피가 도는 듯한🔥 경험을 하고 있다.

1년으로 끝날 줄 알았던 학습과 적응 기간은 '좀 더 제대로 알고 싶다'라는 욕심하에 2년차까지 이어졌다. 취준 기간을 유예하려는 나의 얄팍한 심리상태인가 싶기도 했지만. 이왕 결정한거 잘 학습하는 방법을 익히는 것이 내년의 목표가 되었다.

미완성의 한 해가 된 것 같지만 길게 보면 중요한 선택의 한 중간일 기간일 것 같다.

 

2022년 고생했다. 시작한 달리기에 지치지 말고 2023년을 보내자