기본 콘텐츠로 건너뛰기

우리는 왜 사용자가 원하는 제품을 만들지 못하는가?

우리 주변에는 하루에도 수도 없는 소프트웨어가 쏟아져 나오고 있다.

소프트웨어 뿐만 아니라 각종 제품, 서비스들이 정말 쏟아져 나오고 있다.

하지만 그 중에서 사용자에게 선택을 받아서 생명력을 유지하는 제품은 정말 손에 꼽을 정도이다.

어떤 제품은 살아남고 어떤 제품은 사라지는 것일까?

모든것이 마케팅의 힘일까?

대기업이 만들고 24시간 TV에서 선전만 하면 앉아서 돈을 버는 것일까?

그런 시대도 있었다. 하지만 아주 조금씩 세상은 변하고 있다.

지금은 그 제품이 아니더라 하도 대체할 수 있는 제품이 너무 많다.

그리고 어떤 제품에 문제가 발생하면 정말 빠른 속도로 퍼져나간다.

우리가 조금만 주의를 기울이면 어떤 제품을 사기 전에 이미 그 제품에 어떤 문제가 있는지 상세하게 알아낼 수 있다.

소비자는 점점 더 영악해지고 부지런해지고 있다.

즉, 중요한 것은 사용자를 만족시키지 못하면 살아남지 못한다는 것이다.

하지만 우리는 여러가지 이유로 사용자를 만족시키는 제품을 만들어내지 못하고 있다.

첫번째는 겉멋만 잔뜩 들어서 그렇다.

우리나라의 서비스나 소프트웨어들을 보면 대체로 화려하다.

미려한 인터페이스, 화려한 효과들 (덤으로 화면을 가득 메우고 번쩍이는 광고들..)

하지만 이렇게 겉멋만 잔뜩 든 제품들은 눈은 즐거울지 모르지만 사용하기는 불편한 경우가 많다.

겉멋보다 먼저 생각할 것은 쓰기 편한 제품을 만들어야 하는 것이다.

구글, 트위터, 페이스북.. 이런 서비스들은 그렇게 화려하지는 않다. 옛날에 비하면 많이 미려해지기는 했다. 이것은 자연스러운 진화의 결과이다. 이들이 미려해졌다고 해서 예전의 쓰기 편함이 사라져버리지는 않았다.

두번째는 제품을 개발하는 이해관계자들이 대개 전형적인 사용자가 아니라는 점이다.

그들은 그들이 만든 물건을 사용하는 데에 너무 익숙하기 때문에 어떤 것이 그들이 아닌 다른 사람들에게 문제가 된다는 점을 상상하지 못하는 바보가 되어 있다는 것이다.

이러한 바보를 깨우치는데 가장 좋은 방법 중 하나가 사용자 테스트이다. 실제 사용자를 관찰하게 함으로써 이 바보들을 깨우칠 수 있는데 이러한 방법으로도 깨우침이 없는 바보가 만든 제품은 99.99%의 확률로 시장에서 버림을 받을 것이고 조만간 회사는 망할 것이다.

그렇다면 왜 제품을 만드는 이해관계자들은 바보가 되는 것일가?

많은 경우 이 바보들은 자신들을 전형적인 사용자로 생각한다. 다른 사람들의 행동이나 신념등을 자기 입장에서 합리화하거나 투사해 버린다.

하지만 전문가라면 사람의 행동과 신념은 복잡해서 절대로 완전히 이해할 수 없다는 사실을 깨달아야 한다.

이것은 다른 말로 바꾸면 많은 경우 테스터가 일반 사용자를 대표 또는 대신할 수 있다는 믿음도 잘못된 것이라는 것이다. 테스터도 사용자를 대표 또는 대신할 수 없다.

때문에 우리는 어떤 제품을 테스트할 때 전문적인 테스터의 테스트 이외에도 실제 사용자가 테스트를 수행할 수 있도록 계획하고 배려해야하는 것이다.

그리고 테스터 또한 이러한 부분을 항상 고려해야만 한다.

테스터에게 요구되는 전문성과 사용자게에 요구되는 전문성 간에는 커다란 차이가 있다.

테스터는 테스트를 수행하면서 제품 전체에 대한 전문가가 되어 간다.

하지만 사용자는 제품 전체에는 관심이 없다. 사용자는 오로지 자기가 하고 싶은 일에만 전문가가 되어간다.

