QA 플랫폼의 핵심 기능들

by 제임스

QA 엔지니어가 개발자가 되어 가장 먼저 하고 싶었던 건 무엇일까요? 바로 '내가 필요한 QA 도구를 직접 만들어보는 것'이었습니다.


현업에서 늘 아쉬웠던 부분들... 커피챗을 하면서 QA 동료들의 고민을 들으며 "이런 툴이 있으면 정말 도움이 될 텐데"라고 생각했던 것들이 쌓여갔죠. 그러던 중 문득 깨달았습니다. '내가 직접 만들어보면 어떨까?'


처음엔 단순히 개인적인 호기심으로 시작했지만, 점차 더 큰 목표가 생겼습니다. "함께 프로젝트를 진행하는 개발팀의 기술 스택을 알아가면서, 기술적으로 코드 단에서 어떤 이슈를 끌어낼 수 있을지 알아보자"라는 QA 엔지니어로서의 학습 목표 말이죠.


그렇게 JamesCompany의 9가지 핵심 서비스가 탄생했습니다.


Note: 아래 코드들은 개념 설명을 위한 예시입니다. 실제 서비스에서는 하드코딩이나 룰 베이스 방식이 아닌, API 연동과 동적 데이터 처리를 통해 더 유연하고 확장 가능한 구조로 구현되어 있습니다.


1. Coffee-Chat: QA 멘토링 시스템


개발 배경: "선배님, 커피 한잔하면서 조언 좀..."


QA 커뮤니티에서 가장 많이 듣는 말이 뭔지 아시나요? "선배님, 커피 한잔하면서 조언 좀 구할 수 있을까요?" 였습니다. 하지만 서로 시간 맞추기도 어렵고, 어떤 선배에게 연락해야 할지도 막막하죠.


처음엔 단순하게 생각했습니다. "그냥 캘린더 앱에 멘토 리스트 붙이면 되는 거 아냐?" 하지만 실제로 구현해보니... 하하, 역시 개발은 만만한 게 아니더군요.


구글 캘린더 연동의 늪



구글 캘린더 API와 씨름하면서 깨달은 건, OAuth 토큰 관리가 생각보다 복잡하다는 것이었습니다. 토큰 만료 시간, 리프레시 토큰 처리, 권한 스코프 설정... "그냥 캘린더 읽기만 하면 되는 거 아냐?"라고 생각했던 과거의 저를 때리고 싶더군요.


멘토-멘티 매칭 로직


처음엔 단순히 시간만 맞추면 된다고 생각했는데, 실제로는 고려할 게 정말 많았습니다. 멘토의 전문 분야와 멘티의 관심 분야 매칭, 시간대별 선호도, 취소 및 재예약 정책... 특히 "노쇼(No-show)" 방지를 위한 리마인더 시스템을 구축하는 게 생각보다 복잡했죠.


2. Bug Bounty Arena: 버그 리포팅 게임화


개발 배경: "버그 찾기도 게임처럼 재미있게!"


베타 테스트를 진행하다 보면 늘 같은 고민이 있었습니다. "어떻게 하면 테스터들이 더 적극적으로 참여하게 할 수 있을까?" 그러다 문득 생각났죠. "게임처럼 만들면 어떨까?"


포인트 시스템과 리더보드



게임화(Gamification)를 적용하면서 가장 신경 쓴 부분은 '공정성'이었습니다. 단순히 버그 개수만으로 평가하면 의미 없는 버그를 양산하는 문제가 생기거든요. 그래서 심각도별 가중치 시스템을 도입했습니다.


버그 바운티 데이터베이스 모델

SQLAlchemy를 사용한 버그 리포트 테이블 정의입니다. 버그의 심각도(Critical/Major/Minor/Trivial), 상태(Pending/Confirmed/Fixed/Rejected), 포인트, 품질 점수 등 버그 리포트의 모든 정보를 저장하는 스키마를 포함합니다. User 모델과의 관계 설정으로 리포터 정보를 연결하고, 첨부파일 관리를 위한 BugAttachment 모델과도 연동됩니다.


버그 심각도 자동 평가 엔진

AI 기반 버그 평가 시스템의 핵심 로직입니다. 제출된 버그 리포트의 텍스트를 분석하여 심각도를 자동으로 판단하고, 리포트 품질(재현 단계, 스크린샷, 환경 정보 포함 여부 등)을 평가합니다. 또한 기존 버그와의 유사도를 계산하여 중복 여부를 체크하고, 최종 포인트를 산정합니다. 키워드 매칭과 자카드 유사도 알고리즘을 활용합니다.


