20 Posts
2025년 7월 18일3분 읽기

프론트엔드는 기능보다 경험을 만든다

기능은 결국 비슷해진다. 사용자가 기억하는 것은 버튼 하나, 로딩 하나, 전환 하나에서 느끼는 경험일지도 모른다.

프론트엔드는 기능보다 경험을 만든다

개발을 처음 시작했을 때는 기능을 만드는 것이 전부라고 생각했다.

요구사항을 구현하고,

API를 연결하고,

버그 없이 동작하면 좋은 개발이라고 생각했다.

실제로 많은 시간을 기능 구현에 쏟았다.

하지만 서비스를 운영하면서 조금 다른 생각을 하게 됐다.

사용자들은 생각보다 기능 자체를 기억하지 않았다.

같은 기능인데 느낌은 다를 수 있다

회원가입 기능은 대부분 비슷하다.

로그인 기능도 비슷하다.

검색 기능도 크게 다르지 않다.

그런데 어떤 서비스는 편하게 느껴지고,

어떤 서비스는 답답하게 느껴진다.

기능 차이는 거의 없는데 경험은 완전히 다르다.

그 차이는 의외로 작은 부분에서 나온다.

  • 버튼을 눌렀을 때 즉시 반응하는가
  • 로딩 중이라는 사실을 알려주는가
  • 에러 메시지가 이해하기 쉬운가
  • 입력 도중 데이터가 사라지지는 않는가

사용자는 구현 방식을 보지 않는다.

그 순간 느끼는 경험을 기억한다.

로딩 화면 하나도 경험이다

예전에 데이터 조회에 1~2초 정도 걸리는 페이지를 개발한 적이 있었다.

기능은 문제없이 동작했다.

하지만 사용자 피드백은 좋지 않았다.

"멈춘 줄 알았어요."

실제로는 로딩 중이었지만 아무런 표시가 없었다.

그래서 스켈레톤 UI를 추가했다.

{
  isLoading ? <DashboardSkeleton /> : <Dashboard />;
}

기능은 동일했다.

응답 속도도 동일했다.

하지만 사용자 반응은 완전히 달라졌다.

서비스가 더 빠르게 느껴진다는 피드백을 받았다.

그때 처음으로 느꼈다.

실제 속도와 체감 속도는 다를 수 있다.

작은 인터랙션이 생각보다 중요했다

예전에는 애니메이션이나 인터랙션을 부가 기능 정도로 생각했다.

하지만 사용성 테스트를 하면서 생각이 바뀌었다.

버튼에 hover 효과가 있는 것만으로도 클릭 가능한 요소라는 사실을 더 쉽게 인지했다.

페이지 전환 애니메이션이 있으면 갑작스러운 화면 변화가 덜 어색하게 느껴졌다.

폼 제출 후 성공 메시지가 바로 보이면 사용자는 작업이 완료되었다는 확신을 얻었다.

코드로 보면 몇 줄 안 되는 작업이었다.

button {
  transition: all 0.2s ease;
}

하지만 사용자가 느끼는 경험은 생각보다 크게 달라졌다.

좋은 UX는 설명하기 어렵다

재미있는 점은 좋은 UX는 설명하기 어렵다는 것이다.

문제가 있는 UX는 쉽게 발견된다.

왜 안 눌리지?

왜 이렇게 느리지?

방금 저장된 건가?

하지만 좋은 UX는 특별히 인식되지 않는다.

그냥 자연스럽게 사용하게 된다.

어쩌면 좋은 프론트엔드는 존재감이 없는 상태에 가까운 것 같다.

사용자가 기능을 사용하는 것이 아니라 자신의 목적에 집중할 수 있게 만드는 것.

그게 가장 이상적인 경험이 아닐까 싶다.

프론트엔드 개발자의 역할

예전에는 프론트엔드 개발자를 화면을 만드는 사람이라고 생각했다.

지금은 조금 다르게 생각한다.

프론트엔드 개발자는 사용자가 서비스를 경험하는 모든 순간을 설계하는 사람에 가깝다.

API를 연결하는 것도 중요하고,

상태 관리를 잘하는 것도 중요하고,

성능 최적화도 중요하다.

하지만 그 모든 기술은 결국 사용자 경험을 만들기 위한 도구일 뿐이다.

마무리

기능은 시간이 지나면 대부분 비슷해진다.

하지만 경험은 다르다.

같은 기능이라도 더 빠르게 느껴질 수 있고,

더 편하게 느껴질 수 있고,

더 신뢰할 수 있게 만들 수 있다.

그래서 요즘은 새로운 기능을 개발할 때마다 한 가지를 먼저 생각하려고 한다.

사용자는 이 기능을 어떻게 경험하게 될까?

아마 프론트엔드 개발의 재미도 그 지점에 있는 것 같다.

More posts

전체 보기