50P by neo 2일전 | ★ favorite | 댓글 6개
  • 전통적 의미의 소프트웨어 엔지니어링은 종말을 맞이하고, AI를 토대로 한 프로덕트 엔지니어링 패러다임이 등장함
  • 프로덕트 엔지니어는 제품 관리자와 풀스택 개발자의 융합형 역할로, 기획부터 배포까지 전체 사이클을 책임지는 자율적·결과 지향형 빌더
  • 이들은 AI 네이티브·T자형 역량·KPI 중심 사고를 바탕으로 팀이 아닌 기능(feature) 단위로 조직되어 온보딩·결제·알림 등 엔드투엔드 책임을 맡게 됨
  • 제품 단계에서는 아이데이션·시장 분석·사용자 연구·제품 디자인을 수행하고, 엔지니어 단계에서는 아키텍처·시스템 설계·프론트엔드·백엔드 개발을 담당함
  • AI는 특히 정의 가능하고 결정론적(D&D) 영역에서 강력한 도구가 되며, 조직은 향후 기존 PM-디자이너-엔지니어 삼각형 대신 프로덕트 엔지니어+AI 협업 구조로 진화할 가능성이 큼

Background

  • 전통적인 소프트웨어 엔지니어링은 더 이상 유효하지 않음
    • 1972년 데니스 리치가 C 언어를 발표한 것이 마지막 근본적 패러다임 전환이었음
    • 그 이후의 발전은 기계어 작성과 변환을 쉽게 하기 위한 최적화와 추상화에 불과했음
    • 생산성 측정은 오랫동안 코드의 시간·공간 효율성, 길이, 해석 가능성으로 평가되었음
  • 현재는 완전히 새로운 패러다임으로 진입했으며, 다시 과거의 “날코딩(raw coding)” 시대로 돌아갈 가능성은 낮음
  • 존 카맥은 최근, 앞으로 최고의 빌딩 도구는 손코딩에서 AI 가이드로 전환될 것이라고 언급함
    • 따라서 엔지니어는 “프로덕트 스킬(product skills)”을 키우고 최적의 도구를 활용하는 것이 중요해짐
  • 소프트웨어 엔지니어링은 점차 프로덕트 엔지니어링(Product Engineering) 으로 진화하게 될 것임

프로덕트 엔지니어(Product Engineer, PE)란?

  • 제품 관리자(Product Manager)와 풀스택 소프트웨어 엔지니어의 결합형 역할
  • 전체 제품 주기를 책임지고, 제품의 성패에 직접적으로 연관되는 인재
  • 프로덕트 엔지니어의 주요 특징:
    • AI 네이티브: LLM을 부가 기능이 아닌 핵심 도구로 활용
    • T자형 역량: 깊은 엔지니어링 기술을 보유하면서 제품·데이터·디자인에 걸쳐 폭넓은 이해
    • 성과 지향성: 리텐션, 전환율, 활성화율 등 KPI를 책임
    • 자율적 실행력: 아이디어 → 기획서 → 디자인 → 배포까지 최소한의 감독으로 수행 가능
  • 팀 구조 변화
    • 프로덕트 엔지니어들은 소규모지만 고도로 숙련된 린 팀(lean team) 을 구성
    • 기존의 프론트엔드/백엔드/인프라 분리 대신, 제품·기능 단위(feature squad) 중심으로 조직
    • 스택별로 나뉘지 않고 성과(outcome) 중심으로 정렬됨
    • 예: 한 명은 온보딩, 다른 한 명은 결제, 또 다른 한 명은 알림 기능을 담당
    • 각자는 UX부터 데이터 계층까지 전체 기능을 엔드투엔드로 책임
    • 즉, 기존의 “프론트엔드/백엔드/인프라 팀” → “기능별 독립 스쿼드”로 구조가 전환됨
  • 프로덕트 엔지니어는 두 가지 측면을 가짐:
    • 프로덕트 측면 (사전 개발, pre-development)
    • 엔지니어 측면 (개발 및 이후 단계, in/post-development)

