이걸 보고 이상하다고 생각이 안들었어?
AI가 써준 코드 그대로 쓰면 너를 쓸 이유가 없지
들어가며
이 글은 반성문에 가깝다.
이걸 기술 블로그에 올릴까 하기엔 회고에 가깝기 때문에 게시판.. 착각 아닙니다..ㅠ
AI가 짜준 코드를 제대로 검수하지도 않고, 일단 보긴 했는데로 합리화하며 코드 한줄한줄에 의문을 가지지 않고,,,
꼼꼼하지 못한 채 머지를 하려다가 코드 리뷰에서 대차게 까인 신입사원 1의 회고에 가깝다.
일단 화면이 잘 돌아가니까, 그리고 문법에서 오류도 없었는데?

문제인 것 같아?
// file.ejs
// html이 있어요
<script>
var serviceId = <%= user.serviceId %>;
var userName = "<%= user.name %>";
</script>
해당 파일은 ejs 파일로 전 포스팅을 알겠지만 정말 얕게 알게 된 지식으로 코드 수정을 했어야 했다.
지식이 얕을수록 대답하지 못하게 될 질문을 대비해 좀 더 꼼꼼하게 코드를 봤어야 하는 것을..
아무튼 화면 ok, 기능 ok, 이해 안되는 코드? 없음
그래서 코드 머지 요청을 보냈는데,,~
당연하지 않음
그렇다.
script 안은 자바스크립트의 영역인데, 자바스크립트에서 <% 문법을 쓴 걸 본 적 있는가?
ejs의 문법을 자바스크립트에서 쓸 수 있는가?
라는 궁금증이 왜 생기지 않았는지........ ㄹㅇ 자바스크립트랑 친해야하는 직무인데도 아무런 생각을 해본 적이 없음
ㅔ.. 그래서 이게 왜 되는지도, 어떤 방법으로 되는지도, 정확한 이유도 모르는 상태로 그냥 낸거다 ㅋㅋ;;
그래서 동작이 됐다고?
ㅇㅇ; 동작은 되니까 내긴 했는데,.. 진짜 왜 되냐?
일단 ejs가 템플릿 엔진이기 때문에 파일 내부 어디에서 써도 사실 문제는 없었다.
그렇다, 서버 사이드 템플릿 엔진이라는 기다란 설명이 있지만 결론적으로
'브라우저 실행이 아니라 서버에서 먼저 HTML'로 만들기 때문에 ...
뭐라는지 모르겠지?
저도 반만 이해했어요 ㄱㅊㄱㅊ
// 코드
<script>
var serviceId = <%= user.serviceId %>;
var userName = "<%= user.name %>";
</script>
// 브라우저 전달 코드
<script>
var serviceId = 123;
var userName = "ming0o";
</script>
그래서 완전 >>비추<<하는 위험한 녀석이었던거임.
EJS -> HTML -> 브라우저 실행 순서기 때문에 동작에는 문제가 없는데 만약 저기서 하드코딩으로 잘못된 무언가가 들어가는 순간
៖...
잘 알지도 못하고 문제도 못 캐치하고 (ㅠㅠ)
그래서?
문제는 동작 여부가 아니라 코드의 이해도다.
이 코드가
- 왜 동작하는지
- 어디에서 처리되는지, 어디서 받아오는건지? (콘솔로 찍어본다던가)
- 어떤 순서로 렌더링이 되는지
전혀 모르는 상태에서 코드를 머지하려고 했으니 영문도 모른 채 팀장님은 당황하셨을 수밖에..
지금 생각해봐도 리뷰어 입장에서는 당연히 의문이 들 수밖에 없다
되는 거 맞아? 이거 이상한데?
뭐야 모른다고? 이 새끼 이거 걍 ai만 썼지 코드 이해 안하고 남발했네;?
만약 내가 여쭤보셨을 때 대답을
'이게 템플릿 엔진이라 된다, 콘솔 찍어보고 교차 검증 했다.'
하고 설명을 잘하는 타입은 아니지만 그래도 이 코드에 대해 같이 물음표가 생겨서 검증해봤다 정도까지 가도 괜찮았을 것 같다 ㅎㅎ;;
앞으로는,,
ai가 코드를 말아주는 시대가 되었지만 ㅋㅋ
코드를 이해하고 온전히 활용하는 건 나의 몫이다.
화면이 잘 돌아간다는 이유로 넘겼으면 (이 이슈를 걍 모르고 다시 공부할 생각도 안했다면)
언젠가 더 큰 문제로 돌아올 가능성이 크다.
그래서 앞으로는 최소한 다음 질문에는 답할 수 있어야 하는 정도로 매번 이해를 해야할 것 같다.
이해를 도와주는 데 ai를 활용하는 거야 절대 잘못된 일이 아니기 때문에...
- 이 코드는 어디에서 실행되는가
- 언제 실행되는가
- 어디서 참조를 받아왔는가/해주는가
- 이게 최선인가? 다른 방법이 있지 않을까?
코드에 책임을 진다는 게 얼마나 무겁게 다가오는지 체감할 수 있었던 시간이다.
멘탈 나가고 좀 많이 부끄럽기도 했는데, 절대 다신 이런 일이 생기면 안되겠다~ 하고 느꼈던 사건이다.
(리팩토링과 보안의 중요..성.. 내 눈앞에 지나가는 몇 프로젝트들..)
멘탈 지켜잇~~!!