본문 바로가기

diary/codestates (be39)

05/23/22 코드스테이츠 Section 1을 마치면서

4월 25일부터 시작한 백엔드 엔지니어링 부트캠프 과정이 벌써 29일차로 Section 1을 마치게 되었다. 돌아보면 매일매일을 바쁘게 보내온 것 같은데 바빴던 만큼 성과가 있었나 돌아보기 위해 Section 1의 전체적인 회고를  작성한다.

 

29일 간의 여정 🐑

바쁘게 달려온 것 같은데 막상 카테고리로 적어보자니 이렇게 심플할 일인가 싶다.

일단 각 주제별로 무엇을 배웠고, 무엇을 보충해야 할지 적어본다.

 


Html/Css

배운 것

이번 과정의 시작을 열어준 두 친구다. 그래도 웹 프로그래밍 수업을 들을 때 어느정도 다뤄봤다고 생각했었는데 막상 다시 보니 정말 새롭고....... 역시나 어려웠다. 태그야 찾아서 쓰면 된다지만 레이아웃을 나누는 게 개인적으로 조금 힘들었다. 특히 flexbox를 사용할 때 구역을 묶어 flex-direction을 설정하는 데서 애를 먹었다. 바닥에 달린 미적 감각이야 둘째 치더라도 레이아웃 정도는 능숙하게 만들어낼 수 있겠지 싶었는데 결국 마칠 때까지 능숙하게는 다루지 못했다. 그래도 html과 css의 대략적인 사용법은 익힐 수 있었다.

보충할 것

일단 이번 과정에선 태그를 보고 무엇을 다루고 있는지 인식할 수 있을 정도로만 잡고 가려고 한다. 따라서 당분간은 보충하지 않을 예정이다.

 


Linux

배운 것

이번 부트캠프를 들으면서 느끼는 건 정말 기록하지 않고, 복습하지 않으면 잊어버리는 것은 너무 쉽다는 것이다. 리눅스 역시 어느 정도 안다고 생각했지만 막상 다시 사용해보려니 기초적인 명령어부터 헷갈리기 시작해서 결국 처음부터 다시 봐야 했다. 그래도 사실 리눅스를 사용해서 많은 것을 해보는 과정이 아니라, Git을 사용하기 위한 CLI 명령어 정도를 익히기 위한 과정이어서 비교적 커리큘럼은 쉽게 따라갈 수 있었다. 제일 신기한 건 Virtual Machine을 사용하지 않고, 윈도우 터미널만으로 리눅스를 사용할 수 있게 되었다는 것(!)이었다. 리눅스는 그래도 나름 재밌게 들었던 수업이라 이렇게 다시 만난 겸 다시 공부해보고 싶었지만 몰려오는 학습 과정으로 인해 이것 역시 당장은 보류해야 할 것 같다. 공부는 왜 해도 해도 끝이 없는지 😭

보충할 것

정리 포스팅하기

해야지, 해야지 하면서 결국 CLI 명령어와 단축키를 정리해놓지 못했다. 

 


Git

배운 것

그동안 Git이 무엇인지, Github와는 어떤 관계를 가지고 어떻게 사용하는지 전혀 알지 못했는데 이번 기회에 확실하게 잡고 갈 수 있었다. Git을 사용하는 법은 이론을 공부하면서보다는 과제를 제출하면서 많이 익힐 수 있었다.

보충할 것

정리 포스팅하기

Git 역시 정리하려는 시도는 많이 했었는데 정작 하려고보니 내용이 너무 방대하게 느껴져 아직 작성하지 못했다. 영상 강의를 몇개 추려봤는데 개인적으로 영상보다는 텍스트가 잘 들어오는 편인 것 같다. 그런 이유로 일단 심화적인 내용은 조금 뒤로 미뤄두고, 기초적인 부분(push, pull)만 명확하게 정리해놓고자 한다.

 


Java

이번 Section의 메인이다. 처음의 일주일 가량을 제외하고는 나머지 시간들은 모두 Java를 위한 시간이었다. Java를 많이 사용해보지 않아서 헤매면서 어떻게 Section 1을 마쳤다.

Java는 많이 중요한 부분이고, 앞으로 주언어가 될 것 같아 하위 카테고리 별로 다시 나눠 세부적으로 정리해본다.

 


Java 문법 기초

배운 것

변수 선언과 할당,  데이터 타입과 배열, 조건문과 반복문 등의 가장 기초적인 부분을 배웠다. 그래도 여기까지는 자주 봐온 것들이라 개념적으로는 익숙했지만 정작 코플릿을 통해 문제를 푸는 과정에서 내가 많이 몰랐다는 것을 느꼈다. 

보충할 것

