회고/코드스쿼드 - Java 과정

[TIL] 코드스쿼드 2022 백엔드 33일차 회고(7주차)

jwKim96 2022. 2. 23. 23:14

오늘은 무슨 일이?

조금씩 익숙해져가는 페어 프로그래밍

이번주는 쭉 페어프로그래밍으로 미션을 진행하고 있는데, 몇달치 말을 이번 2일에 다 한것같은 느낌이 들었습니다.
월요일에는 휴식없이 쭉 달려서 피로가 많이 누적되었고, 화요일은 빨리 구현하고싶은 마음에 페어를 배려하지 못했습니다.
그래서 오늘은 스크럼을 마치고, donggi그라운드 룰을 다시 정했습니다.

  • 20분 마다 드라이버, 네비게이터 바꾸기(하던 중이라도 얄짤 없이 교체)
  • 2시간 마다 30분 혹은 식사시간 되면 바로 휴식하기
  • 드라이버와 네이게이터의 역할을 분명하게 정의
    • 드라이버 : 간단한 변수명이나 짧은 로직, 커밋 메세지 등은 드라이버의 재량에 맡김
    • 네비게이터 : 더 넓은 시야로 바라보며 조언(네이밍 컨벤션, 메소드 분리, 객체의 역할과 책임 확인 등)

이전에도 20분마다 드라이버네비게이터를 교체하자고 룰을 정했었지만, 개발하다보니 잘 안지켜졌습니다.
('이것만 다하고 드릴게요', '이것만 마무리 할게요' 등등..)
그러다 보니 점점 교체안하는 시간이 길어지고, 두 역할 사이의 경계가 모호해졌습니다.
그래서 정해진 시간이 되면, 칼같이 교체하기로 규칙을 정했습니다.

그 다음은 휴식에 대한 규칙입니다.
월요일, 화요일 모두 휴식시간을 제대고 정하지 않아서, 오랜시간 동안 연속해서 집중하게되어 체력적으로 너무 힘들었습니다.
그래서 2시간마다 30분 휴식을 하거나, 식사시간이 되면 무조건 쉬었습니다.
이렇게 중간에 휴식 시간을 넣으니, 과열되었던 엔진을 식히듯 머리를 식히는 시간이 되었고
다시 페어프로그래밍에 들어가도 크게 힘들지 않았습니다.

마지막으로 각 역할마다 할 일을 구체적으로 명시하였습니다.
이전에는 변수명, 메서드명 하나까지도 합의되면 작성하는 형식으로 하다보니, 협의해야할 사항이 너무 많아 둘다 피로가 많이 쌓였습니다.
객체가 각자의 역할과 책임을 갖는것 처럼, 드라이버네비게이터 각자의 역할과 책임을 구체적으로 정했습니다.
이렇게 해보니, 드라이버는 정말 간단한 변수명이나 로직을 작성할때 협의를 안해도 되다 보니 피로감이 줄어들었고,
네비게이터도 사소한 것 보다는 한걸음 뒤에서 전체적인 구조와 흐름을 고민하게 되어 좋았습니다.

운영체제 스터디

매주 수요일 마다, 반효경 교수님의 운영체제 강의를 기반으로 스터디를 하고 있습니다.
이번주는 스터디 3주차로 프로세스 관리에 대해 각자 공부하고 공유하는 시간을 가졌는데요.
이전에 CS10 과정에서 메모리와 프로세스에 대한 미션을 한 적이 있었는데, 그때 참고용으로 이번주 강의를 일부 들었습니다.
당시에는 미션을 구현해야해서 마음이 급하여 강의를 다 듣지도 못하고 미션을 구현했었는데요.
이번 기회에 처음부터 쭉 들으면서 애매하게 알고있던 내용을 정리하는 시간을 갖게되어 좋았습니다.

이번주 발표는 Ader루이가 맡아주셨는데요.
Ader는 PCB와 Context switching에 대해 쉽게 풀어서 발표하며, 중간 중간 퀴즈를 섞어주셔서 재밌게 발표를 들었습니다.
그리고 루이는 4강, 5강의 내용을 깔끔하게 정리하여 되짚어 주셨는데, 그 중에서 fork()와 exec() 시스템콜에 대한 내용을
간단한 C 코드 예제를 통해 설명해주셔서 재밌었습니다.

그리고 JVM에서 사용자 스레드, 커널 스레드 중 어떤 스레드를 이용하는지에 대한 내용과
프로세스 큐는 각 노드는 PCB 이며, 각 노드의 포인터가 다음 노드를 가리키는 LinkedList 구조로 되어있다는 점이 흥미로웠습니다.

인상깊었던 점은?

  • 잠시라도 휴식을 갖는것과 안갖는 것의 차이가 극명하다..!
  • 로니가 공유해준 JVM 스레드 관련 내용👍

아쉬웠던 것은?

  • 요 몇일 루테인을 깜빡했더니 눈이 다시 뻑뻑하다..