버그 바운티 REST API 엔드포인트

FastAPI 라우터로 구현된 버그 바운티 관련 API들입니다. 버그 리포트 제출(/submit), 리더보드 조회(/leaderboard), 개인 통계 확인(/my-stats) 등의 엔드포인트를 제공합니다. JWT 인증을 통해 사용자를 식별하고, 제출된 버그를 평가 서비스로 전달하여 자동 평가 후 포인트를 부여합니다.


버그 바운티 요청/응답 스키마

Pydantic을 사용한 데이터 검증 및 직렬화 스키마입니다. API 요청 시 필요한 버그 리포트 데이터 구조(BugReportCreate), 평가 결과 응답 형식(BugEvaluationResult), 리더보드 엔트리 구조(LeaderboardEntry) 등을 정의합니다. 필드별 유효성 검사 규칙(최소/최대 길이, 필수 여부 등)을 포함하여 데이터 무결성을 보장합니다.


자동 평가 시스템을 만들면서 가장 어려웠던 점은 "과연 이게 공정한가?"였습니다. 처음엔 완전 자동화를 꿈꿨지만, 결국 QA 팀의 수동 검토가 필요한 부분이 있더군요. 특히 "이게 버그냐 기능이냐" 같은 애매한 케이스들...


3. QA Code Challenge: 실습 기반 학습


개발 배경: "코딩 테스트처럼 QA 실력도 테스트할 수 있지 않을까?"

개발자들은 프로그래머스나 리트코드에서 실력을 향상시키잖아요? QA 엔지니어도 비슷한 플랫폼이 있으면 좋겠다고 생각했습니다. 테스트 케이스 작성, 자동화 스크립트 구현 등을 실습할 수 있는 플랫폼 말이죠.

처음엔 단순하게 생각했습니다. "그냥 코드 에디터 붙이고 실행하면 되는 거 아냐?" 하지만 실제로 구현해보니... 보안, 성능, 사용자 경험 등 고려할 게 한두 가지가 아니더군요.


시스템 아키텍처

QA Code Challenge 시스템은 크게 4개의 컴포넌트로 구성됩니다:

Frontend: 코드 에디터와 실행 결과를 보여주는 UI

Backend API: 코드 실행 요청을 처리하고 결과를 반환

Sandbox Runner: Docker 기반의 안전한 코드 실행 환경

Challenge DB: 문제와 테스트 케이스를 저장하는 데이터베이스


코드 에디터 컴포넌트

Monaco Editor를 활용한 메인 코드 작성 인터페이스입니다. 사용자가 문제를 읽고 코드를 작성할 수 있는 핵심 컴포넌트로, 실시간 구문 강조(syntax highlighting)와 자동 완성 기능을 제공합니다. 코드 실행, 초기화, 제출 등의 액션 버튼을 상단 툴바에 배치하여 직관적인 사용자 경험을 제공합니다. 왼쪽에는 코드 에디터, 오른쪽에는 실행 결과를 표시하는 분할 레이아웃으로 구성되어 있습니다. 테스트 케이스 실행 결과를 실시간으로 확인할 수 있어 즉각적인 피드백이 가능합니다.


테스트 결과 패널 컴포넌트

코드 실행 결과와 테스트 케이스 통과 여부를 시각적으로 표시하는 컴포넌트입니다. 상단에는 콘솔 출력을 터미널 스타일로 보여주고, 하단에는 각 테스트 케이스의 통과/실패 여부를 색상과 아이콘으로 구분하여 표시합니다. 실패한 테스트 케이스의 경우 예상값과 실제값을 비교하여 보여주어 디버깅을 용이하게 합니다. 실행 중일 때는 로딩 애니메이션을 표시하여 사용자에게 진행 상황을 알려줍니다. 전체 테스트 케이스 중 몇 개를 통과했는지 요약 정보도 함께 제공합니다.


API 엔드포인트

FastAPI를 사용하여 구현한 코드 실행 요청 처리 엔드포인트입니다.

/run 엔드포인트는 사용자의 코드를 받아 Docker 샌드박스에서 실행하고 결과를 반환하며,

/submit 엔드포인트는 최종 솔루션을 검증하고 포인트를 부여합니다. 각 사용자의 일일 실행 횟수를 체크하여 서버 리소스 남용을 방지하고, 모든 실행 기록을 데이터베이스에 저장하여 추후 분석에 활용합니다. JWT 인증을 통해 사용자를 확인하고, 에러 발생 시 적절한 HTTP 상태 코드와 메시지를 반환합니다. 비동기 처리를 통해 여러 사용자의 요청을 효율적으로 처리할 수 있도록 설계되었습니다.