왜인지 모르겠는데 if문과 for문은 아주 익숙한 반면 아직도 switch-case문과 while, do-while문은 막상 쓰려면 너무 어색하다. 아무래도 익숙하다보니 더 if문과 for문 위주로 사용하게 되고 그럴수록 또 switch-case, while, do-while문이 어색해지는 악순환이 온 것 같다. 경우에 따라 적절하게 골라 사용할 수 있도록 추가적인 정리와 더불어 문제 풀이로 익숙해질 필요가 있는 것 같다.

 


객체 지향 프로그래밍 - Class (필드, 생성자, 메서드)

배운 것

이 부분은 공부할수록 내가 정말 제대로 알고 있는 게 아니었구나, 를 깨달았다. 특히 객체의 개념에 관해서 두루뭉실하게만 생각하고 넘어갔었는데 이번에 공부하면서 정확히 객체가 무엇이고, 왜 사용하고, 어떻게 생성하는지에 대해 확실하게 잡고 갈 수 있었다. 그동안 메인 Class 하나만 사용하는 게 익숙했는데 Class를 사용하는 이유를 알고, 어떻게 작성해야 하는지 알고 나니까 목적 단위로 Class를 나누어 작성하는 것도 크게 어렵지 않았다. 성취감 Max.

보충할 것

정리 포스팅하기

몇주 전부터 클래스에 관해서 정리를 하려고 시도하고 있는데, 정작 글로 풀어보려니 어려워서 계속 밀리는 중이다. 그래도 틈틈히 작성은 하고 있으니 조만간 포스팅할 수 있겠지 싶다.

 


객체 지향 프로그래밍의 4가지 특징 - 상속, 캡슐화, 다형성, 추상화

배운 것

상속 - Super/Sub Class
캡슐화 - 접근 제한자와 Getter/Setter 메서드
다형성 - Overloading과 Overriding
추상화 - 추상 클래스와 Interface

 

부끄럽지만 아직 이 부분에 대해서 명확하게 이해한다고 말할 수 없는 상태다. 대략적인 개념과 사용 방법은 인지하고 있지만 어떨 때 사용해야 하고, 어떻게 사용해야 하는지에 대해 아직 개념적으로 많이 흔들린다. 

보충할 것

⭐여러 예시를 통해 익숙해지기 + 제대로 된 개념 정리 ⭐(optional. → 정리 포스팅하기)

개념만 주구창창 보면서 이해하려고 시도하는 것보다는, 직접 해보면서 더 잘 이해가 되는 편이라는 것을 최근에 알게 되어서 먼저 여러 예시 코드를 보고 익숙해지면서 개념 정리를 추가로 병행해야 할 것 같다. 포스팅은 하고 싶은데 시간이 날지 모르겠다.

 

 


제네릭 + 컬렉션 프레임워크

배운 것

여기부터 멘붕X100000이 시작되어버렸다. 컬렉션 프레임워크라는 개념 자체도 생소한데 아직 제대로 공부하지 못한 인터페이스까지 나오면서 개념이 뒤죽박죽되기 시작했다. 그래도 다행인 것이, 이 unit에는 페어 프로그래밍 활동이 포함되어 있었다는 것이었다. 좋은 페어분을 만나서 3%에서 시작한 지식을 페어 활동을 마칠 때쯤엔 그래도 70%쯤으로 끌어올릴 수 있었다. 나머지는 문제 풀이 이후 개념을 보면서, 이후 unit에서 stream을 다루면서 채워나갈 수 있어서 정말, 정말, 정말 다행이었다.

+ 컬렉션 프레임워크를 학습하면서 가장 중요하게 깨달은 것은, 내가 개념적인 내용을 보고 이해하는 사람이라기보다는 실제로 내용을 적용시켜보고 직접 사용해보는 과정에서 더 많이 배우는 사람이라는 것이다.

보충할 것

개념 정리

얼추 익숙해지면서 제네릭을 사용은 하고 있긴 한데 사실 아직 제네릭에 대해서 잘 모른다. 제네릭에 대한 추가적인 개념 정리와 컬렉션 프레임워크의 각 인터페이스, 클래스에 대한 명확한 정리가 필요하다. 

 


Java Effective - Enum, Annotation, Lambda, Stream, File I/O, Thread, JVM

배운 것

Effective 역시 멘붕의 연속이었다. enum까진 비교적 괜찮았는데 annotation부터 멘붕이 세게 와서 정신을 못 차렸다. 아직도 annotation은 너무 어렵다. 정보를 주기 위해서 사용한다는 것까지는 알겠는데 아무래도 직접적으로 사용한 적이 오버라이딩할 때밖에 없으니까 너무너무 낯설어 죽겠다.

그래도 역시, 이번에도 페어 프로그래밍의 힘으로 Lambda와 Stream은 비교적 수월하게 넘길 수 있었다. 사용법조차 몰라서 헷갈려하고 있었는데 정말 다행히도 가이드를 잘 잡아주셔서 중반 이후부터는 익숙해지기 시작했다. 이번 Section을 진행하면서는 처음으로 정해진 페어 시간을 초과해서 같이 문제를 풀어봤는데 혼자 하는 것보다는 같이 이야기를 나누면서 수도 코드를 작성하고, 바탕으로 코드를 작성하는 흐름이 많이 도움이 되었다. 