여러분이 흔히 사용하는 엑셀이나 워드를 생각해보자. 여러분 자신에게 엑셀이나 워드에 과연 얼마나 많은 기능이 있는지 그 모든 기능을 다 아는지 물어보시기 바란다. 자기가 흔히 사용하는 기능 외에는 어떤 기능이 있는지 대답하지 못한다.

하지만 엑셀이나 워드를 테스트한 테스터라면 아마 여러분보다 더 많은 것들을 알고 있을 것이다.

이것이 실제 사용자와 테스터의 차이이다.

때문에 테스터는 사용자가 경험할 수 있는 문제점이나 생길 수 있는 오해, 범할 수 있는 오류를 항상 고민하고 예측할 수 있도록 노력해야만 한다. 그렇지 못하다면 절대로 제품에서 결함이 줄어드는 일은 생기지 않을 것이다.

마지막으로 우리는 제품을 원하는 사람을 만족시켜야 하는데 그들 또한 일반적인 사용자가 아닐 수 있다는 것이다.

은행권에서 개발하는 시스템은 분명 은행이 제품의 개발을 의뢰했지만 실제적인 사용자는 그 은행을 이용하는 다른 사용자들이다.

이 둘 모두를 만족시키는 것은 매우 어렵다.

하지만 테스터라면 이 둘을 모두 고려할 수 있어야 한다.

항상 최종 사용자가 누구인지 탐색하고 고민할 수 있어야 한다.

많은 테스터들이 자신이 사용자를 대표 또는 대신한다며 안주하는 경우가 있다.

이것은 매우 위험하다.

고민하지 않는 테스터는 테스터가 아니다. 그리고 이런 테스터가 있는 조직에서 만들어진 제품은 대개 사용자가 원하는 제품을 만들어내지 못한다.

이것은 비단 테스터만의 문제가 아니다.

어떤 소프트웨어를 개발하는 이해관계자들이 언제나 잊지 말아야 할 한가지가 있다면 바로 사용자이다.

사용자를 배려하고 사용자를 고려하는 제품, 이러한 제품만이 살아남는 시대가 점점 더 빠르게 다가오고 있다.

댓글

이 블로그의 인기 게시물

피드백 루프: AI 시대 테스터가 지켜내야 할 핵심 엔진

소프트웨어 개발과 테스팅 현장에서 가장 자주 언급되지만, 막상 시스템이 복잡해질수록 쉽게 경시되곤 하는 핵심 개념이 바로 '피드백 루프(Feedback Loop)'입니다. 코드를 수정하고, 빌드하고, 테스트 결과를 확인하고, 다시 개선하는 그 순환 과정의 속도와 정확도가 결국 소프트웨어의 품질을 결정짓기 때문입니다. 품질 전문가 매슈 하이저(Matthew Heusser)가 자신의 블로그 Quality Remarks에 기고한 "One Loop After Another" 아티클은 바로 이 피드백 루프의 다층적 구조와, AI 시대에 우리가 놓치지 말아야 할 품질 검증의 본질을 날카롭게 되짚어 줍니다. (출처: Quality Remarks - One Loop After Another / Matthew Heusser) https://qualityremarks.com/one-loop-after-another/ 매슈 하이저는 소프트웨어 개발 생태계가 단순히 하나의 커다란 테스트 루프로 돌아가는 것이 아니라, 시간 축과 관점에 따라 겹겹이 쌓인 '연쇄적인 피드백 루프들(One Loop After Another)'로 이루어져 있다고 설명합니다. 초단기 루프 (Inner Loop): 개발자가 코드를 작성하는 몇 초~몇 분 단위의 루프입니다. 단위 테스트(Unit Test)나 IDE의 Linter, AI 자동 완성이 즉각적인 피드백을 주는 영역입니다. 단기 루프 (Daily / CI Loop): 커밋과 푸시가 이루어지고, CI/CD 파이프라인에서 통합 테스트와 정적 분석이 실행되는 몇 시간 단위의 루프입니다. 중기 루프 (Iteration / Exploration Loop): 스프린트 단위로 탐색적 테스팅(Exploratory Testing)을 수행하고, 실제 사용자 시나리오나 엣지 케이스를 사람이 직접 검증하며 시스템의 유기적 작동을 확인하는 며칠~몇 주 단위의 루프입니다. 장기 루프 (Outer / Market Loop): 실제 ...

에이전틱 AI 프로젝트에서 테스터의 5가지 핵심 원칙

