0w0

기능 추가할 뿐이 아니에요

여러분, 신기능 좋아하시나요. 소프트웨어 기능 추가는 유저 입장에서는 단순하게 "할 수 있는 것이 늘어서 좋다" 울림을 줄 수 있습니다. 하지만 실제로 긴 기간 사용되고 있는 소프트웨어일수록, 신기능 추가를 굉장히 조심히 접근합니다. "기능 추가할 뿐"이 아니라요. 이 글은 목적은 신기능 추가에는 세심한 주의가 필요하다 알리기 위해서 입니다. 주 대상 독자는 소프트웨어를 장기간 관리해보지 않은 분이겠죠.

여러분이 사용하고 있는 OSS에 신기능을 추가하는 PR를 보내는 경우를 상정해봅시다. 여기서 중요한 것은 PR을 받은 관리자나 커밋터(코어개발자) 입장에서 생각해보는 것이죠. 이들의 역할은 자신을 포함한 유저가 소프트웨어를 계속 사용할 수 있도록 관리를 계속하는 것입니다. 관리 비용도 주목해보면, 기능 추가는 기본적으로 비용을 올릴 수 밖에 없습니다.

구체적으로는 어떠한 비용이 상승하는가, 예시를 보여드리겠습니다.

상기한 비용이 PR를 한 사람이 아니라, 코어개발자에 걸리는 부하라는 것이 중요한 점입니다. 매몰차게 이야기하면, PR 보낸 사람에게는 기능이 추가된 버전이 출시되는 것이 목표겠지만, 코어개발자에게는 그렇지 않다는 것입니다. 그들은 신기능을 포함한 코드를 계속 관리해야 할 필요가 있습니다. 그렇기에 "신기능을 만들어줘서 고마워, 머지할게" 이렇게 단순히 말할 수 없습니다.

이러한 사정에 의해 기능 추가 하는 것은 "이 소프트웨어는 이런 것입니다"에 합치하거나, "많은 유저가 바라고 있던 것"으로 제한됩니다. 이렇게 하지 않으면 프로젝트 관리는 점점 말도 안되게 큰 일이 되며, 변경이 어려워지거나 품질 저하됩니다. "만들고만 싶은" 사람이 주도권을 쥐고서, 아무 생각없이 점점 기능을 추가하면, 관리가 불가능해져 파탄난 프로젝트는 그 수를 헤아릴 수 없습니다.

예시를 OSS로 들었지만, 소스가 공개되어있지 않은 기업 제품에도 이야기가 적용됩니다. 어떤 개발 스타일을 가지고 있든, 오픈소스든 아니든, 개발책임자는 세심히 주의를 기울리며, 소프트웨어를 제어 가능한 상태로 지속적으로 유지해야합니다.

여기까지 적어봤지만 글만 있어 이해가 어려울 수도 있으므로, 피부에 와 닿게 이해하기 위해서는 어떠한 형태든 소프트웨어를 장기간 관리하는 입장에 서보는 것을 권합니다. 상당히 시야가 넓어지고, 더 큰 성장할 것이라 생각합니다.