Docker 기반 샌드박스 실행기

사용자가 제출한 코드를 안전하게 실행하기 위한 Docker 컨테이너 기반 샌드박스 시스템입니다. 각 코드 실행은 격리된 컨테이너에서 이루어지며, CPU(0.5 코어)와 메모리(128MB) 사용량을 제한하여 시스템 안정성을 보장합니다. 네트워크 접근을 차단하여 외부 리소스 접근을 방지하고, 10초 타임아웃을 설정하여 무한 루프 등의 악의적인 코드로부터 시스템을 보호합니다. Python, JavaScript, Java 등 다양한 언어를 지원하며, 각 언어별로 최적화된 실행 래퍼를 제공합니다. 실행 완료 후에는 임시 파일을 자동으로 정리하여 디스크 공간을 효율적으로 관리합니다.


챌린지 관리 서비스

QA Code Challenge의 핵심 비즈니스 로직을 담당하는 서비스 클래스입니다. 문제 조회, 실행 권한 확인, 포인트 부여, 진행률 계산 등의 기능을 제공합니다. 사용자별 일일 실행 횟수(50회)를 관리하여 서버 리소스를 보호하고, 이미 해결한 문제에 대해서는 중복 포인트를 부여하지 않도록 체크합니다. 사용자의 전체 진행 상황과 카테고리별 달성률을 계산하여 학습 동기를 부여합니다. 모든 제출 기록과 실행 히스토리를 저장하여 사용자의 성장 과정을 추적할 수 있도록 합니다. 레벨 시스템(100점당 1레벨)을 통해 게임화 요소를 추가하여 지속적인 참여를 유도합니다.


챌린지 관련 모델

SQLAlchemy를 사용하여 정의한 QA Code Challenge의 데이터베이스 스키마입니다. Challenge 테이블은 문제 정보와 테스트 케이스를, UserSubmission 테이블은 사용자의 제출 기록을, RunHistory 테이블은 모든 실행 이력을 저장합니다. 카테고리별로 문제를 분류하고, 난이도(easy/medium/hard)와 포인트를 설정할 수 있습니다. 히든 테스트 케이스를 별도로 관리하여 단순 하드코딩을 방지하고, 각 문제별 통계(제출 횟수, 성공률)를 자동으로 집계합니다. JSON 타입을 활용하여 테스트 케이스, 힌트, 실행 결과 등의 복잡한 데이터 구조를 효율적으로 저장합니다.


Docker 이미지 준비 스크립트

QA Code Challenge 샌드박스 실행에 필요한 Docker 이미지를 사전에 다운로드하는 셸 스크립트입니다. Python, Node.js, Java 실행 환경을 미리 준비하여 첫 실행 시 지연 시간을 최소화합니다. 각 이미지는 보안과 성능을 고려하여 선택된 경량 버전(slim, alpine)을 사용합니다. 스크립트 실행 후 다운로드된 이미지 목록을 확인할 수 있어 설치 상태를 쉽게 파악할 수 있습니다. 프로덕션 환경 배포 시 이 스크립트를 실행하여 샌드박스 환경을 사전에 준비하면 사용자 경험을 크게 개선할 수 있습니다.


보안 고려사항

코드 실행 환경을 만들면서 가장 신경 쓴 부분은 보안이었습니다.

리소스 제한: CPU, 메모리 사용량 제한으로 DoS 공격 방지

네트워크 격리: 컨테이너의 네트워크 접근 차단

파일 시스템 격리: 읽기 전용 볼륨 마운트

실행 시간 제한: 10초 타임아웃으로 무한 루프 방지

일일 실행 횟수 제한: 사용자당 50회로 제한


향후 개선 계획

더 많은 언어 지원: Go, Rust, Ruby 등

협업 기능: 페어 프로그래밍, 코드 리뷰

AI 힌트 시스템: 막힐 때 단계별 힌트 제공

성능 측정: 실행 시간, 메모리 사용량 비교

대회 시스템: 주간/월간 챌린지 대회


QA Code Challenge를 만들면서 느낀 점은, 개발자들이 알고리즘 문제를 푸는 것처럼 QA 엔지니어도 실습을 통해 실력을 향상시킬 수 있다는 것이었습니다. 특히 테스트 자동화 스크립트 작성이나 API 테스트 같은 실무 기술을 직접 연습할 수 있어서 좋더라고요.

