개발자에서 문제 해결자로
소개 및 배경
오랜 시간 개발자로 일해왔지만, 어느 순간 문득 “나는 도대체 무엇을 하고 싶은 걸까?”라는 질문 앞에서 막막함을 느꼈습니다.
그러던 중 CTO 스쿨 1주차 수업에서 “작은 불편함 하나라도 개선해보자”는 이야기를 들었고, 그 말에 용기를 얻어 주변을 돌아보게 되었죠. 그런데 정작 제가 느끼는 불편함은 대부분 개발 업무와 관련된 것들이라, ‘작은’ 수준을 넘는 것들이었습니다.
그래서 더 가까운 문제를 찾게 되었어요. 바로 영어 선생님인 아내가 수업 준비 중 겪는 불편함이었습니다. 이건 내가 도와줄 수 있겠다 싶었고, 그 문제를 해결해보기 위해 ChatGPT와의 대화를 시작했습니다.
시도 과정은 이랬어요:
프롬프트 만들기 v2 와의 주요 대화:
gpt: **요즘 일상에서 가장 자주 겪는 "불편함"이나 "짜증나는 순간"은 어떤 때인가요?**
(예: 뭔가를 자주 잊어버린다, 반복적인 업무가 지겹다, 도구나 앱이 불편하다 등)
답변해 주시면, 그걸 바탕으로 다음 질문을 드리겠습니다. 이 과정을 반복하여 핵심 문제를 찾아낼게요.
입력 : 나는 영어선생님이야, 학생들에게 자기가 원하는 책을 골라서 3페이지 정도 읽으면서 녹음한 걸 mp3로 숙제로 제출받고 있는데, 그 파일들을 하나 하나 듣고, 잘 읽었는지 확인하려면 시간이 너무 많이 걸려. 때로는 학생들이 이전에 제출했던 mp3를 제출하는 경우도 있는데, 이런 경우에는 듣기 전에 걸러내고 싶기도 해
gpt : **학생들의 MP3 낭독 숙제를 확인할 때, 당신이 “잘 읽었는지” 판단하는 주요 기준은 어떤 요소인가요?** (예: 발음 정확성, 억양, 문장 단위의 끊어 읽기, 읽는 속도 등)
이 기준을 알아야 자동화나 도구화 방향을 제시할 수 있어요. 답변해 주시면 다음 단계로 넘어갈게요!
입력: 전체 문장을 다 읽었는지 여부, 단어마다의 발음 정확도, 문장 읽기 시 인토네이션을 살펴보고 싶어.
gpt : **학생들의 낭독 대상이 되는 "책의 내용(텍스트)"은, 교사가 알고 있는 상태인가요?**
예: 학생이 어떤 책의 어느 페이지를 읽었는지 따로 적어서 제출하나요?
또는 학생이 뭘 읽었는지 모른 상태에서 MP3만 받나요?
이 질문에 대한 답에 따라 “기계가 얼마나 정확히 비교할 수 있는지”의 기준이 달라져요.
입력 : 학생들이 자기가 원하는 책을 읽기 때문에 어떤 책을 읽었는지는 몰라. 그래서, 앞으로는 읽은 부분의 텍스트를 사진으로 찍어서 보내달라고 할꺼야. 사진에서 텍스트를 추출해서 사용했으면 해.
입력 : 이미지에서 텍스트 추출하는 단계는 반드시 넣어줘.
입력 : 기술스택에는 Spring, Java, Vue.js, mariadb 이 포함되었으면 해.
완성된 프롬프트
<Instructions>
학생들이 제출한 MP3 낭독 숙제를 자동으로 검토하기 위한 시스템을 설계하고, Spring(Java), Vue.js, MariaDB 기반의 MVP 구조를 설명하거나 필요한 초기 코드를 제안하세요. 다음 기능이 필수적으로 포함되어야 합니다:
1. 학생이 제출한 **이미지에서 텍스트를 추출**합니다 (OCR 기능 필수).
2. 제출된 **MP3 음성 파일**을 분석하여, 학생이 해당 텍스트를 **정확하게 읽었는지** 판단합니다.
3. **발음 정확도**, **문장 인토네이션**, **전체 문장 낭독 여부**를 평가 기준으로 삼습니다.
4. 이전 제출 음성과의 **유사성 비교**를 통해 중복 제출 여부를 판단합니다.
5. 백엔드는 **Spring(Java)**, 프론트엔드는 **Vue.js**, 데이터 저장은 **MariaDB**를 사용합니다.
GPT의 최종 응답은 반드시 **한글로** 작성되어야 합니다.
</Instructions>
<Persona>
AI 기반 영어 낭독 평가 시스템을 구축하는 Java & Spring 전문가
</Persona>
<Role>
당신은 Spring(Java) 기반의 영어교육 자동화 시스템을 설계하는 개발자입니다. 목표는 교사의 수작업을 줄이고, 학생의 낭독 과제를 자동으로 분석·평가하는 MVP를 설계하는 것입니다. 다음 역할을 수행합니다:
- OCR 처리를 위한 외부 서비스 연동 또는 Java 라이브러리(Tesseract 등) 활용 방안 제시
- MP3 → 음성 인식 처리 (Google Speech-to-Text API, Whisper API 등 연동 제안 포함)
- 인식된 텍스트와 OCR 텍스트 비교 → 평가 로직 (예: 유사도, 정확도 계산)
- 음성 유사도 분석을 위한 기법(예: MFCC + 벡터 유사도)을 설명하고, Java에서 가능한 방법 또는 외부 연동 방식 제시
- 프론트(Vue.js)와 연계되는 전체 흐름 또는 REST API 예시도 포함 가능
</Role>
<examples>
사용자 입력 예시:
"학생이 읽은 책 사진이랑 MP3가 올라왔는데, 얼마나 정확하게 읽었는지 분석해주는 시스템을 만들고 싶어요. 기술 스택은 Spring, Vue.js, MariaDB입니다."
GPT 출력 예시:
"1. 사용자가 업로드한 이미지 파일은 서버에서 Tesseract OCR로 텍스트를 추출합니다.
2. MP3는 Whisper API를 통해 텍스트로 변환한 뒤, OCR 결과와 Levenshtein Distance로 비교합니다.
3. 발음 정확도는 Google Speech-to-Text의 단어 confidence를 활용하거나, 외부 API 결과를 활용할 수 있습니다.
4. MP3 간 유사도 비교는 openSMILE을 통해 feature vector를 추출하고, 유사도 점수로 중복 여부를 확인합니다.
5. 이 모든 기능은 Spring 기반 REST API로 제공되며, Vue.js에서 결과를 시각화합니다."
</examples>
<Chain of Thought>
1. 사용자의 역할과 문제 상황(학생 음성 숙제를 수동으로 검토해야 함)을 이해합니다.
2. 핵심 자동화 요구사항(OCR, 음성 평가, 중복 확인)을 기능적으로 분해합니다.
3. 기술 스택(Spring, Java, Vue.js, MariaDB)에 맞는 구조로 솔루션을 설계합니다.
4. 가능한 경우 각 기능별 외부 API나 라이브러리 활용 방안을 함께 제시합니다.
5. 시스템 구조도 또는 REST API 예시, DB 테이블 예시, 프론트 연동 방식 등을 포함할 수 있도록 유도합니다.
6. GPT는 반드시 **한글로만** 답변해야 합니다.
</Chain of Thought>
ChatGPT4.5 와의 주요 대화:
프롬프트 만들기 v2를 이용해서 완성된 프롬프트를 4.5에 입력했더니 기술적인 내용이 많아졌습니다. 그래서, 조금 튜닝(?)을 해 나갔습니다.
입력 : 기술적인 내용전에, MVP 시나리오적으로 더 보강해야 할 건 없을까?
입력 : 보강된 시나리오를 바탕으로 주요 기능을 상세화 더 상세화해줘.
입력 : 위 작업을 진행할 때, 자동화 기능을 더 추가해 보고 싶어, 예를 들어 학생이 제출하는 mp3 파일과 사진 이미지가 학생의 구글 드라이브에 있다고 가정했을 때 n8n을 이용해서 사진과 mp3를 가져올 수 있을까? 자동평가 및 중복 감지가 되었을 때, 학생들의 메일 및 카카오톡으로 알림을 주고 싶어. 이것도 n8n으로 자동화 가능할까? 자동화 가능한 부분이 있다면 더 상세히 기능 명세를 만들어 줘
입력 : 숙제 제출은 구글드라이브에 업로드 외 mvp 제품에 수동으로 제출할 수 있도록 시나리오를 잡아줘
입력 : 학생, mvp, n8n, 선생님을 액터로 했을 때 상세 흐름도 작성해 줘
입력 : MVP인 "영어 낭독 평가 시스템"의 최종 시나리오를 최종적으로 정리해 줘.
최종 도출된 MVP : 영어 낭독 평가 시스템
다음은 『영어 낭독 평가 시스템』 MVP의 전체 과정을 명확히 나타낸 최종 사용자 시나리오입니다.
🎯『영어 낭독 평가 시스템』 최종 MVP 시나리오
🌱 1. 숙제 제출 단계
학생의 숙제 제출 방식은 두 가지입니다.
방식 1: 자동 제출 (구글 드라이브 이용)
학생이 개인 구글 드라이브의 지정된 폴더에 숙제(책 이미지, MP3)를 업로드하면,
n8n 자동화 워크플로우가 이를 자동으로 감지하고 MVP 시스템(Spring API)으로 파일을 전송합니다.방식 2: 수동 제출 (MVP 웹앱 직접 제출)
학생은 MVP 웹앱(Vue.js)에 접속하여 직접 숙제 제목과 파일(책 이미지, MP3)을 업로드합니다.
제출 완료 후, 학생은 즉시 이메일 및 카카오톡으로 숙제 제출 확인 알림을 받습니다.
⚙️ 2. 자동 평가 단계
MVP 시스템(Spring 기반)은 학생이 제출한 파일을 자동으로 평가합니다.
OCR 처리
책 페이지 이미지에서 텍스트 추출 (Tesseract OCR 활용)
음성 인식
MP3 음성 파일에서 텍스트로 변환 (Whisper API or Google Speech-to-Text API 활용)
낭독 정확성 평가
OCR 추출 텍스트와 음성 인식 텍스트를 비교하여 정확도를 점수로 산출 (Levenshtein Distance)
발음 정확도 평가
음성 인식 시 제공되는 confidence 점수를 기준으로 발음 정확도 점수를 산출
문장 인토네이션 평가
음성 분석(openSMILE, Praat 등 활용)을 통해 자연스러운 억양과의 유사성 점수를 산출
🔍 3. 중복 제 출 감지 단계
MVP 시스템은 음성 파일의 특징 벡터(MFCC)를 추출하고, 과거 제출된 음성 파일과 코사인 유사도를 계산하여 중복 여부를 자동으로 판단합니다.
중복 제출로 판단될 경우 학생과 선생님에게 즉시 이메일과 카카오톡으로 경고 알림을 전송합니다.
📩 4. 자동 평가 완료 및 알림 단계
평가 완료 시, 평가 결과(정확도, 발음, 인토네이션 점수)를 MVP 시스템에서 n8n으로 전송합니다.
n8n은 학생에게 평가 완료 알림을 이메일과 카카오톡으로 즉시 발송합니다.
알림 예시
이메일:
제목: [낭독 숙제 평가 완료 📚] 안녕하세요, [학생 이름]님! 숙 제 "[숙제 제목]" 평가 결과입니다. - 텍스트 정확도: 94% - 발음 정확도: 90% - 인토네이션 점수: 85% 피드백: - "단어 'practice'의 발음에 주의하세요." - "문장 끝에서 인토네이션을 좀 더 강조해 보세요." 상세 결과는 MVP 웹앱에서 확인하세요.
카카오톡:
[평가 완료 🎉] "[숙제 제목]" 숙제 평가 완료! 정확도: 94%, 발음: 90%, 인토네이션: 85% 자세한 결과는 MVP 웹앱에서 확인하세요.
📝 5. 평가 결과 확인 및 피드백 단계
학생은 MVP 웹앱에서 개인 대시보드를 통해 상세 평가 결과와 자동 생성된 피드백을 즉시 확인합니다.
선생님은 전체 학생의 평가 결과를 실시간으로 확인할 수 있으며, 시스템 평가를 바탕으로 추가적인 수동 피드백을 제공할 수 있습니다.
🚨 6. 평가 결과 재검토 요청 단계
학생이 평가 결과에 의문이나 이의가 있을 때는 MVP 웹앱을 통해 선생님에게 재검토를 요청할 수 있습니다.
재검토 요청이 접수되면 선생님은 즉시 이메일과 카카오톡으로 알림을 받습니다.
선생님은 평가 결과를 확인하고 필요에 따라 평가 점수를 수동으로 조정한 후, 학생에게 최종 피드백과 결과를 다시 전달합니다.
📈 7. 학습 이력 관리 및 학습 분석 단계
학생은 MVP 웹앱에서 개인화된 학습 이력과 점수 변화 추이를 확인하고, 본인의 학습 방향을 스스로 점검하고 개선합니다.
선생님은 학생들의 학습 이력과 평가 추이를 분석하여 맞춤형 학습 지도 계획을 수립하고 실행합니다.
🎯 상세 흐름도 (학생, MVP, n8n, 선생님 액터)
단계
학생 (Student)
MVP (Spring+Vue.js)
n8n 자동화
선생님 (Teacher)
① 숙제 제출
- 숙제 사진과 MP3 파일을 구글 드라이브 폴더 업로드
- 또는 MVP 웹앱에서 직접 업로드
- 웹앱 업로드 파일 수신 및 저장
- 구글 드라이브에서 파일을 감지하여 MVP 서버로 전송 (자동제출 처리)
- 학생 숙제 제출 현황을 실시간으로 확인
② 제출 확인 알림
- 숙제 제출 완료 알림 수신(이메일, 카톡)
- 제출 완료 후 n8n Webhook 호출하여 알림 요청
- 제출 완료 시 즉시 이메일 및 카카오톡 알림 발송 처리
- (필요 시) 미제출 학생을 확인하여 별도 독려 메시지 전달 가능
③ OCR 및 음성 자동 평가
- (대기)
- 제출된 이미지 OCR로 텍스트 변환
- MP3 파일 음성→텍스트 변환
- OCR 결과와 음성 텍스트 비교하여 정확도 평가, 발음 점수 및 인토네이션 평가 수행
- (대기)
- (대기)
④ 중복 제출 여부 분석
- (대기)
- 음성 파일 분석 후 이전 제출 음성과 MFCC 벡터 유사도 기반 중복 여부 확인
- (대기)
- 중복 여부를 실시간으로 확인하여 부정행위 탐지
⑤ 자동 평가 완료 알림
- 평가 결과 알림을 이메일, 카카오톡으로 수신
- 평가 완료 후 n8n으로 평가 결과 전송(Webhook 호출)
- 평가 완료 결과를 이메일 및 카카오톡으로 즉시 발송 처리
- 학생별 평가 완료 상황을 웹 대시보드에서 확인
⑥ 평가 결과 확인 및 피드백 제공
- MVP 웹앱에서 상세 평가 결과 및 자동 피드백 확인
- 평가 결과 및 피드백 데이터를 웹앱을 통해 제공
- (대기)
- 자동 평가 결과 검토 후 추가 수동 피드백 제공 가능
⑦ 평가 결과 재검토 요청
- 평가 결과에 의문 시 MVP 웹앱에서 선생님에게 재검토 요청 제출
- 재검토 요청을 접수하여 선생님에게 전달
- 재검토 요청 접수 시 이메일 및 카카오톡 즉시 알림 처리
- 재검토 요청 접수 후 평가 내용을 확인 및 수동 수정 후 최종 결과 전달
⑧ 학습 이력 분석 및 관리
- MVP 웹앱에서 평가 이력 및 학습 추이를 확인하여 자기주도 학습 수행
- 학생별 평가 데이터를 관리하여 학습 이력 및 학습 추이 정보 제공
- 정기적으로 학습 진행 현황을 종합하여 알림 및 리포트를 자동 발송
- 학생들의 학습 진행 상황 분석 후 맞춤형 지도를 계획하고 제공
🚩 최종 사용자 시나리오 액터별 역할 요약
액터
역할 및 주요 작업
🎓 학생
숙제 제출(자동 또는 수동), 평가 결과 및 피드백 확인, 평가 재검토 요청, 학습 이력 관리
💻 MVP 시스템(Spring + Vue.js)
숙제 처리 및 평가 자동화, 평가 결과 관리, 학생 및 선생님 대시보드 관리
🔄 n8n 자동화
자동 제출 파일 전송(구글 드라이브), 평가 완료 시 자동 알림 발송(이메일, 카카오톡), 재검토 요청 및 중복 감지 알림
👩🏫 선생님
숙제 제출 및 평가 현황 확인, 평가 재검토 요청 처리, 추가 수동 피드백 제공, 학습 분석 및 맞춤형 학습 지도
이 최종 시나리오를 통해 MVP 『영어 낭독 평가 시스템』이 학생과 선생님 모두에게 실질적인 편리함과 교육적 가치를 제공하고, 학습 효율성과 정확성을 크게 개선할 수 있습니다.
================================
결과와 배운 점
👨💻 개발자로서 저는 자주 시간 부족을 핑게로 설계보다는 바로 코딩부터 하는 습관이 있었는데, 이번 경험을 통해 문제를 정의하고, 사고의 흐름을 설계하는 것을 AI에게 위임하여 도움받는 것이 엄청 효율적이라는걸 새삼 느꼈습니다.
ChatGPT는 단순히 답을 주는 게 아니라, 내가 깊이 생각하지 못한 지점까지 끌어내주는 동료 같았어요.
놓칠 수 있는 부분을 알려주 어 도움이 많이 되었습니다.
ToDo
시나리오 중 상세흐름도에서, 개발에 익숙하지 않은 부분부터 AI의 도움을 받아 하나 하나씩 만들어 나가기
================================
읽어주셔서 감사합니다.