학교 강의나 입문 강의를 자주 하다 보니 개발을 시작하는 분들의 코드를 자주 본다.
구글링하여 나온 포스팅들을 볼 때도 문제를 해결하기 위한 방안이 정리되어 있는데, 사실상 정리가 아닌 포스팅이 꽤 많다.
당연히 모든 분이 그렇다는 것은 아니고, 일부에 대한 이야기이다.
이번 포스팅의 제목에 ”느낌적인 느낌“이 들어간 이유는, 정말로 그렇게 생각하고 프로그래밍 또는 정리한다는 생각이 들어서이다.
프로그래밍에 입문하는 사람들은 대개 짧은 시간에 많은 내용을 학습하게 된다.
가령, 현재 진행하고 있는 프로그래밍 기초도 8시간씩 3일 동안 진행된다.
12시간은 문법에 대한 학습이 주를 이루고, 나머지 12시간은 간단한 프로젝트를 여러 개 풀어보면서 응용을 연습한다.
그러다 보니, 배운 내용이 섞인다.
많은 강사나 교수님들은 강의 중에 사용하는 용어나 문법 예시에 대해서 매우 명확하게 전달하려고 노력할 것이다.
나도 그런 편인데, 결과를 보면 전달이 안 될 때가 있다.
예를 들어 조건문에서 사용되는 문법 중에 or와 and를 가르칠 때, 난 이렇게 설명한다.
“if 예약어와 콜론(:) 사이에 조건을 표현할 수 있는데, 여러 조건을 표현할 때 or와 and를 쓸 수 있습니다. 즉, and와 or는 참 거짓을 의미하는 각 조건을 용도에 맞게 연결하기 위해 사용합니다.“
물론 and와 or의 각 용도는 따로 설명하지만, 이러한 설명에서 내가 강조하고 싶은 것은 “조건”의 연결이다.
이렇게 설명하지만, 프로젝트를 진행할 때 심심치 않게 나오는 코드가 있다.
if "a" or "b" or "c" in variables:
이 코드를 보면 ”a“, “b”, “c” 중에 하나라도 variables에 들어있는지 확인하려는 코드라는 ”느낌“은 받을 수 있지만, 전혀 다른 의미이다. or는 조건을 연결하기 때문에, 이미 “a” 덕분에 무조건 True인 조건문이 된다.
사실 이렇게 작성할 수는 있다고 생각한다. 처음 하는 과정이니까.
하지만, 의도한 대로 동작하지 않을 때 어떤 점이 문제인지 생각할 수 있어야 한다고 생각한다.
or의 의미를 한 번 더 살펴보고, 코드를 변경하고 바꿔보면서 찾아가야 한다고 생각한다.
그렇기 때문에 이처럼 잘못 작성된 조건문을 올바른 코드로 변경하는 과정에서 생각해야 할 접근도 중요하다.
만약 이때 처음 언급한 “일부 포스팅”과 같이 정리하게 되면,
“a”나 “b“나 ”c”가 variables에 존재하는지 확인하기 위해서는
“a” or “b” or “c” in variables가 아니라, ”a” in variables or “b” in variables or “c” in variables로 사용해야 한다.
와 같이 되겠다.
실제로 강의 중에도 분명 원리를 설명하지만, “그래서 이런 경우에는 이렇게 사용하라는 거죠?“ 라고 되묻는 경우가 많다.
내 피드백은 이렇다.
or의 동작 원리를 다시 한번 고민해 보셔야 한다. or로 연결할 때는 참, 거짓을 나타내는 구문을 사용해야 한다.
배움의 과정 중에는 누구나 틀릴 수 있다.
하지만 결국, 문제를 만났을 때 어떻게 해결하고, 어떻게 정리하느냐에 따라 쌓이는 경험치가 다른 것 같다.
앞서 예시로 든 포스팅과 비슷한 맥락으로, “잘 동작하던 코드가 갑자기 안돼서 a를 바꿔보고 b를 바꿔보니 됐다”도 마찬가지다.
이렇게 접근한다면 결국 느낌이다. 왠지 이게 문제 같아서 수정해 보니 된 거다.
그렇지 않으려면, 먼저 안되는 “원인”부터 파악하고 따라가야 한다.
사실 나도 배울 때 이렇게 넘어갔던 것들이 지금에 와서 발목을 잡고, 다시 원리를 찾아보게 된 것들이 많다.
이런 학습이나 개발 습관을 이어간다면 10년 뒤에도 비슷한 개발을 하고 있으리라 생각한다.
뭐.. 편하게 개발하면서 그게 목적이라면 오히려 맞는 접근일 수도 있겠다.