최근 SAP의 '소프트웨어 엔지니어(CI/CD Application)' 인턴 직무에 지원해서 서류부터 최종 HR 면접까지 진행했는데, 아쉽게도 최종 탈락했습니다. 기대가 컸던 만큼 정말 아쉬웠지만, 탈락 원인을 분석하고 다음 스텝을 준비하기 위해 회고를 남겨보려고 합니다.
1. 면접 과정 요약
- Phone Screening: JD 기반 인터뷰, CI/CD 역할과 목표에 대한 이해도를 확인 - PT + 기술 면접: '금융 챗봇' 프로젝트를 영어로 발표, Frontend 질문은 무난했지만 Python/AI 심화 질문에서 일부 부족함 - HR 면접: 다대일 인터뷰였고 커뮤니케이션은 원활했지만 최종 결과는 불합격
2. 탈락 원인 분석 (제 나름의 가설)
- 가설 1: Application 기술 깊이 부족 — CI/CD 엔지니어는 결국 배포 대상 애플리케이션을 이해해야 하는데, Python/AI 관련 원리나 트레이드오프 설명이 미흡했을 수 있습니다. - 가설 2: DevOps 관점 연결 부족 — "Dockerize → CI(테스트/빌드 자동화) → CD(안정 배포)"로 이어지는 관점에서 제 프로젝트를 설명하지 못했습니다. - 가설 3: 상대적 경쟁력 — 다른 지원자들과 비교했을 때 CI/CD 직접 경험의 빈도나 깊이가 부족했을 가능성이 있습니다.
3. 앞으로의 계획
- Python & AI Fundamentals 보강: 내부 동작 원리와 아키텍처 수준까지 이해해서 기술 깊이를 확보하려고 합니다. - DevOps 관점 회고 습관화: 토이 프로젝트라도 Dockerfile, GitHub Actions 워크플로우로 E2E 파이프라인을 설계하고 문서화하는 습관을 들이겠습니다.
이번 경험은 제가 부족한 점을 명확히 보여준 소중한 데이터 포인트였습니다. 이를 기반으로 더 나은 엔지니어로 성장해보겠습니다.
4. 테스트 코드 블록
다음은 CI/CD 파이프라인 예시입니다:
import pandas as pd import numpy as np # 데이터 로드 data = pd.read_csv('data.csv') # 전처리 processed_data = data.dropna() # 모델 학습 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(n_estimators=100) model.fit(processed_data[['feature1', 'feature2']], processed_data['target']) # 예측 predictions = model.predict(test_data) print(f"Accuracy: {model.score(X_test, y_test):.2f}")
// React 컴포넌트 예시 import React, { useState, useEffect } from 'react'; const DataVisualization = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { fetch('/api/data') .then(response => response.json()) .then(data => { setData(data); setLoading(false); }); }, []); if (loading) return <div>Loading...</div>; return ( <div className="chart-container"> {data.map(item => ( <div key={item.id} className="chart-item"> {item.name}: {item.value} </div> ))} </div> ); }; export default DataVisualization;