본문 바로가기

신변잡기/일상생각

[코딩호러]버전1.0은 엉망이야 하지만 그냥 출시하라고

요즘 읽고 있는 책 코딩호러의 이펙티브 프로그래밍에서 등장하는 문장 중 하나이다.(소제목이기도 하다)


내용을 요약하자면 완벽주의자의 성향을 가진 개발자들은 그들의 소프트웨어를 가장 완벽한 상태로 출시하려는 성향이 있다


그러나 개발자가 생각하는 가상의 사용자와 가상의 상황들은 현실세계에서 일어날지는 알 수 없기도하며, 그 상황들 이외의 문제들을 내포하고 있기에


자기 자신과의 힘겨루기를 통해 완전성을 추구하기 보다는, 실제 사용자들이 뿜어내는 불평불만을 빠르게 피드백하여 완전성을 추구하는 것이 진정한 완전함일 것이다. 란 이야기다.


실제로 불평불만을 뿜어내는 사용자들은 나를 귀찮고 힘들게 한다. 하지만 적어도 하나의 사실은 확보되어 있는 것이다. (널리고 널린 수많은 소프트웨어들 중에서)내가 만든 소프트웨어를 선택했고 사용했으며 관심을 가지고 (사용자의 관점에서)이상한 점을 나에게 어필했다는 것이다.


이는 개발자에게 고마운일인 것이다.(매우 피곤하지만..)




쨋든 위에서 언급한 부분을 읽으며 떠올렸다. 해결되지 않는, 마감기한이 정해진, 나의 업무(문제)때문에 버전업이 기약없이 미루지고 있는 나의 첫번째 개발산출물을..


회사에서 개발테스트를 겸해서 만들어진 툴이었고 지금도 여러 PC에서 열심히 돌아가고 있다.


8개월 전의 나는 개발의 시야가 좁았고(지금도 넓혀가는 중이지만) Windows 코딩에서 고려해야할 여러 요소들을 충분히 고려하지 못한채였을 것이다.


그러나 내부의 코드 리뷰를 거친 후에 릴리즈 되었다. 그리고 바로 문제에 직면했다.


기능도 모자랐고, 스트레스 테스트를 거치지 못한 것처럼 반복적인 명령에 죽기 일쑤였고, 심지어 논리적인 로직에서 꼬여있는 부분도 있었다.


개판이었다. 버전업을 진행하지 않고는 도저히 견딜 수가 없을 정도였다.


당시의 나는(당장 시킨일이 없었기 때문에) 내가 아는 범위에서 최선을 다하여 수정하고 테스트하면서 새로운 버전을 내놓았다.


그러나 해당툴은 회사에서 중요하지만 순위가 낮은편에 속했고, 나에게는 길지 못한 시간과 업무인수인계가 주어졌다.


이제 기능은 나름대로 부드럽게 동작하고 있다.


그러나 알지만 아직 해결하지 못한 문제들이 내포되어 있고, 아직 모르고 있는 문제들도 내포되어 있을 것이다.


하나의 기능을 반복적으로 수행할 때, 좀 빠른속도로 명령을 내리면(아마도 스트레스 테스트...라고 불러야겠지...?)


나의 툴은 죽는다...(짐작하는 원인은 있지만 확인하진 못했다.)


피드백이 초창기만큼 활발하지 못한 것도 한몫한다고 하면 변명일런지...


내일이면 출근하는데 출근 후에 졸리면, 잠도꺨겸 일하는 주제를 바꿔서 내 툴을 보수해야겠다.