PLAYDATA 주간회고

플레이데이터 풀스택 백엔드 9기 4월 4주차 회고

Berry-mas 2025. 4. 27. 23:42

플레이데이터 풀스택 백엔드 9기 6주차 주간회고 및 학습기록 (여섯번째 기록)


Facts

이번 주는 첫번째 프로젝트를 진행했다. 이틀짜리 프로젝트였지만 생각보다 체력적, 정신적으로 쉽지 않았다. 팀원분들이 다 너무 잘하는 분들이라 다행이었다. 팀플하는 내내 1인분이라도 하려고, 폐 끼치지 않으려고 노력했던 것 같다. 내 몫을 얼마나 잘해냈는지는 알 수 없으나 다행히도 내가 구현한 기능이 정상적으로 작동했다. 
프로젝트를 진행하면서 개발이라는 것이 단순히 코딩만 하는 게 아니라는 걸 깨달았다. 작성해야 할 문서가 많았다. 근데 이게 뭐랄까, 업무를 위한 업무가 아니라 정말로 필요한 업무였다. 처음에 선생님께서 작성해야 할 문서들을 알려주셨을 때는 "굳이 저걸 다 해야한다고?"하는 생각을 했었으나, 막상 구현하는 단계에 들어가서는 그 문서들을 몇번이고 다시 읽었다. 그냥 경험을 위해 작성해보아야 하는 문서가 아니고, 진짜로 필요한 문서들이었던 것이다. 특히 스토리보드와 MSA 설계서를 많이 봤던 거 같다. 구현해야 할 복잡한 시스템을 단순하게 쪼개는 행위는 꼭 필요하고, 이를 위한 작업들이 바로 앞서 진행한 문서 작업들이다. 이 작업이 없었으면 코딩이 훨씬 어려웠을 것이다. 앞으로 훨씬 복잡한 프로젝트를 진행할수록 문서작업들의 중요성은 더욱 커질 것이다. 
너무 팀프로젝트에 대해서만 썼는데, 이번 월요일에는 학원에서 지필평가도 봤다. 공부해야지, 공부해야지 생각만 하다가 결국 아침에 지하철에서 정신없이 노션을 뒤적거렸다. 다행히 시험은 어렵지 않았지만 "엥 이걸 틀렸다고?' 하는 문제도 3~4개 있었다. 반성 좀 해야곘다. 솔직히 기초 중의 기초 같은 문제였는데, 이걸 틀렸다니...자존심 상하는 일이었다. 그 와중에 잘못 찍어서 틀린 건 무엇,,,내 허당끼는 여전한가보다. 아무튼 다음 지필평가는 자존심을 회복하는 시험이 되면 좋겠다.


Feelings

이번 프로젝트는 내게 자존심 스크래치의 연속이었다. 나름 완벽주의를 추구하는 내게, 완벽주의는커녕 1인분을 할 수 있을까 전전긍긍하는 건 꽤나 자존심 상하는 일이었기 때문이다. 근데 사실 속상해할 시간조차 없었다. 프로젝트를 마친 후 지나간 생각들을 다시 모아 곱씹어보니 내가 얼마나 부족했는가 다시 한 번 느꼈을 뿐이다. 운좋게(?) 그리 어렵지 않은 업무를 맡게 되었지만, 다른 팀원분들이 하신 걸 내가 하게 되었다면 아마 훨씬 많이 헤맸을 것이다. 난 감도 못 잡았던 것을 (특히 ERD 설계는 내게 정말 어려운 일이었는데 정말 감사하게도 한 팀원분께서 금방 하셨다) 다들 뚝딱뚝딱 잘 해내시는 걸 보면서 나름의 열등감도 느꼈던 거 같다. 이런 감정과 생각 하나하나를 내 원동력으로 삼아야겠다. 특히 이번 연휴,,,막 살면 안되겠다.
그래도 이번 프로젝트를 진행하면서 꽤나 즐거웠다. 풀이과정을 통해 답을 내는 과정을 마치 수학 같기도 했다. 특히 구현을 위한 해답이 여러가지인 점이  맘에 들었다. 그리고 코드와 결과 사이의 밀당은 꽤나 매력적이다. 어떨 때는 기도를 해도 원하는대로 잘 안되다가, 갑자기 "어? 이렇게 하면 될 거 같은데?" 하는 생각이 번쩍 들어서 작성한 코드가 잘 되었을 때의 희열은 중독적이다. 물론 내 해답은 효율적이지 않은 답안이고, 원하는 대로 구현되지 않아서 받은 스트레스가 더 많았다. 이런 아쉬움을 보충하고 실력을 키우는 데 있어 프로젝트 참여가 제일 효과적이라는 생각이 든다. 미룰 수 없는 상황에서 정신없이 코드를 짜다보면 순식간에 성장할 수 있을 것이다. 