무엇보다 "내가 짠 테스트 코드가 실제로 버그를 찾아낸다"는 성취감이 정말 크더군요!



4. Education Hub: 교육 강의 시스템

개발 배경: "QA 교육 콘텐츠도 체계적으로!"

QA 교육이 항상 아쉬웠습니다. 개발 교육은 인프런, 유데미 등에 넘쳐나는데, QA 교육은 찾기 힘들거든요. 그래서 직접 만들기로 했습니다.


동영상 스트리밍과 진도 관리

VideoPlayer 컴포넌트 - 진도 추적이 가능한 동영상 플레이어 사용자의 학습 진도를 실시간으로 추적하고 저장하는 동영상 플레이어입니다. 배속 조절, 구간 이동, 볼륨 조절 등 학습에 필요한 모든 기능을 제공합니다. 특히 5초마다 자동으로 진도를 저장하여 끊김 없는 학습 경험을 제공합니다. 탭을 벗어나면 자동 일시정지되어 부정 수강을 방지합니다. 95% 이상 시청 시 자동으로 완료 처리됩니다.


집중도 체크 퀴즈 시스템

FocusQuiz 컴포넌트 - 학습 중 집중도 확인 동영상 시청 중 랜덤한 시점에 나타나는 집중도 체크 퀴즈입니다. 방금 본 내용에 대한 간단한 질문으로 실제 학습 여부를 확인합니다. 3번 실패 시 해당 구간을 다시 시청하도록 유도합니다. 퀴즈 결과는 수료증 발급 조건에 반영됩니다. 부정 수강 방지와 학습 효과 증대를 동시에 달성합니다.


커리큘럼 관리 시스템

EducationService - 체계적인 커리큘럼 관리 코스와 레슨의 구조화된 관리를 담당하는 백엔드 서비스입니다. 순차적 학습을 위한 레슨 잠금/해제 시스템을 구현했습니다. 사용자별 학습 패턴을 분석하여 예상 완료일을 계산합니다. 퀴즈 시도 횟수에 따른 동적 힌트 시스템을 제공합니다. 수료 조건 충족 시 자동으로 수료증을 발급합니다.


코스 목록 및 검색 UI

CourseList 컴포넌트 - 교육 과정 탐색 인터페이스 사용자가 쉽게 원하는 교육 과정을 찾을 수 있는 UI입니다. 카테고리별 필터링과 난이도별 정렬 기능을 제공합니다. 각 코스의 진도율과 예상 완료 시간을 한눈에 확인할 수 있습니다. 인기 코스와 신규 코스를 별도로 하이라이트합니다. 수료증 발급 가능 여부를 미리 확인할 수 있습니다.


수료증 발급 시스템

CertificateGenerator - 검증 가능한 수료증 생성 코스 완료 시 자동으로 발급되는 수료증 시스템입니다. 고유 검증 코드를 포함하여 위조 방지 기능을 제공합니다. PDF 형식으로 다운로드 가능하며 이메일 발송도 지원합니다. LinkedIn 공유 기능으로 경력 관리에 활용할 수 있습니다. 블록체인 기반 검증 시스템 연동을 준비 중입니다.



교육 시스템을 만들며 배운 것들

동영상 플레이어를 구현하면서 가장 신경 쓴 부분은 '진도 관리'였습니다. 단순히 영상을 틀어놓고 딴짓하는 걸 방지하기 위해 여러 장치를 마련했죠. 예를 들어, 탭을 벗어나면 자동으로 일시정지되고, 일정 시간마다 집중도 체크 퀴즈가 나오는 식으로요.

교육 시스템을 만들면서 가장 고민했던 부분은 "어떻게 하면 끝까지 완주하게 할 수 있을까?"였습니다. 게임처럼 레벨 시스템을 도입하고, 이전 레슨을 완료해야 다음 레슨이 열리는 구조로 만들었죠. 또한 예상 완료일을 보여주어 동기부여를 하려고 했습니다.

특히 집중도 체크 퀴즈는 정말 효과적이었습니다. 처음엔 "너무 귀찮지 않을까?" 걱정했는데, 오히려 사용자들이 "퀴즈 덕분에 집중해서 들었다"는 피드백을 주더라고요. 역시 QA 엔지니어는 검증이 중요하다는 걸 다시 한번 느꼈습니다!



5. Worry Solver: AI 고민 상담사 구현 가이드

