숫자가 아닌 것으로 열두 달의 이름을 짓는다면 4월은 '꽃달', 혹은 '화월'이 아닐까요. 그만큼 꽃으로 가득찬 한 달이었습니다.

아파트 단지에도 잔뜩 핀 벚꽃, 진달래, 발음에 유의해야 하는 조팝나무, 꽃꽂이 수업에서 만난 작약, 라넌 등 각양각색의 꽃들이 나를 기분좋게 했습니다. 쓰다보니 예쁜 꽃이 보이는 카페에서 산들바람을 맞으며 코딩을 하고 싶다는 생각이 듭니다. 주말에 해봐야겠습니다.

이쯤 되면 개발이랑 무슨 상관인가 싶으니 회고를 시작해보겠습니다.

Contribute

가장 큰 사건은 역시 iOS 오픈소스 라이브러리에 컨트리뷰트한 것입니다. 회사에서 요구한 기능을 개발하기 위해 라이브러리를 찾다보니 적합한 라이브러리를 발견했는데 기능 하나가 부족한 것입니다. 아무도 사용하지 않는 기능이라서 그런걸지도 모르겠습니다. 그래서 소스코드를 분석하고 기능을 추가해 회사 앱에 적용했는데, 생각해보니 이 기능이 라이브러리에 추가되어도 좋을 것이라고 생각했습니다. 이 때 제 머리에 뭔가 번쩍했나봅니다.

marcosgriselli/SwipeableTabBarController

iOS 앱에서 탭바에서 스와이프를 통해 탭 전환을 할 수 있는 라이브러리인데 저는 Cycling 기능이 필요했습니다. 기존 라이브러리에서는 이 기능을 제공하지 않았죠.

해당 기능에 대한 부분을 편집하고, 기능을 끄고 켤 수 있는 스위치를 만들고, 철저하게 번역기에 의존한 주석 여러줄을 작성한 뒤 메인테이너에게 풀리퀘를 요청했습니다. 올린지 채 하루가 되지 않아 답변이 달리더군요.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3cff5fe3-2d4d-4416-b965-1285dd657151/Untitled.png

"This is a really nice feature"에서 저는 소름이 돋았습니다. 온라인에서 누군가에게 기능을 제안하고, 그걸 리뷰받은 적이 처음이라 '거절하면 어쩔 수 없지'라는 마음으로 리뷰를 요청했는데 칭찬을 받았으니까요. 저때는 정말로 컴퓨터 앞에서 춤을 췄습니다. 칭찬은 개발자도 춤추게 하더군요. 저는 메인테이너가 원하는대로 Readme에 설명을 추가하고 해당 기능의 테스트코드도 작성하였습니다. 이때는 개발을 하면서 일종의 희열을 느꼈던 것으로 기억합니다. 저의 풀리퀘가 master 브랜치에 올라가고 버전업이 될때는 마치 위대한 개발자가 된 듯 한 착각에 이르기도 했습니다.

성공 원인

컨트리뷰트를 성공한 원인을 분석하자면 여러가지를 꼽을 수 있겠지만 가장 큰 요소들만 뽑자면 두가지로 추릴 수 있을 것 같습니다.

  1. Just Do It.

    처음에는 퀄리티를 그다지 신경쓰지 않았습니다. 코드는 어느정도 신경을 썼다만 주석과 PR문의 주요 내용은 번역기에 의존했고, Readme에 설명 또한 이정도면 됐겠지 하고 반영했으니까요. 제가 영어를 잘 하는 친구에게 감수를 받고 업로드 하고 했으면 저는 지쳤을지도 모릅니다. 그리고 어차피 메인테이너가 외국인이어서 Readme는 본인 입맛에 맞게 잘 고쳐주었습니다.

  2. 더 간단하게.

    처음에는 많은걸 생각했지만, 그 중에서 핵심만을 추려서 실행했습니다. 난 컨트리뷰트를 하고 싶고, 내가 명확하게 가치를 제공할 수 있는 기능이 있다는 것에 만족하며 코드를 작성했죠. '기존의 다른 사람이 작성한 코드가 스위프트 문법에 적합하지 않아 수정해줘야겠다'는 생각은 했지만 실행하지 않았습니다. 이 덕에 더 부담없이 완료할 수 있었을지도 모르겠습니다.