The Product

  • 프로덕트 엔지니어의 제품 측면 역할은 전통적인 제품 관리자(Product Manager)의 업무와 겹치며, 제품의 기획과 방향성을 책임지는 부분임
  • Product Ideation (제품 아이데이션)
    • 제품의 핵심 기능, 가치 제안(Value Proposition), 대상 사용자 집단을 정의하고 구체화하는 과정
    • 제품의 존재 이유와 타깃 고객을 명확히 설정하여 향후 개발 방향의 기초를 마련함
  • Mind-mapping (마인드맵 작성)
    • 중심 개념에서 파생되는 아이디어나 과제를 도식화·시각화하여 큰 그림을 이해
    • 팀 내 아이디어 공유와 발전을 돕는 도구로 활용됨
  • Brainstorming (브레인스토밍)
    • 개인적으로 아이디어를 기록하고, 이를 다른 사람들과 공유하여 개선·보완·검증하는 과정
    • 협업을 통해 아이디어의 다양성과 창의성을 증폭시킴
  • Discovery (디스커버리)
    • 고객의 니즈를 탐구하고 시장 기회를 조사·연구하여 비즈니스 목표와 사용자 가치가 일치하는 제품을 찾는 과정
    • 사용자 인터뷰, 경쟁사 분석, 시장 리서치 등이 포함됨
  • Selection (우선순위 결정)
    • 전략 방향·비즈니스 목표·고객 요구·시장 트렌드를 바탕으로 어떤 기능·프로젝트를 먼저 진행할지 결정
    • 제한된 자원 내에서 가장 효과적인 실행안을 도출함
  • Market Analysis (시장 분석)
    • 제품이 속할 시장 환경을 분석하고, 경쟁 구도·시장 규모·기회와 위협을 파악함
    • 제품 포지셔닝과 성장 전략 수립에 활용됨
  • User Research (사용자 연구)
    • 사용자의 행동·니즈·고충을 심층적으로 이해하는 과정
    • 사용자 경험을 데이터 기반으로 개선하기 위한 근거 확보
  • Product Design (제품 디자인)
    • UI/UX 디자인, 서비스 디자인, 인터랙션 디자인, 사용자 테스트를 포함
    • 프로토타입 제작과 반복 테스트를 통해 사용자 친화적 경험을 보장
  • 이러한 역할들은 전통적인 제품 관리자가 수행해 온 것이지만, 프로덕트 엔지니어는 AI 도구를 활용해 더 민첩하게 수행
    • AI는 새로운 아이디어 창출에는 한계가 있으나, 이미 존재하는 패턴을 검토하거나 반복적인 발상을 보완하는 데 강력함
    • 중요한 점은 제품 비전은 사람이 주도해야 하며, AI는 아이디어 정제·보정용 사운드보드로 활용해야 함

