
그때는 맞고 지금은 틀리다 - 변하는 진리 속에서 살아남는 법
"그때는 맞고, 지금은 틀리다."
이 말은 가장 좋아하는 말이며 믿고 있는 말이다.
혹시 과거의 내가 내린 선택, 지금 다시 보면 후회될 때가 있지 않은가?
이전에는 최고의 해결책이라 믿었는데, 지금은 비효율적이라고 느껴본 적이 있는가?
왜 우리는 과거의 나를 부정하는 순간을 맞이하게 될까?
이런 경험은 비단 인생에서만 벌어지는 일이 아니다.
코드를 짜면서도, 개발자로 성장하면서도, 우리는 끊임없이 변하는 세상과 마주하게 된다.
오랫동안 이 질문에 대한 답을 고민해왔다.
그리고 한 가지 깨달음을 얻었다.
“정답은 없다. 다만, 그 순간에 맞는 최선의 선택이 있을 뿐이다.”
과거에는 옳았던 선택이 지금은 최악의 실수가 될 수도 있고,
과거에는 쓸모없어 보였던 것이 지금은 가장 가치 있는 지혜가 될 수도 있다.
시간이 지나면서 사람은 변하고, 환경은 변하며, 상황은 달라진다.
개발에서도, 삶에서도 우리는 변화하는 환경 속에서 유연하게 판단하는 법을 배워야 한다.
정답은 없다, 다만 맥락이 있을 뿐
개발을 하거나 개발 지식을 공유하는 자리에서 자주 듣는 말이 있다.
“이 방법이 가장 좋은 방법이야.”, “이렇게 해야 제대로 된 코드야.”, “이게 정답이지.”
이런 말을 들을 때마다 문득 생각하게 된다.
“정말 언제나 그런 걸까?”
개발에서 하나의 정답이 항상 존재할까?
아니면 “상황에 따라 최선의 선택이 달라질 수 있는 걸까?”
경험을 쌓을수록 절대적인 정답보다는 각 상황에 맞는 최선의 방법이 존재한다는 걸 깨닫게 된다.
기술의 선택도, 설계 방식도, 코딩 스타일도 모두 맥락에 따라 달라질 수 있다.
따라서 중요한 것은 무조건적인 정답을 찾기보다, 주어진 상황에서 최선의 선택을 하는 것이다.
과거의 나를 부정할 수 있어야 성장한다
개발자로서 성장하면서 가장 크게 배운 것은,
과거의 내가 내린 선택을 부정할 수 있어야 한다는 것이다.
처음 리액트를 접했을 때, 나는 상태관리가 필수라고 생각했다.
“상태 관리는 역시 Redux, Recoil로 해야지”
이게 당연한 줄로만 알았다.
하지만 시간이 지나면서,
프로젝트의 규모와 필요에 따라 다양한 대안이 가능하고 필수가 아니라는 걸 깨달았다.
(Recoil의 경우 업데이트 중단되었다)
만약 내가 지금도 그 생각을 유지하면서
무조건적으로 과거의 내 선택을 고집했다면, 지금까지도 개발이 중단된 라이브러리를 사용하고 있었을지도 모른다.
극단적인 예시처럼 보일 수 있지만, 사실 이러한 일은 우리 주변에서 흔히 일어난다.
"난 항상 이렇게 해왔어." 라는 말로 새로운 시도를 거부하거나,
익숙한 도구만 고집하는 개발자들도 분명히 존재하니까.
좋은 코드는 절대적인 것이 아니다
많은 사람들이 “좋은 코드”를 이야기할 때 가장 먼저 떠올리는 것은 “가독성이 좋은 코드” 다.
하지만 여기서도 똑같은 질문을 던질 수 있다.
“좋은 코드란 무엇인가?”
가독성이 좋은 코드가 정말 언제나 최고의 코드일까?
10년 차 개발자가 작성한 코드가 초보 개발자가 보기에 읽기 쉬운 코드일까?
동일한 기능을 하는 코드가 성능을 희생하더라도 가독성이 좋아야 하는가?
때로는 유지보수가 쉬운 코드가 좋은 코드일 수도 있고,
때로는 성능을 극한까지 끌어올린 코드가 최선일 수도 있다.
혹은 아주 단순한 해결법이 최선일 수도 있다.
“그때는 맞고, 지금은 틀리다.”
코드는 언제나 정답이 아니라, 맥락에 따라 최선의 선택이 다를 뿐이다.
변화를 두려워하지 않는 사람이 강하다
많은 개발자들이 새로운 기술을 받아들이는 것에 거부감을 느낀다.
한 기술이 익숙해지면, 그 기술이 마치 절대적인 것처럼 느껴지기 때문이다.
하지만 기술은 변한다.
패러다임은 바뀐다.
과거에는 서버 사이드 렌더링이 기본이었다가, 클라이언트 렌더링이 대세가 되었고,
이제는 다시 Next.js같은 프레임워크가 서버 사이드 렌더링을 다시 가져오고 있다.
우리는 절대적인 ‘정답’을 찾는 것이 아니라 변화를 수용하는 법을 배워야 한다.
그때는 맞았어도, 지금은 다를 수 있다는 것을 받아들일 수 있어야 한다.
나만의 기준을 만드는 것이 중요하다
그렇다면 우리는 어떻게 해야 할까?
정답이 없다고 하면, 우리는 무엇을 기준으로 판단해야 할까?
결국 중요한 것은 나만의 기준을 세우는 것이다.
그 기준은 시대에 따라 바뀔 수도 있고, 경험에 따라 변화할 수도 있다.
하지만 중요한 것은 맹목적으로 남이 하는 대로 따라가는 것이 아니라, 스스로 판단하는 능력을 기르는 것이다.
새로운 기술을 볼 때, “이게 정말 필요한가?“ 를 먼저 생각하기
새로운 코드 스타일을 적용할 때, “이게 우리 프로젝트에서 최선인가?” 고민하기
내 선택이 과거와 달라졌을 때, “지금은 이게 최선” 이라는 자신감을 가지기
이것이 바로 “그때는 맞고, 지금은 틀리다” 라는 철학이 나에게 의미하는 바다.
변화를 받아들이는 용기
과거의 내가 맞았다고 해서, 지금도 맞으리라는 보장은 없다.
과거의 내가 틀렸다고 해서, 지금도 틀리리라는 보장도 없다.
개발자로서, 그리고 한 사람으로서 중요한 것은
“변화를 두려워하지 않는 것” 이다.
과거의 나와 지금의 내가 다르다고 해서 부끄러워할 필요는 없다.
오히려 그것이 성장의 증거다.
나는 앞으로도 수없이 많은 선택을 할 것이고,
오늘의 선택이 1년 후에도 맞을지 아닐지는 알 수 없다.
하지만 분명한 것은, 그때의 나는 지금보다 더 나은 기준을 가지고 있을 것이라는 사실이다.
그러니 변화하자.
그리고 스스로 판단하는 힘을 기르자.
그때는 맞고, 지금은 틀리다.
그리고 앞으로도 계속 변해갈 것이다.