아아, 드디어 깨닫습니다 개발자님들
자바스크립트를 배운 지는 거의 3년이 되었다.
그 사이 계절은 열두 번이나 바뀌었고,
자바스크립트를 공부하기 위해 사두었던 책은 흔적도 없이 사라졌다.
아무리 책장을 뒤져봐도 예전의 책은 보이지 않는다.
마치 처음부터 없었던 것처럼.
그런데 문제는 이게 무슨 뜻인지 모르겠다는 거다.
어쩌면 책을 보면서 공부하는 것이 문제일 수 있겠다고 생각했다.
책을 읽는 것이 귀찮기도 했고, 책의 지시를 따라가는 과정이 지루해서 공부가 잘 되지 않았던 것 같았다.
책을 보지 않고 어떻게 코딩을 공부할 지 딱히 계획은 없었지만, 오른쪽에는 ChatGPT, 왼쪽에는 VSCode 화면을 띄워보았다.
그리고 ChatGPT한테 미션을 하나 달라고 부탁했다.
let userName = "민수";
let userAge = 19;
if (userAge >= 20) {
console.log("성인입니다. 환영합니다, " + userName + "님!");
} else {
console.log("미성년자입니다. 조금 더 크고 오세요, " + userName + "님!");
}
let userName = "민수";
let birthMonth = 8; // 생일 (월)
let birthDay = 15; // 생일 (일)
let today = new Date();
let currentMonth = today.getMonth() + 1; // 현재 월 (0부터 시작하므로 +1)
let currentDay = today.getDate(); // 현재 일
// 생일까지 남은 일수 계산
let daysLeft = (birthMonth - currentMonth) * 30 + (birthDay - currentDay);
if (daysLeft < 0) {
console.log("이미 생일이 지났어요! 🎉");
} else if (daysLeft === 0) {
console.log("🎂 오늘은 생일입니다! 축하합니다, " + userName + "님! 🎉");
} else {
console.log(userName + "님의 생일까지 " + daysLeft + "일 남았습니다!");
for (let i = daysLeft; i > 0; i--) {
console.log("생일까지 " + i + "일 남음...");
}
}
드디어 이해가 안되는 코드를 만났다.
이제 스스로 이해가 될 때까지 질문공세를 하기로 했다.
다 짜놓은 코드를, 하나씩 풀어가기 시작했다.
이 코드부터 내 지식이 완전히 막혔다.
내 생일을 넣어본 값이랑, 실제로 네이버에서 검색한 값이랑 완전히 달랐기 때문이다.
이런 식으로 계산이 맞는 건지, 제대로 이해한 건지 전혀 감이 잡히지 않았다.
혼자 머리를 싸매다가, 답지에게 물어봤다.
답지가 나한테 알려줬다.

약간의 배신감을 느꼈다.
코딩은 완벽하게 값을 도출하려고 만드는 거 아닌가?
왜 대체 “대략적인 계산”이라는 단어를 ChatGPT가 감히 써도 되는 걸까?
내가 생각했던 코딩의 철학이 완전히 깨진 느낌이었다.
정확하게 계산해야 한다는 믿음이 있었기 때문이다.
한 번 코드를 보고 나면 그 코드에 담긴 의도나 논리를 끊임없이 파악하려고 애쓰게 된다.
그런데 그 의도가 "대략적인 계산"으로 되어 있다는 사실을 깨닫는 순간 허무한 감정이 여운으로 남았다.
이제 내 낡고 노화된 지식이 빛을 바랄 때가 온 것 같다.
나는 ChatGPT가 알려준 방식에서 틀을 벗어나기로 했다.
그저 “대략적인 계산”에 의존하지 않기로 마음먹었다. 그래서 새로운 방식으로 접근했다.
//각 날짜 (2월 윤달은 신경안씀)
let yearmonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
각 월에 해당하는 일수를 배열로 적었다. 정확한 일수를 바탕으로 계산을 해보고 싶었다.
이런 점이 코딩의 묘미가 아닐까?
정작 일을 벌려 놓고 진행을 못하고 있다.
생각을 글로 풀어내면 답이 나올 것 같아서 글로 방향성을 잡기로 했다.
저 배열을 활용해서 월과 일을 구분해서 계산하기로 했다.
1. 현재 월 = 생일 월
- 남은 일수는 생일에서 오늘 날짜를 빼는 방식으로 계산한다.
- 생일이 이번 달이라면, 오늘부터 생일까지 남은 일수를 계산한다.
2. 현재 월 != 생일 월
- 이번 달의 남은 일수를 계산하고,
- 현재 월에서 생일 월까지의 월 수를 더한 뒤,
- 마지막으로 생일 월의 일수를 더해서 남은 일수를 계산한다.
머릿속으로는 계산하는 방법이 떠올랐지만, 코드를 어떻게 구현해야 할지 걱정은 여전히 있었다.
하지만 단순히 책을 따라서 작성했다면, 이렇게 고민하는 경험을 하지 못했을 것이다.
책을 보며 따라하지 않고 스스로 생각하면서 했기에, 덜 지루하게 느꼈던 하루였다.
let username = "콰르텟";
let birthmonth = ;
let birthday = ;
//현재 날짜
let today = new Date();
let currentday = today.getDate();
let currentmonth = today.getMonth();
//각 날짜 (2월 윤달은 신경안씀)
let yearmonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];