1. 첫번째 스프린트 이후로 1달간 일어난 일에 대한 회고 ~9:15
첫번째 스프린트 이후로 나에게 의미 있었던 지점 2~3가지를 작성해볼게요.
이 때 좋았던 부분, 성장한 부분뿐만 아니라, 고민할 지점을 줘서 의미있다고 생각한 부분도 좋아요.
이름 | 1달간 일어난 일 중에 나에게 의미 있었던 지점 2~3가지 |
이름1 | |
이름2 | |
이름3 | |
이름4 | |
이름5 |
•
다른 사람들과 함께 스터디하고, 복습
•
이론이나 개념 부분이 재밌는 부분,
•
루즈하거나 지루하게 느꼈던 분들
•
어려움
2. 진도, 실력 차이가 날 때 똑똑하게 개선해나가는 방법
이럴때 어떻게 똑똑한 시도를 해볼 수 있을까요?
승준: 잘하는 분들에게 요청을 드리거나, 참고할만한 자료 요청
성필: 얼마나 못따라 갔는지 파악하기 위해 여러가지 질문을 하고, 어디까지 모르는지 하나부터 열까지 알려줄것 같다. 사수가 있다면, 사수한테 붙어서 배우거나, 사수가 없다면 서비스에 대해 잘 아는 사람에게 어떻게 하는지 도움을 요청하면서 하지 않을까
3. 페어 프로그래밍이란
승준: 전 회사에서 개발자분들과 이야기할 떄 원하는데 시간이 안나서 잘 못하고 있다.
페어 프로그래밍은 최소 '2명'이서 짝이 되어 같이 프로그래밍을 하는 과정이에요.
2명의 역할
•
드라이버
◦
운전하는 사람
◦
키보드를 잡고 입력하는 사람
◦
드라이버가 주도적으로 키보드를 잡고 실제 입력을 다 하는 사람이에요.
•
내비게이터
◦
자동차 운전할 때 핸드폰 네비게이션을 보면서 가잖아요. 네비게이션 자체가 운전을 해주는건 아니지만, 운전을 '잘'할 수 있게 옆에서 도움을 주는 역할이잖아요. 그리고 내 위치가 지금 어디에 있는지, 어느 방향으로 가야하는지 조언을 해주는 역할이에요.
◦
내비게이터는 옆에서 그 입력하는거를 한 발자국 떨어져서 같이 보고, 조언과 피드백을 주는 역할이거든요.
페어 프로그래밍의 장점
•
서로 의견을 내면서 하는거니까 누구는 구조체, 클래스를 만든다 하면 서로 이야기할 수 있으니까 같이 잡아간다
•
코드를 쓰는 의도가 더 명확해질 것 같다
•
한 코드를 쓰기 위해서 대화를 나눠서 적절한 코드
•
최소한 버그가 50%이상 감소함
◦
2명이서 나 || 페어
•
실제로 하나의 앱을 만들고 통합하는데 걸리는 시간이 30%이상 감소하는 효과도
•
전문가의 암묵지를 효과적으로 배울 수 있는 장점
◦
수학 잘하는 친구한테 수학 어떻게 잘해?
◦
페어 프로그래밍을 하면 그 결과를 도출해내는 과정을 함께하기 때문에 말로 설명하기 어려운 '암묵지'를 배우는데 굉장히 도움이 많이 되요
◦
디버깅 하는 방법, 구글링 하는 방법, 코드를 쓸 때 단축키 사용하는 방법
◦
HTML 마크업을 굉장히 잘하는 분이랑 페어 프로그래밍. 의식적으로 가장 적은 수의 마크업으로 유동적인 레이아웃을 만들려고 노력하더라.
•
같이 하기 때문에 각자 코드 짜고 합치는 것보다, ‘통합’이라는 관점에서 빨라지는 장점
•
같이 하기 때문에 혼자서 해결 하기 어려운 문제를 접근하는데 있어서 좀 더 쉽게 다가갈 수 있는 ‘짝용기’가 생겨요.
•
팀워크를 향상시키는 과정이 되기도 함. 짝 프로그래밍을 하면 사람과 사람이 하는거여서 안맞을수도 있고, 갈등이 생길수 있어요. 우리는 협업을 잘하는 방법을 배워본적이 잘 없고, 협얼 잘하는 사람이 많지가 않거든요.
◦
이 갈등이 작은 단위로 자주 일어나고, 작은 단위일떄 빠르게 자주 해소하는게 팀원관의 관계에서 굉장히 중요함
질문
•
한 번 페어프로그래밍 하면 프로젝트나 제품 단계에서 끝까지 한다?
◦
어렵거나, 막연하거나, 지겨운거
◦
하나의 기능 단위나, 버그 픽스, 리팩터링 하는 단위
•
아예 모르는 사람 2명이서 페어
◦
우리가 알고 있는 지식으로 이 문제를 어떻게 작게 쪼개고 해결해나갈 수 있는 과정을 학습해
◦
혼자서만으로는 절대 못푸는 거를 2명이 같이 하기 떄문에 서로의 지식이 합쳐져서 해결되는 경우가 생각보다 많음
•
한 명이 더 잘 아는 경우
◦
팀에서 많이 일어남. 신규 입사자(주니어로 신입, 2~3년차)
◦
교육생, 학생들 사이에서도 많이 일어나지만
•
페어 프로그래밍을 하면 어쨌든 2명의 생산성이 한 작업에 들어간다는 느낌이 드는데, 그럼에도 불구하고 회사에서 필요에 따라 권장하거나 저희가 자발적으로 할 수 있는 느낌인지 궁금합니다!
◦
회사의 개발 문화 연결
•
소프트웨어는 만드는거에서 끝나는게 아니고
•
소프트웨어를 만들고, 유지보수하고 개선해 나가는 과정이
◦
버그를 수정하고
◦
성능을 개선하고
◦
의도를 드러내게, 읽기 좋은 코드를 만들고
•
페어 프로그래밍을 하는 인원이 많아질 수록 효과가 있는 지 궁금합니다.
어느정도의 인원 수가 적절할까요?
◦
페어프로그래밍, 협업에 익숙하지 않다 2명으로 시작하는게 좋다고 생각함
◦
3~4명 혹은 그 이상이서도 할 수 있는데
4. 페어 프로그래밍 라이브
피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다. 최종 결과는 F(10)의 결과값을 print로 출력해주세요.
ex_ F(4)인 경우 0 1 1 2 '3' 이므로 F(4) = 3 입니다.
/* 의사코드
1. 인자로 값을 받아온다.
2. 인자값에 대한 유효성을 검사한다. (0이나 1인 경우 바로 return 해준다.)
3. fibonacci(number: 인자 -1) 과 fibonacci(number: 인자 -2)를 호출하고 그 결과값을 더하여 return 한다.
*/ 작성 후 https://www.onlinegdb.com/online_swift_compiler 에서 실행시켜 주세요
/* 의사코드
1. 인자로 값을 받아온다.
2. 인자값에 대한 유효성을 검사한다. (0이나 1인 경우 바로 return 해준다.)
3. fibonacci(number: 인자 -1) 과 fibonacci(number: 인자 -2)를 호출하고 그 결과값을 더하여 return 한다.
*/
var result = 0
guard number >= 0 else {
print("0을 포함한 양의 정수만 입력할 수 있습니다.")
return
}
func fibonacci(number: Int) -> Int {
if (number < 0) {
print("0을 포함한 양의 정수만 입력할 수 있습니다.")
return -1
}
if (number < 2) {
return number
}
return fibonacci(number: number - 1) + fibonacci(number: number - 2)
}
Swift
복사
0 1 1 2 3 5 8 13 21
fibonacci(0) ⇒ 0
fibonacci(1) ⇒ 1
fibonacci(2) ⇒ 1
fibonacci(3) ⇒ 2
fibonacci(4) ⇒ 3
fibonacci(5) ⇒ 5
fibonacci(6) ⇒ 8
페어 프로그래밍할때 주의사항
•
◦
만약 이게 어렵다면 타이머를 사용하는것도 좋습니다.
◦
한 사람이 오래 키보드를 오래 붙잡고 있으면 안됩니다.
◦
서로 왔다 갔다 하는 과정에서의 '발견'이 페어 프로그래밍에서 중요한 부분입니다.
•
◦
페어 프로그래밍은 수평적인 관계로 진행하는게 중요합니다.
◦
드라이버가 어떻게 리드해야할지 모르겠다면, 네비게이터가 쳐야할 코드를 불러주세요.
질문
1.
3- 4명이서 코딩을 같이하게된다면 계속 돌아가면서 드라이버역할을 하면 효율적으로 할 수 있나요??
•
시간을 짧게 가져가면서 교대하면서 우리가 배워나가는게 중요함
2.
드라이버와 네비게이터가 둘 다 해결하지 못하는 상황일 때는 어떻게 하면 좋을까요?
•
다른 내비게이터를 찾아서 도움을 요청해야죠.
•
나 혼자서 할 떄보다 더 효과적으로 문제 해결을 위한 과정인거지 반드시 둘이서만 모든걸 해야된다는 아님
3.
혹시 코드 리뷰하기를 페어로 하면 3자가 작성한 코드를 둘이 같이보면서 교대로 하나의 리뷰 내용을 같이 작성하는 느낌일까요?
•
글쓰기를 페어로 한다
•
file changes를 가서 같이 한 파일씩 보고
◦
어떤 부분 리뷰를 남기면 좋을까요?
◦
return 타입에 대한 부분을 리뷰 남기면 좋을것 같아요
◦
코멘트 작성하는 창을 띄우고, 드라이버와 네비게이터로 글을 작성해보면
3. 그룹별로 나눌 이야기
오늘 서로의 지식과 경험이 녹아들 수 있는 페어 프로그래밍에 대해 이야기하고 라이브까지 진행해보았는데요. 나의 학습 과정에서 프로그래밍 뿐만 아니라 다른 영역도 얼마든지 시도해볼 수 있고 효과도 얻을 수 있어요. 그래서 내가 페어 워크를 해보고 싶은게 있다면 어떤게 있는지 나눠보고, 실제 페어도 구해보는 시간을 가져볼게요! 만약 빠르게 다 구해졌다면 남은 시간 동안 실제 페어 워크를 진행해보는것도 좋을 것 같아요 :)
페어 워크의 예) 슬라이드 만들기, 회의 기록 남기기, 글쓰기, 코드 리뷰하기
기준: 지겹거나, 어렵거나, 막연한거 2~3개 이상 적어보고, 여러 페어와 같이 시도해보는거
너무 큰 단위 말고 같이 해서 2~3시간 안에 끝낼 수 있는거, 과제를 하는거다하면 과제의 일부 기능 하나만을 일단 페어프로그래밍 하는 식으로, 작게 쪼개서 둘이서 2~3시간안에 끝낼 수 있는 단위로 시도해보기
2~3시간 해보고 나면 우리의 페어프로그래밍에 대해서 간단하게 회고까지 해보면 더 좋음
- 페어 프로그래밍 어땠는지
- 어떻게 하면 다음에 더 효과적으로 할 수 있을 것 같은지
- 우리만의 더 좋은 페어 프로그래밍 방법은 없을지
이름 | 이번주/다음주에 페어 워크/프로그래밍 시도해보고 싶은 것 | 페어 |
이름1 | ||
이름2 | ||
이름3 | ||
이름4 | ||
이름5 | ||