Findings

지필평가 오답노트 1. ==와 .equals()

  • ==
    - 기본형에서는 값 자체를 비교
    - 참조형에서는 객체의 주소를 비교
    - 동일성 비교
  • .equals()
    - Object 클래스에서 정의된 메서드
    - 객체의 내용(값 자체)을 비교
    - 동등성 비교

지필평가 오답노트 2. JDK vs JVM vs JRE vs JIT

  • JVM (Java Virtual Machine)
    - 실행 환경
    - 메모리 관리 / 스택 및 힙 메모리 관리 / 클래스 로딩
    - Java 애플리케이션을 실행시키는 핵심 요소

  • JDK (Java Development Kit)
    - Java 개발 도구 모음
    - 컴파일러, 디버거, JRE 등 포함 (개발 시 사용하는 도구)
    - 메모리 관리 자체는 담당 x

  • JRE (Java Runtime Environment)
    - JVM + 필수 라이브러리 = 실행환경 (JRE)
    - 직접 메모리 관리 x / JVM에 메모리 관리 기능 제공

  • JIT (Just-In-Time Compiler)
    - JVM의 일부로, 바이트코드를 네이티브 코드로 변환
    - 바이트코드: 사람과 컴퓨터가 직접 이해하지 못하고, JVM만 실행할 수 있는 중간코드
    - 네이티브코드 : 컴퓨터가 직접 이해하고 실행할 수 있는 기계어 (0과 1)

프로젝트를 통해 알게 된 점
- 한 번도 협업을 해본 적이 없어서 어떻게 해야할 지 감이 안 잡혔다. 선생님께서 알려주신 대로 폴더 구조를 짜고 나니 협업 방식이 이해가 됐다.

menu/
├── MenuController.java
├── MenuService.java
├── MenuView.java
├── MenuDTO.java

cart/
├── CartController.java
├── CartService.java
├── CartView.java
├── CartDTO.java

money/
...

이렇게 하면 서로 충돌날 일이 거의 없어진다. 각자 맡은 기능만 구현하고 하나의 폴더로 합치면 되는 거라 서로 건들 것이 전혀 없기 때문이다. 덕분에 우리 팀은 거의 충돌 없이 병합이 잘 이루어졌다. 


Future

1. 이번 연휴 계획
- 5/1 (목) : 팀원들이 작성한 코드 리뷰 / HTML 복습 및 실습 문제
- 5/3 (토) : CSS 복습 및 실습 문제 / JDBC 복습 / 모델링 복습
- 5/4 (일) : 자료구조와 알고리즘 복습 및 백준 문제 풀이
- 5/5 (월) : 자바스크립트 복습 및 실습문제
- 5/6 (화) : day-off
 
2. 다시 운동을 시작해야겠다. 약 3주 동안 살만 쪘다.

3. 야구를 보며 코딩을 하면 스트레스가 2배가 된다. 적어도 코딩을 하는 동안에는 야구 생각을 하지 말아야겠다 (제발,,,)

프로젝트를 마치고 바로 잠실야구장으로 향했다. 근데 졌다...