소프트웨어 품질에 대한 노트

Notes on Software Quality

요약

소프트웨어 품질이란 '문제가 없는 상태'를 의미하며, 완벽에 가까울수록 좋지만 완벽은 불가능하다는 게 핵심이다. 품질은 조직의 리더십과 문화에 크게 의존하며, 리더가 품질을 원하지 않으면 달성하기 어렵다. 규모가 커질수록 품질 유지는 더 어려워지며, 일정 규모 이상에서는 고품질 소프트웨어를 만드는 것이 사실상 불가능해진다. 저자는 품질이 상업적 성공에 필수는 아니지만, 장기적으로 브랜드 가치와 사용자 만족을 위해 이상적인 목표라고 강조한다.

본문 기반 요약
원문 보기 HN 토론

전체 번역

다음은 소프트웨어 품질에 관한 글을 한국어로 번역한 것입니다.


소프트웨어 품질에 관한 노트

목차

  • 품질에 대한 나의 생각
  • 품질의 보편적 신호
  • 소프트웨어에서 품질의 여섯 가지 신호
  • 소프트웨어 품질의 이점
  • 내가 반박하고 싶은 품질에 대한 믿음
  • 규모가 커지면 품질은 불가능하다
  • 규모가 커지면 품질이 불가능하다는 일화적 증거
  • 전담 품질 관리 부서가 있는 회사들
  • 인터페이스 품질 개선 사항
품질에 대한 나의 생각

품질은 문제가 없는 것이다

"문제가 없는 것"이 품질에 대해 내가 생각해낼 수 있는 최고의 정의다. 품질을 측정하는 가장 실용적인 방법은 다양한 사람들과 함께 테스트하고, 많은 전문가들이 살펴보게 하는 것이다. 철저한 테스트와 100명의 전문가가 문제를 찾지 못한다면, 그 제품은 아마 완벽할 것이다.

품질은 '완벽함'까지 이어지는 스펙트럼이다

완벽함은 불가능하다. 업계에서 가장 잘 설계되었다고 인정받는 소프트웨어에도 눈에 띄는 문제가 있다. 하지만 완벽함에 가까워질수록 더 좋다. 완벽함에 가까워지려고 할수록 더 어려워진다. 이는 품질이 관련된 모든 곳에서 볼 수 있는 '수확 체감' 효과와 같다.

품질은 조직에 달려 있다

리더십과 문화는 품질을 정의하고 가능하게 한다. 리더십과 문화가 그렇지 않다고 믿더라도 마찬가지다. 심지어 그것에 대해 생각해본 적이 없더라도 그렇다. 리더십과 문화의 행동과 신념은 품질을 가능하게 하거나 제한한다. 품질은 능력과 의지의 결과다. 조직에 높은 품질을 만들어낼 수 있는 사람들(능력)이 있는가? 그리고 조직이 품질을 달성할 수 있도록 허용하는가(의지)? 내가 본 거의 100%의 경우, 조직이 고품질 소프트웨어를 만드는 이유는 리더들이 그것을 원했기 때문이다. 리더들이 품질을 원하지 않으면 훨씬 더 어려워진다. 하지만 당신이 무엇을 작업하든, 당신 개인이 달성할 수 있는 품질의 정도가 있다는 것을 잊지 마라. 가장 엄격한 디자인 시스템이 적용된 인터페이스에서도 여전히 더 높은 품질과 더 낮은 품질의 선택을 할 수 있다.

조직은 품질에 대한 객관적 척도(예: 보고된 버그 수)를 설정할 수 있다. 바라건대, 그러한 객관적 척도가 조직이 주관적 척도(예: "전문가가 이것을 고품질이라고 생각하는가?")를 간과하지 않기를 바란다.

규모가 커질수록 품질은 더 어려워진다

조직이나 소프트웨어의 규모가 클수록 품질은 더 어려워진다. 일정 규모 이상이 되면 고품질은 불가능하다. 일부 조직은 고품질 소프트웨어를 만들 능력이 없다. 중요한 점은 이것은 규모의 자연스러운 결과라는 것이다. 이것은 불만이나 해결해야 할 문제가 아니다. 해결될 수 없다. 소프트웨어의 거의 모든 다른 것들과 마찬가지로, 이것은 트레이드오프다.

품질은 필수는 아니지만 이상적이다

모든 조직이 품질에 신경 쓰길 바란다. 많은 조직이 그렇지 않고, 또 그럴 필요도 없다는 것은 명백하다. 상업적으로 성공한 많은 조직들이 품질을 우선시하지 않는다. 하지만 품질은 이상적이다. 모든 사람은 더 높은 품질의 세상에서 살고 싶어 한다. 품질을 창조하는 것은 기분 좋은 일이다. 품질이 높을수록 사물은 더 오래 지속된다. 그리고 장기적으로 볼 때, 사람들이 당신의 브랜드가 품질을 대표하지 않는다는 것을 깨닫게 되면 상업적 성공은 더 어려워진다.

품질의 보편적 신호

이것들은 내가 모든 것에 적용된다고 발견한 품질의 신호들이다. 사람과 결과물 모두에 해당한다.

외관(Appearance): (매우) 단순하게 말하면, 어떤 것이 더 아름다울수록 우리는 그것의 품질이 더 높다고 생각한다. 아름다움에는 노력이 필요하고, 일반적으로 품질에도 노력이 필요하기 때문이라고 나는 가정한다. 우리가 어떤 것에 정성을 쏟았다는 증거는 더 큰 정성의 증거가 된다.

연관성(Association): 우리는 어떤 것이 무엇과 연관되어 있는지에 따라 그것의 품질이 높은지 판단한다. 이에 대한 일반적인 접근 방식은 사회적 증거(social proof)로, 어떤 사람이나 사물이 다른 사람이나 사물과 연관되어 있는 경우를 말한다. 우리는 사물이 함께 있는 대상으로 그 사물을 판단한다.

비용(Cost): 어떤 사람이나 사물의 비용이 더 많이 든다면, 우리는 그것이 더 가치 있기 때문이라고 추정할 수 있다. 하지만 '비용'이 반드시 '돈'을 의미하는 것은 아니다. 예를 들어, 어떤 것이 더 많은 시간이 걸린다면 우리는 그것이 더 높은 품질이라고 추정할 수 있다.

성능(Performance): 성능은 '최고 속도'와 같은 정량적인 것일 수도 있고, '그것이 나를 어떻게 느끼게 하는가'와 같은 정성적인 것일 수도 있다. 결과에 초점을 맞출 수도 있다.