개발/기타

버그란 무엇인가

JonghwanWon 2022. 6. 18. 14:55

여느날처럼 프로젝트를 둘러보며 둘러보며 코드를 구석구석 청소하고 있었다.
그러던 중 약 10개월 전 작성 된 코드중 정상적으로 동작하지 않는 코드를 발견했다.
해당 코드의 commit history가 남아있어 PR을 살피며 이부분은 명백히 프로그램이 개발자의 의도에 따라 동작하지 않는 버그로 판단을 내릴 수 있었다.

나는 당연하게도 본래 의도한 대로 동작할 수 있도록 코드를 정리하며 해당 버그를 수정했다.
오랜시간 보고되지 않고 숨어있던 버그를 해결한 것에 안도감과 뿌듯한 마음이 들었다.

그런데 버그를 수정한지 며칠 후 해당 부분이 제대로 동작하지 않는다는 리포트가 들어왔다.
여지껏 그렇게 동작하던 것이 프로그램의 버그였고 지금에서야 정상적으로 동작하는것이 맞다.
하지만 사용자 입장에서는 그간 사용해왔던 방식과 다르게 동작하기 때문에 이를 버그로 인식하는 것이었다.

댄 새퍼, 마이크로인터랙션

문득 댄 새퍼마이크로인터랙션 중 초반에 나오는 휴대폰이 진동모드일때 설정해둔 알람은 울려야 하는가에 대한 일화가 떠올랐다.
소프트웨어 및 하드웨어가 사용자가 예상한대로 동작하지 않는 것은 버그로 인식될 가능성이 충분하다.

결국, 해당 코드는 이전처럼 작동하도록 revert하고 이후 누군가가 나와 같이 이 버그를 고치지 않도록 재발방지를 위해 표기해두었다. 흔히 말하는 버그라 말하는 것은 정확히 어떻게 정의할 수 있을까?
우리는 일반적으로 프로그램이 개발자의 의도에 따라 동작하지 않는 경우 버그라고 말한다.
여기에 하나 더, 버그는 사용자가 예상한 대로 프로그램이 동작하지 않는 경우에도 버그라고 말할 수 있다.

보통 버그는 코드의 복잡도가 높을수록 발생할 가능성이 높다.
때로는 단순한 부분에서 이해를 잘못 한 경우 발생하기도 한다.

복잡성과 이해도는 매우 밀접한 관계를 가지고 있다.
내가 작성한 코드를 미래에 접할 개발자(나를 포함해)가 코드를 쉽게 이해할 수 있을지는 항상 책임져야 할 문제임을 기억하자.

버그의 발생을 줄이기 위해 다음 규칙들을 마음에 새기고 개발하는 습관을 가져야겠다.

1. 코드가 단순할수록 버그는 줄어들 것이다.
2. 프로그램의 모든 것이 단순해지도록 늘 노력하라.

- 맥스카넷-알렉산더, ⌜심플 소프트웨어⌟, 이미령 옮김, 길벗, 2019