The Engineer

  • 프로덕트 엔지니어의 엔지니어 측면 역할은 기획된 사양을 실제로 실행하고 구현하는 단계임
  • 네 가지 주요 영역을 포함함:
    • 소프트웨어 아키텍처: 구조적 의사결정
    • 시스템 설계: 시스템 정의와 구체화
    • 프론트엔드 개발: 시각적 디자인과 사용자 인터페이스 구현
    • 백엔드 개발: 비즈니스 로직 최적화 및 데이터베이스 설계
  • 물론 테스트, 모니터링, AI 통합 등 추가적인 엔지니어링 주제도 중요하나, 대다수 프로젝트에서는 SLC(Simple, Lovable, Complete) 제품을 빠르게 구축·배포하는 것이 우선됨
  • 코딩 LLM은 정의 가능하고 결정론적(D&D) 환경에서 특히 강점을 발휘하므로, 엔지니어링 측면에서 AI의 기여가 더 큼
  • Planning

    • AI를 효과적으로 활용하기 위한 핵심 단계는 기획
    • 프로젝트 의도를 잘 구조화된 요구사항으로 AI에 제공하면 장기적으로 코드 품질이 크게 향상됨
    • Rules(규칙 세트) 를 정의하면 AI 코더가 시스템 수준 지침을 지속적으로 참조 가능
      • 예: 문서 갱신 규칙, 아키텍처 변경 기록, 코드 스타일, 테스트 기준
    • 예시 규칙 구조:
      • /docs 문서 및 README, CHANGELOG 동기화
      • 주요 의존성·아키텍처 변경 시 ADR(Architecture Decision Record) 작성
      • OpenAPI Generator로 API 클라이언트 생성, TypeScript axios 템플릿 활용
      • 데이터 접근은 repository 패턴, 에러 처리 표준화
      • 단위·통합·E2E 테스트 기준 명확히 정의
    • 대부분의 IDE에서 /Generate Cursor Rules로 자동 생성 가능
  • Software Architecture

    • 아키텍처는 코드베이스의 뼈대를 형성하는 의사결정으로 변경 비용이 크므로 초기 단계에서 신중해야 함
    • 고려 대상:
      • 모놀리식 vs 마이크로서비스, 서버리스 vs 컨테이너화
      • 의존성 관리, 통합 경계 정의
      • 모듈화와 관심사 분리
      • REST, GraphQL, gRPC, 이벤트 버스 등 통신 프로토콜
      • 확장성 전략(수평 확장 등)
    • AI 역할:
      • 대안적 아키텍처 패턴의 장단점 비교
      • Mermaid.js로 다이어그램 생성
      • ADR 초안 작성
      • 단, 최종 결정은 인간의 판단·도메인 전문성이 필요
  • System Design

    • 시스템 설계는 아키텍처를 구체화하여 실제 서비스·데이터 흐름·상태 머신·인터페이스로 정의하는 과정
    • 주요 작업:
      • API와 서비스 경계 정의
      • 데이터 모델링 및 계층 간 데이터 흐름 설계
      • 에러 처리와 장애 복구 전략
      • 상태 전환, 비동기 워크플로 모델링
      • 설계 문서 작성 및 엣지 케이스 검토
    • AI 활용 가능성:
      • 초기 설계 초안 생성
      • 동시성 문제, 엣지 케이스 시뮬레이션
      • API 인터페이스·스키마·상태 머신 작성
      • 설계 패턴 비교 및 피드백 제공
      • 주니어 엔지니어”처럼 설계 검증에 도움
  • Frontend Engineering

    • 프론트엔드는 시각적 디자인과 클라이언트 기능 구현을 담당
    • JS 생태계, 특히 React 같은 널리 사용되는 프레임워크에서 AI 성능 우수
    • AI 성능 향상 팁:
      • 브랜드 가이드라인(폰트, 색상, 간격, 반응형 규칙)을 스크린샷·문서 형태로 AI에 제공
      • Tailwind config, CSS 변수 등으로 일관된 UI 코드 생성
    • Figma-to-code 도구(Tempo 등)를 통한 코드 변환도 시도 가능
    • 반복적인 컴포넌트 정의와 반응형 규칙을 AI에 입력하면 브랜드 일관성을 유지하는 UI 작성이 쉬워짐
  • Backend Engineering

    • 백엔드는 비즈니스 로직 구현, 데이터베이스 설계, API 구축 및 최적화 담당
    • AI는 정의 가능하고 결정론적인 작업(D&D)에서 특히 유효
    • 효과적 기법:
      • 문서 임포트: API 스펙, 기술 문서를 IDE에 직접 불러와 AI가 참조하게 하여 환각 감소
      • 워크스페이스 사용: 프론트엔드·백엔드가 분리된 프로젝트에서 폴더를 통합하여 맥락을 제공, AI가 프로젝트 전반 구조를 더 잘 이해하도록 도움

General Tips for the Product Engineer

  • Always work at the frontier

    • 항상 최신 모델을 활용하는 것이 중요함
    • 최신 모델은 컨텍스트 윈도우 크기 증가로 더 큰 프로젝트 이해 가능
    • 추론 능력 향상, 환각 감소, 안정성 증가 등의 성능 개선이 있음
  • Use thinking mode

    • Thinking mode를 켜면 모델 답변 품질이 크게 향상됨
    • 옵션이 있다면 항상 활성화해야 함
    • 지원하지 않는 경우, 프롬프트에 “ultrathink” 라는 단어를 포함하는 방식으로 유사한 효과를 얻을 수 있음
  • Be hyper-specific

    • AI에게 요청할 때는 구체적이고 명확하게 작성해야 함
    • 목표, 제약 조건, 디자인 결정 사항, 관련 코드 스니펫, 파일 경로, 컴포넌트 이름을 반드시 포함해야 함
    • 좋은 프롬프트 예시:
      • /src/pages/SignUp.tsx 폼에 분석 추적 기능 추가
      • 사용자가 ‘Submit’을 클릭할 때 trackEvent() 함수를 통해 sign_up_started 이벤트 발송
      • 이벤트는 디바운스 처리 필요
      • 사용자의 이메일 도메인(예: gmail.com)을 속성으로 포함
  • Provide visual context

    • 프론트엔드 작업에서는 시각적 맥락 제공이 특히 중요함
    • 코딩 LLM은 이미지를 이해하므로, 디자인 스크린샷이나 버그로 인한 오류 메시지 캡처를 첨부하면 AI가 문제를 더 빠르게 해결 가능
  • Work in small iterations

    • AI에게 큰 작업을 한 번에 맡기기보다 작은 단위로 나누어 반복(iteration) 해야 함
    • 먼저 기본 기능을 구현한 뒤, 점진적으로 개선하는 방식이 효과적임
    • 프롬프트는 명확히 정의된 여러 지시 사항으로 쪼개어 전달하는 것이 좋음
  • Stay curious

    • 인터넷에는 수많은 프롬프트 엔지니어링 팁과 사례가 존재함
    • 커뮤니티나 관련 네트워크에 참여하면 최신 기법을 접하고, 우수한 활용 방법을 빠르게 습득할 수 있음