개발 배경: "QA 엔지니어는 외롭다..."

QA 업무를 하다 보면 정말 많은 고민이 생깁니다. "이 버그를 어떻게 설명해야 개발자가 이해할까?", "테스트 커버리지를 어디까지 해야 할까?", "자동화를 어떻게 시작해야 할까?" 등등... 이런 고민을 편하게 털어놓을 수 있는 AI 상담사를 만들어보기로 했습니다.


채팅 인터페이스 컴포넌트

QA 전문 AI 상담사와 대화할 수 있는 React 기반 채팅 인터페이스입니다. 카테고리별 상담 주제를 선택할 수 있고, 실시간 대화가 가능합니다. 메시지 히스토리를 관리하여 문맥을 유지한 대화가 가능하도록 구현했습니다. 타이핑 애니메이션과 자동 스크롤로 사용자 경험을 개선했습니다. 반응형 디자인으로 모바일에서도 편하게 사용할 수 있습니다.


AI 상담 서비스

QA 전문 AI 상담사의 핵심 로직을 담당하는 Python 서비스입니다. OpenAI API를 활용하여 QA 도메인에 특화된 응답을 생성합니다. 카테고리별로 다른 컨텍스트를 적용하여 더 정확한 조언을 제공합니다. 메시지 내용을 분석하여 관련 리소스를 자동으로 추천합니다. 대화 로그를 저장하여 서비스 개선에 활용할 수 있도록 설계했습니다.


FastAPI 엔드포인트

채팅 API 엔드포인트를 정의하는 FastAPI 라우터입니다. 요청 유효성 검증과 에러 처리를 포함합니다. 대화 히스토리를 관리하여 문맥을 유지한 응답을 가능하게 합니다. 비동기 처리로 높은 동시성을 지원합니다. 로깅과 모니터링을 위한 미들웨어 지원이 가능합니다.


환경 설정 파일

OpenAI API 키와 기타 설정을 관리하는 환경 설정 파일입니다. 환경별로 다른 설정을 적용할 수 있도록 구성했습니다. 보안을 위해 API 키는 환경 변수로 관리합니다. 로깅 레벨과 타임아웃 설정을 포함합니다. 개발/테스트/운영 환경을 쉽게 구분할 수 있습니다.


타입 정의 파일

TypeScript 타입 정의로 프론트엔드 개발의 안정성을 높입니다. API 응답과 요청의 타입을 명확히 정의합니다. 자동완성과 타입 체크로 개발 효율성을 향상시킵니다. 백엔드 API와의 일관성을 유지할 수 있습니다. 재사용 가능한 인터페이스로 코드 중복을 줄입니다.


API 클라이언트

프론트엔드에서 백엔드 API와 통신하는 클라이언트 모듈입니다. 에러 처리와 재시도 로직을 포함합니다. 타입 안정성을 보장하는 TypeScript 구현입니다. 인증 토큰 자동 첨부 기능을 제공합니다. 응답 캐싱으로 성능을 최적화합니다.


AI 상담사를 만들면서 가장 중요하게 생각한 건 'QA 도메인 특화'였습니다. 일반적인 챗봇이 아니라, QA 용어를 이해하고 실무 경험을 바탕으로 조언할 수 있어야 했죠.

프롬프트 엔지니어링이 정말 중요했습니다. 단순히 "QA 전문가처럼 답변해줘"라고 하는 것과, 구체적인 경력과 전문 분야를 설정하는 것의 차이가 엄청났거든요. 특히 한국 QA 문화를 이해하고 있다는 점을 강조했더니 훨씬 현실적인 조언을 해주더라고요.

실제로 사용해본 QA 엔지니어들의 피드백이 정말 좋았습니다. "선배가 옆에서 조언해주는 것 같다", "혼자 고민하던 걸 털어놓을 수 있어서 좋다"는 반응이 많았죠. 앞으로는 더 많은 대화 데이터를 수집해서 QA 특화 파인튜닝을 해볼 계획입니다!



QA Career Hub: QA 채용 시스템

개발 배경: "QA 전문 채용 플랫폼이 없다니..."

일반 개발자 채용 플랫폼은 많은데, QA 특화 채용 플랫폼은 찾기 어려웠습니다. QA 엔지니어만의 특별한 스킬셋과 경험을 제대로 어필할 수 있는 플랫폼이 필요했죠.


QA 특화 이력서 시스템

QAResumeBuilder 컴포넌트 - QA 전문 이력서 작성 도구