파일 입출력과 스레드 같은 경우는 사실 아직 학습이 많이 모자라서 개념적인 부분만 확인했고, 아직 실제로 적용해보는 시간은 충분하게 가지지 못했다. 

JVM은 다행히도 전에 미리 보충 학습을 하고 있던 게 있어서 다시 한번 확인할 수 있었다. 하지만, 아직 어떤 게 method, stack, heap area에 저장되는지는 조금 헷갈려서 명확히 하기 위해 한번 정리하는 과정이 필요할 것 같다.

보충할 것

개념 정리

전체적으로 개념적으로 많이 부족하다고 느끼는 파트다. 아직 어느 부분을 딱 집어 이 부분이 모자라다고 말하기에는 전체적인 수준이 낮아서 정말 열심히 열심히 다시 학습하고, 적용해보고, 정리하는 과정이 필요하다.

 


총평 🐑

학습 측면에서 모자랐던 것

어려운 내용이 나오기 시작하면서부터는 TIL을 제대로 작성하지 못했다.

  • 완벽하게 알고 제대로 작성하고 싶은 마음이 커서 이것저것 더 찾아보고 정리하려다 보니 정작 매일 기록하기로 했던 TIL은 뒷전이 되어버렸다. 보완하기 위해서 앞으로는 그날 배운 내용은 그날 정리를 해두고, 복습하면서 보완해나가고자 한다.

여전히 모자란 집중력

  • 아무래도 온라인으로 진행되다보니 조금만 방심하는 순간 흐트러지게 되었다. Section 2부터는 타이머를 맞춰 50분 공부, 10분 휴식의 틀을 한번 적용해보려고 한다.

생활 측면에서 모자랐던 것

무너진 생활 패턴

  • 잘 지켜진다 했더니 결국 욕심이 커서 새벽에 잠드는 날이 많아졌고, 수면 시간 부족으로 한번은 늦잠까지 잤다. 욕심부리지 말고 그날 소화 가능한 만큼만 소화하고, 주말을 이용해 보충하자. 최소 6시간 수면을 기준으로 적어도 7시 30분에 일어나는 패턴을 유지해보자.

포기해버린 운동

  • 이것 역시 잘한다 잘한다 했더니 어느 순간 학습에 치여 뒷전이 되어버렸다. 시간이 아깝다고 느껴지는 것이 가장 큰 문제인데, 지속가능한 학습을 위해서는 건강 역시 중요하다는 것을 잊지 말자. 다시 일주일에 3회 런닝을 시작해보자.

그럼에도 잘했던 것 💕

내가 이렇게 많이 배웠다니!

  • 배운 게 없다고, 아직 너무나도 모자라다고 생각했는데 Section 1의 전체적인 내용에 대한 회고를 작성해보니 그래도 내가 많이 배웠고 발전했다는 것을 느낀다. 분명 아직 모자란 것도 많지만, 그만큼 배운 것도 많다는 것을 잊지 말고 계속 나아가자.

Github도 나름...?

  • 잘했다고 하기엔 사실 민망하지만 그래도 나름대로 노력하는 중이다. 아직 다른 내용은 올리지 않고 백준허브를 통해서만 업로드하고 있는데 아무래도 언어에 대한 기본적인 개념이 모자라다보니 문제를 계속 풀어나가기가 힘들었다. 그래도 문제 풀이에 매몰되는 것보다는 먼저 개념의 확실한 학습이 더 중요하다고 생각했다. Section 2부터 시작하는 자료구조와 알고리즘을 학습하고 나면 더 수월하게 풀 수 있을 것이라고 기대해본다. 
  • 그리고 오늘 처음으로 Silver 문제를 풀었다! 물론 Silver V지만 Bronze V도 제대로 못 풀었던 과거를 생각하면 진짜 진짜 진짜 장족의 발전이 아닐 수 없다. 

작성하기 전까지는 이 시간에 모자란 개념을 보충하는 게 낫지 않을까? 생각했는데 작성하고 보니 열심히 달려온 시간을 되돌아볼 수 있는 의미있는 시간이었다. 한달 간의 여정을 작성하면서 그간 학습 중 모자랐던 부분이 어딘지 무엇을 모르는지 잘 알게 되었다. 작성한 보충해야 할 것들을 바탕으로 앞으로 보완해나가고자 한다. 특히, 그동안 내가 너무 모자란 게 아닐까 어떻게 더 잘할 수 있을까 많이 조급하고 답답했는데 그래도 이렇게 돌아보고나니 내가 막 논 건 아니구나, 그래도 발전했구나라는 것을 느끼면서 앞으로 더 나아갈 수 있는 힘이 생겼다. 앞으로도 화이팅!