AI 코딩 에이전트와 자율형 에이전트가 빠르게 개발 워크플로우에 통합되면서, 단순히 코드를 잘 짜는 것을 넘어 '에이전트와 어떻게 협업하고 통제할 것인가'가 개발자와 아키텍트들의 가장 큰 화두로 떠올랐습니다. 윤석찬 님의 아티클 "AI 에이전트 시대, 개발자는 어떻게 일해야 하는가? – 프론티어 엔지니어링의 10가지 원칙"은 에이전틱 AI 시대에 엔지니어가 마주하는 패러다임 변화와, 실무 현장에서 일하는 방식을 어떻게 재정의해야 하는지 아주 명확한 가이드라인을 제시해 줍니다. (출처: channy.creation.net - 윤석찬 님의 블로그) https://channy.creation.net/blog/1989 비록 대규모 에이전트 오케스트레이션이나 초거대 인프라 시스템을 개인이 직접 구축하고 운용하는 것은 비용적·기술적으로 현실적인 한계가 있습니다. 하지만 개인 프로젝트에서 AI와 바이브 코딩(Vibe Coding)을 활용하며 겪었던 맥락 손실, 환각, 통제 불능의 경험들을 떠올려보면, 이 아티클이 제시하는 10가지 프론티어 엔지니어링 원칙은 소규모 개인 개발 환경에서도 대단히 깊은 공감을 불러일으킵니다. 이 글은 단순히 "AI 도구를 잘 쓰자"는 수준에 머무르지 않습니다. AI 에이전트가 생성해내는 불확실성 속에서 인간 엔지니어가 시스템의 맥락을 주도하고, 오작동을 제어하며, 품질의 키(Steering Wheel)를 쥐기 위한 구조적 사고법을 다룹니다. 그렇다면 프론티어 엔지니어링의 원칙을 바탕으로, 시스템의 신뢰성과 안전성을 검증해야 하는 테스터는 과연 어떤 실무 원칙을 세워나갈 수 있을까요? 윤석찬 님이 제시한 엔지니어링 원칙을 테스팅 관점으로 재해석해 보면, 다음과 같은 5가지 원칙으로 정리할 수 있을 것 같습니다. 1. 결정론적 검증에서 '경계선 및 허용 오차(Boundary)' 테스팅으로 전환하라 에이전트 기반 시스템은 같은 입력을 주어도 매번 다른 추론 경로를 거치는 확률적(Stoc...

에이전틱 AI 시대에 테스팅은?

 "소프트웨어 엔지니어링은 과연 끝난 것일까?" 최근 AI 코딩 에이전트와 바이브 코딩(Vibe Coding)의 급부상 속에서, 엔지니어들과 아키텍트들이 스스로에게 던지는 가장 뼈아픈 질문입니다. 이 질문에 대해 기술 현장의 날카로운 시선을 담은 이원국 님의 아티클 "소프트웨어 엔지니어링의 종말"과 arXiv 논문 "Agentic Software: How AI Agents Are Restructuring the Software Paradigm"은 아주 근본적인 패러다임의 변화를 짚어내고 있습니다. (출처: blog.wonkooklee.com - 소프트웨어 엔지니어링의 종말) https://blog.wonkooklee.com/blog/20260913_02/ (출처: arXiv - Agentic Software: How AI Agents Are Restructuring the Software Paradigm) https://arxiv.org/html/2606.05608v2 이원국님의 아티클과 논문에서 공통적으로 말하는 핵심은, 우리가 알고 있던 '인간이 직접 코드를 다듬고 작성하던 전통적 소프트웨어 엔지니어링'의 정체성은 종말을 고하고 있으며, 그 자리를 '에이전트 패러다임(Agentic Paradigm)'이 빠르게 대체하고 있다는 사실입니다. arXiv 논문 "Agentic Software"에서는 소프트웨어 구축의 단위가 단순히 결정론적(Deterministic) 알고리즘이나 코드에서, 목표를 스스로 자율 추론하고 도구를 호출하며 과업을 완수하는 'AI 에이전트 오케스트레이션'으로 이동하고 있음을 말하고 있습니다. 이제 개발자는 시스템의 메서드나 API 하나하나를 직접 타이핑하는 존재가 아닙니다. AI 에이전트가 코드를 생성하고, 실행하고, 테스트를 돌리고, 스스로 디버깅하는 일련의 자율 루프(Autonomous Loop)를 설계하는 '시스템...