QA 엔지니어의 특별한 가치를 보여줄 수 있는 이력서 빌더입니다. 테스트 유형별 스킬, 자동화 도구 경험, 버그 발견 지표 등 QA 엔지니어만의 성과를 정량화합니다. 카테고리별 스킬 관리와 경력 연차별 레벨 설정이 가능합니다. AI를 활용한 자기소개서 최적화 기능도 제공합니다. 채용 담당자가 QA 역량을 한눈에 파악할 수 있도록 설계했습니다.


기술 스택 기반 매칭 시스템

JobMatchingService - AI 기반 채용 매칭 엔진

QA 직무와 지원자 프로필을 정교하게 매칭하는 서비스입니다. 스킬 가중치, 경력 연차, 자동화 경험, 도메인 지식을 종합 평가합니다. 유사 스킬도 인정하여 (Selenium ↔ Cypress) 현실적인 매칭을 제공합니다. TF-IDF를 활용한 텍스트 유사도 분석으로 자기소개서도 평가합니다. 매칭 점수에 따른 맞춤형 추천 메시지를 생성합니다.


JobListingComponent - 채용공고 목록 및 필터링

QA 직무에 특화된 채용공고 검색 인터페이스입니다. 테스트 유형, 자동화 도구, 도메인별 필터링이 가능합니다. AI 매칭 점수를 실시간으로 표시하여 적합도를 확인할 수 있습니다. 원클릭 지원과 관심 공고 저장 기능을 제공합니다. 급여 범위와 근무 형태별 필터도 지원합니다.


CareerHubAPI - 백엔드 API 엔드포인트

QA Career Hub의 핵심 API 엔드포인트들을 정의합니다. 이력서 CRUD, 채용공고 검색, 매칭 점수 계산을 처리합니다. JWT 인증으로 개인정보를 보호합니다. Redis 캐싱으로 매칭 결과를 최적화합니다. 비동기 처리로 대량의 매칭 요청도 효율적으로 처리합니다.


QA 특화 이력서 시스템을 만들면서 가장 신경 쓴 부분은 "QA 엔지니어만의 특별한 가치를 어떻게 보여줄 것인가"였습니다. 단순히 "버그를 찾았다"가 아니라, 발견한 버그의 임팩트, 자동화 커버리지 향상률, 프로세스 개선 성과 등을 정량적으로 보여줄 수 있도록 했죠.

매칭 시스템을 만들면서 가장 어려웠던 점은 "QA 스킬의 상대적 가치를 어떻게 평가할 것인가"였습니다. 예를 들어, Selenium 경험자가 Cypress를 배우는 건 쉽지만, 수동 테스터가 자동화를 시작하는 건 어렵잖아요? 이런 뉘앙스를 시스템에 반영하려고 노력했습니다.


개발자가 따라해보니 알게 된 것들

6개의 서비스를 만들면서 정말 많은 것을 배웠습니다. 가장 큰 깨달음은 "개발자도 정말 힘들구나"였죠...

1. 사용자 피드백의 소중함

QA 엔지니어로 일할 때는 "이 버그 좀 고쳐주세요"라고 리포트만 했는데, 직접 고치려니... 왜 개발자들이 "재현이 안 돼요"라고 하는지 알겠더라고요.

2. 완벽한 코드는 없다

아무리 테스트를 많이 해도 운영에 올리면 꼭 예상치 못한 문제가 생깁니다. 특히 동시접속자가 늘어날 때의 그 스릴이란...

3. 기술 부채의 무서움

"일단 돌아가게만 만들자"라고 생각했던 코드들이 나중에 발목을 잡더라고요. 리팩토링의 중요성을 뼈저리게 느꼈습니다.

4. 문서화의 중요성

"내가 짠 코드니까 기억하겠지"라고 생각했는데, 한 달만 지나도 "이게 뭐하는 코드였지?" 싶더라고요.

5. QA의 가치

역설적이게도, 개발을 하면서 QA의 중요성을 더 느꼈습니다. 제가 만든 서비스를 테스트해주는 QA가 있었다면 얼마나 좋았을까요?


이제 다시 QA 엔지니어로 돌아가서 일할 때, 개발자의 입장을 이해하면서도 품질을 타협하지 않는 균형을 잡을 수 있을 것 같습니다.

무엇보다 "이 버그는 이렇게 고치면 될 것 같은데요?"라고 제안할 수 있게 된 것이 가장 큰 성장이 아닐까 싶네요!

keyword
이전 13화모니터링과 에러 추적