Closing thoughts

  • AI 혁명에도 불구하고, 가까운 미래에 대체되지 않거나 오히려 더 가치가 커질 역량이 존재함
  • CLI 도구 숙련도 (예: git)
    • Git은 코드 버전 관리와 변경 내역 추적에 있어 가장 효율적인 도구
    • AI 생성 코드의 신뢰성이 낮기 때문에, 이전 상태로 되돌리거나 다시 시작할 수 있는 능력이 필수
    • 따라서 Git과 같은 CLI 도구 사용 능력은 점점 더 중요해짐
  • 엔지니어링 기초 역량
    • 기술 부채(technical debt)를 관리하고, 코드 모듈화·캡슐화를 유지하는 능력
    • AI는 코드 스타일의 일관성(명명 규칙, DRY 원칙, 모듈성)을 보장하지 못할 수 있음
    • 따라서 엔지니어가 직접 기초 원칙을 지키는 능력은 더 높은 가치를 가짐
    • 다만, 장기적으로는 AI가 더 많은 코드를 작성하게 되면서 변화할 여지는 있음
  • 강력한 커뮤니케이션 능력
    • 명확하고 구조화된 문서·프롬프트·사양 작성 능력은 레버리지 효과를 가짐
    • AI는 인간처럼 의도를 추론하지 않고, 지시된 대로만 수행하기 때문에 명확성은 필수
    • 좋은 명세서, 잘 정의된 프롬프트, 체계적 문서화는 생산성과 결과물 품질 향상으로 이어짐
  • 조직 내 권력 이동
    • 기술적 업무는 점차 AI가 맡게 되며, 이는 D&D(Definable & Deterministic) 성격에 적합
    • 실행력이 저비용·범용화될수록, AI를 관리하고 성과를 패키징하여 경영진·주주에게 전달하는 역량이 더 큰 가치 확보
    • 대기업에서는 실제 실행 과정은 보이지 않고 결과물만 전달되므로, 전략적 전달·성과 포장 능력이 영향력을 좌우
    • 기술을 직접 구현하는 사람보다 이를 정렬·전달하는 관리자가 더 큰 힘을 가질 가능성이 높음
  • 조직 구조 변화 전망
    • 새로운 기업(스타트업)일수록 프로덕트 엔지니어의 역할이 빠르게 반영됨
    • 성장 과정에서 AI가 점점 더 자율성을 갖추면, 전통적인 PM–디자이너–엔지니어 삼각형 구조는 약화될 수 있음
    • 대신, 제품 감각을 갖춘 프로덕트 엔지니어가 리드하는 소규모 pod와, 전 스택을 보조하는 AI 코파일럿이 함께하는 새로운 팀 토폴로지가 등장할 가능성이 있음

References

좀 생각해보면 여기처럼 동작한다면 이것 역시 사람이 필요한 일인가 싶은 생각이 드네요.
Product Engineer AI로 가능하지 않을까하는 느낌이.

Po가 개발을 배우는게 빠를까 개발자가 po역할을 배우는게 빠를까

일반화하긴 어렵지만, 대체적으로 PO, PM, 디자이너분들은 AI의 발전으로 PO,PM 분들에게 더 많은 기회가 열렸다고 보는 관점을 가지신 분들이 많았고,

반대로, 개발자분들은 AI의 발전을 통해서, 굳이 PO,PM,디자이너 없이 혼자서 제품을 더 잘 개발할 수 있게 될거라고 기대를 하시는 분들이 많았던것 같습니다.

앞으로 어떻게될지는 한번 지켜봐야겠네요 ㅎㅎ

매우 좋은 내용이며 상당히 공감함.
2년 전부터 이런 방식을 지향하면서 커리어를 쌓고있고, 조직 규모에 따라서 실현 가능범위가 제한되므로 개인적인 시행착오를 겪고있긴함. 지금까지 결과는 매우 좋음

PM/PO가 바이브 코딩으로 개발까지 다 하는 역할로 보이네요.

굉장히 중요한 내용임. 근데 실제 환경에서 굉장히 어려움. 체감상 어느 조직에 가더라도 완성도에 반하게 일 하고 싶어하는 사람의 비율이 일정 비율 항상 있음. PE는 사실상 사람관리도 포함된 업무임. 즉 개인의 능력 뿐만 아니라 조직의 기업문화 관리 능력에도 굉장히 크게 영향을 받음