안녕하세요. 그린랩스 팜모닝 프론트엔드 개발자 조효정입니다.
그린랩스 프론트엔드 개발자로, 페어 프로그래밍을 하며 어떤 것들을 경험하고 느낄 수 있는지 자랑해보겠습니다😎
프론트엔드 길드 : 그린랩스에서 소속된 서비스/사업 상관없이 '프론트엔드 직군 전체'를 칭하는 단어입니다.
페어 프로그래밍이란?
페어 프로그래밍이란 애자일 소프트웨어 개발 중 하나로 하나의 컴퓨터에서 두 명의 개발자 (진행자 driver, 관찰자 navigator) 가 작업하는 방법을 말합니다.
진행자 역할의 개발자는 코드를 작성하고, 관찰자 역할의 개발자는 실시간 코드 리뷰를 하며 구현 방식과 구조에 대해 고민합니다. 두 개발자는 수시로 역할을 바꿉니다.
페어 프로그래밍을 하는 이유🤔
-
버그가 적어집니다.
배경지식이 다른 두 명의 개발자가 다양한 각도에서 문제를 살펴볼 수 있어 최적의 방법을 찾아낼 가능성이 높습니다.
멀리서 보아야 비로소 보이는 버그 (작고 귀여운 오타에서 구조 문제까지👻)를 실시간 리뷰를 통해 발견하고 빠르게 수정할 수 있습니다.
-
팀워크가 향상됩니다.
같은 팀이지만 당장 필요한 질문들 외에 이야기를 나눌 기회가 많지 않고, 재택근무가 활성화되다 보니 더더욱 네트워킹이 쉽지 않습니다.
페어 프로그래밍을 통해 팀원들과 대화를 나누며 서로 신뢰가 쌓이고 팀워크가 좋아집니다.
그린랩스에서 페어 프로그래밍 하는 법 👨🌾 🖥 🧑🌾
그린랩스 프론트엔드 길드는 소스 코드를 기반으로 문제를 해결하는 비정기 페어 프로그래밍과, 알고리즘 문제를 함께 해결해보는 정기 페어 프로그래밍의 두 가지 방식으로 페어 프로그래밍을 진행합니다.
비정기적 페어 프로그래밍은 주로 같은 맥락을 공유하고 있는 같은 팀 개발자와 진행하기 때문에, 그린랩스의 다양한 개발자분들을 만나지 못한다는 아쉬움이 있었습니다.
다양한 분들과 페어 프로그래밍을 진행해보고 싶어 알고리즘 문제를 해결하는 정기 페어 프로그래밍을 기획하게 되었고 이를 통해 소속된 서비스와 관계없이 다양한 개발자분들과 네트워킹할 수 있었습니다.
Step 1. 📣 페어 파트너 구합니다
페어 프로그래밍을 희망하는 개발자는 페어 파트너를 구해야 합니다. 이때 페어 프로그래밍 종류에 따라 페어 파트너를 구하는 방법이 다릅니다.
-
비정기 페어 프로그래밍
공개적으로 상황을 공유하고 페어 프로그래밍을 요청합니다. 관련 경험이 있는 개발자 또는 페어 주제에 관심있는 개발자가 자발적으로 지원해 요청자의 코드를 살펴봅니다.
더 좋은 코드가 있을 것 같은데 생각이 막혀버린 저...😰
슬랙 채널에 상황과 코드를 공유합니다.(HELP...!)
00님이 댓글로 관심을 보이는군요? 바로 페어 프로그래밍을 신청합니다.
-
정기 페어 프로그래밍
매주 화요일, 그린랩스 프론트엔드 개발자가 모두 모이는 기술공유세션에서 이번 주 알고리즘 문제를 공유합니다.
돌려돌려 돌림판을 돌려 행운의 페어 파트너를 선정합니다. 이번주는 어떤분과 함께하게 될까요?
이번주 행운의 페어 파트너로 선정된 개발자와 일정 조율 후 페어 프로그래밍을 진행합니다.
Step 2. 오늘 페어 프로그래밍 목표는 이것입니다 🧐
진행자 역할의 개발자가 구현해야 할 로직을 설명하고 목표를 정하는 것으로 페어 프로그래밍이 시작됩니다.
원격 근무중이라면 LiveShare와 온라인 화상 회의로, 함께 있는 경우 한 사람의 컴퓨터 화면을 보며 페어 프로그래밍을 진행합니다.
Live Share란, 실시간 공동 개발을 할 수 있게 도와주는 vscode의 확장 프로그램입니다.
Step 3. 번갈아가며 코드를 작성합니다 👯
주로 경험이 더 많은 개발자가 관찰자의 역할을 맡는 것으로 시작됩니다.
-
관찰자 역할의 개발자는 문제 해결을 위한 큰 그림을 그리고 진행자에세 방향을 제시합니다.
-
진행자 역할의 개발자는 관찰자의 가이드에 따라 구체적인 코드를 아름답게 표현합니다.
Step 4. 페어로그를 작성합니다 ✍🏻
페어 프로그래밍을 마치고 나서는 페어로그를 작성합니다.
페어로그를 쓰는 이유
- 파트너 개발자의 노하우와 문제 해결 방식을 기록하고 전파할 수 있습니다.
- 우리는 가끔 비슷한 문제로 힘들어합니다. 미래에 있는 동료가 문제를 해결할 때 도움이 될 수 있습니다.
프로필 섹션 구현을 위해 고민하던 중 컴포넌트 재사용성 향상을 주제로 한 페어로그를 보았고 그 내용을 참고해 재사용하기 좋은 프로필 컴포넌트를 작성할 수 있었습니다. 고마워요 페어로그!
- 페어 로그를 통해 쉽고 빠르게 정보를 찾을 수 있습니다.
페어로그가 지식 전파, 문제 해결 속도를 향상하는 기록의 역할을 하기 때문에 페어 프로그래밍의 과정을 최대 한 상세히 기록합니다.
페어 로그에는 다음과 같은 내용을 기록합니다.
- 참여자, 진행 일시, 진행 방법 : 참여자, 날짜와 시간, 그리고 오프라인, 온라인 등의 진행 방식
- 함께한 작업 : 페어 프로그래밍 주제가 된 알고리즘 문제 또는 기능
- 이슈 : 페어를 진행하면서 나왔던 질문, 답변
- 소감 : 각자의 소감
- 다음 할 일: 액션 아이템 혹은 읽어보면 좋을 참고자료 링크 등
내가 페어 프로그래밍을 통해 얻은 것들
🌱 신입시절 적응도 향상
부트캠프 이후 작은 단위의 업무를 페어로 진행하면서 언어와 아키텍쳐에 대한 이해도를 높일 수 있었습니다. 그 과정에서 프론트엔드 길드의 개발 환경, 개발 스타일 지식을 공유할 수 있었고 빠르게 적응할 수 있었습니다.
📒 지식 교환과 성장
길드 내 다양한 개발자분들의 문제 해결 노하우와 통찰을 얻을 수 있었고 실시간으로 피드백을 주고 받으며 선배 개발자의 생각의 흐름을 따라가는 값진 경험을 할 수 있었습니다.
주니어의 실력을 향상시킬 수 있는 최고의 기회! 이 부분을 이렇게 해결할 수 있군요! 아이디어가 떠오릅니다!
❤️ 팀원과 신뢰 관계 구축
좋은 코드를 만들기 위해 동료 개발자와 많은 대화를 나누었습니다. 자연스럽게 친밀감과 동료에 대한 신뢰가 높아졌습니다. 이 신뢰를 바탕으로 업무 중에 모르는 부분이 생기면 편하게 질문하고 새로운 방법에 도전할 수 있었습니다.
마치며
어려움이 있거나 나누고 싶은 코드가 있으면 편하게 외쳐봅니다!
페어 어떠세요!