brunch

You can make anything
by writing

C.S.Lewis

by 워니스홍 Apr 01. 2019

순종

시키는대로 하라

순종하라. 어른이 시키는대로 하라. 부모님의 말씀에 선생님의 말씀에 하나님의 말씀에 순종하라.
듣기 싫은 말이다. 내 인생은 내 것인데, 내가 하고싶은대로 놓아두지 않고 왜 이래라 저래라 하는 걸까?
나를 좀 내버려두면 좋겠다.

순종 (順從)의 의미는 순순히 따른다는 뜻이다. 단어만 보면 유순하고 좋은 뜻인것 같은데 듣다보면 불편한 기색을 감출 수가 없다. 남이 나에게 주는 규칙이나 지시를 맹목적으로 따르라는 의미로 오용되기 때문이다.


눈덮인 산에서 스키를 탄다고 하자. 스키나 스노우보드를 잘 타는 사람은 이미 그곳에 있는 눈길이나 중력의 작용을 면밀하게 이해하고 그 성질에 거스르지 않는다. 자기 의지를 발휘하여 이 방향으로 저 방향으로 폴대를 짚거나 몸을 기울이는데, 기존에 이미 있는 것들의 성질을 최대한 발휘하는 방향으로 폴대를 짚는다. 실력 좋은 선수일수록 이미 그곳에 있는 것을 자연스럽게 활용하고 자신의 힘은 최소로 들인다. 반면에 초보자는 힘을 들여 눈길을 거스른다. 스키가 앞으로 나가기를 바라면서 가속이 붙는 반대 방향으로 몸을 기울인다. 애를 써도 애를 쓴 만큼의 결과를 얻지 못한다. 이미 있는 것에 순종하지 않기 때문이다. 불순종의 결과다.

순종은 지시대로 하라는 말이 아니라, 이미 있는 것의 성질에 역행할수록 내가 원하는 바를 이루기 어렵다는 뜻이다.

예전 글에서 지도하다 (supervise)라는 단어에는 보아주고 보여준다는 뜻이 있다고 했다.

학생이 겉으로 내놓은 것을 선생이 잘 보아주고 선생이 자기 가진 것을 학생에게 잘 보여주면 학생의 이미 있는 성질을 거스르지 않으면서 지도할 수 있다. 위의 그림으로 치자면 좋은 교관은 스키 초보자가 이미 가지고 있는 성질에 역행하지 않으면서 원하는 바를 이룬다. 학생에게 순종하는 교관이다. 어떤 못난 교관은 이래라 저래라 명령하면서 학생에게 이미 있는 성질을 뒤집으려 어깃장을 놓는다. 학생에게 불순종하는 교관이다. 


순종이라는 단어는 윗사람이 아랫사람을 대하든 아랫사람이 윗사람을 대하든 똑같이 적용된다. 학생을 가르친다고 하면서 학생의 인격이나 개성에 어깃장을 놓으면 감정적인 반발을 산다. 그러면 가르치는 목적을 달성하지도 못하고, 만약 달성한대도 낭비에 가까운 비용이 들어간다. 인간관계론의 관점에서 보면 꿀을 얻겠다면서 벌통을 걷어차지 말라는 뜻이다. 

사람은 식사를 제대로 하고 잠을 제대로 자야 제대로 활동할 수 있다. 사람으로 태어난 이상 누구나 그러한 성질을 갖는다. 자기의 성질에 순종해 생활하면 공부를 하든 게임을 하든 원하는 바를 잘 성취할 수 있다. 자기 몸이므로 자기 마음대로 한다면서 식사를 자주 거르거나 잠을 불규칙하게 자면 자신이 인간이라서 갖는 본래 성질을 거스른다. 그러면 집중도 떨어지고 원하는 결과를 얻지 못한다. 원하는 결과를 자연스럽게 얻게 되는 순종의 길을 어깃장 놓았기 때문이다. 자유가 아니라 방종 (放縱)이다. 제멋대로라는 뜻이다. 위의 그림으로 치자면 눈밭에 편하게 드러누워서 스키를 잘 타고 싶다고 말로만 한탄하는 식이다. 결국에 목적을 이루지 못하거나 이루더라도 막대한 비효율이 발생한다. 불순종의 대가다.


자유 (自由)는 스스로를 따른다는 뜻인데, 유(由)에는 '말미암다'라는 뜻이 있다. 자유는 자기를 따른다. 혹은 자기로부터 말미암는다 (=어떤 현상이나 사물 따위가 원인이나 이유가 되다)는 뜻이다. 자신의 생각이나 행동의 이유가 자기 자신이다. 바꿔말하면 자기의 원래 가진 성질에 자기가 순종한다는 뜻이다. 사람으로서 가진 본성이든 자신이라서 가진 개성이든 자신이 자신의 생긴 바 성질에 순종하면 적은 힘을 들여서 순조롭게 목적을 달성할 수 있다. 본성이나 개성이 무엇인지는 끊임없이 자신에게 묻고 자세히 관찰하고 면밀히 알아차리는 것으로 파악해 갈 수 있다.


교과 공부를 예로 들어보자. 어떤 과목을 처음 공부할 때는 그것이 수학이든 음악이든 간에, 자신이 그것에 대하여 현재 초보자라는 사실을 인정해야 한다. 그게 사실이기 때문이다. 모름을 인정하지 않고 어깃장을 놓으면 성급하게 책을 떼고 진도를 나가고 고급 과정을 하겠다고 덤비다가 질려서 나가떨어진다. 결국에 그것을 잘 하게 되겠다는 목적 달성에 실패하는 것은 물론이고, 두번 다시 그것을 쳐다보기도 싫은 마음이 생길지도 모른다. 


필자가 머신러닝 과목의 TA (Teaching Assistant)를 맡은 학생 중에 다음과 같은 질문을 하는 학생이 있었다. 

"프로그래밍 언어에서 C++은 잘 알지만 Python은 잘 모른다. 프로그램의 구조를 Python으로 잘 만들 자신이 없는데, 자신의 프로그래밍 스타일이 과제 점수에 영향을 주지 않을까 하는 걱정이 든다."
I am wondering about the programming style of PA1. I saw that in the description file it says "using functions to structure programs properly". Does it mean we need to write a main.py, a helperfunction.py, a run.py...etc? Because I worked with C++ but not Python before, I haven't got very familiar with Python classes. So I wonder is it OK if we just write the program in one file like the tutorial code in Jupyterlab? Does the programming style affect our grades?


다음과 같이 대답해주었다. 

"프로그래밍 스타일이 어떻다고 해서 과제 점수가 오르거나 내리거나 하는 것은 아니다. 프로그램을 얼마나 구조적으로 잘 짜는지는 채점 기준에도 반영되지 않는다. 그래서 구조적으로 엉성한 (messy)프로그램을 작동만 하도록 대충 만들어서 낸다고 하자. 그러면 채점자는 학생이 제출한 코드의 어느 부분이 어느 역할을 하는지 파악하기 어렵다. 채점자는 채점기준에 맞는 코드 부분을 일일이 찾느라 시간을 낭비하게 될 것이고, 그러다가 과제의 어떤 부분에 대해서 실제로는 했는데 마치 안 한 것처럼 놓치는 실수를 할지도 모른다. 그러면 학생은 기대한 것보다 점수가 낮게 나올테니 점수를 들고 채점자에게 메일을 보내고, 답장을 받고, 그렇게 따로 시간을 잡아서 상담을 하고,  둘이 앉아서 코드를 다시 열어서 일일이 들여다보고, 이 부분이 맞네 틀리네 따지고, 그렇게 한시간 반을 더 잡아먹는다고 하자. 그래서 결국에 문제가 되는 부분을 찾아서 점수를 올려받았다고 하자. 채점자는 물론이고 학생도 시간이며 노력을 매우 낭비한다. 다음주가 중간고사 기간인데 이런 일을 벌였다가는 이 숙제 점수를 올리느라 다른 과목 시험공부 시간을 줄이게 되고, 그러면 다른 과목 점수가 하락하는 결과를 맞을 가능성이 높다. 그러면 결국에 아무도 이득을 보지 못한다.

서로 무관한 듯이 보이는 여러 일들이 사실은 긴밀하게 연관되어 있다. 그러니 당장의 편한길을 가느라고 엉성한 코드를 대충 내지 말고, 지금 힘들더라도 가능하면 남이 읽기에 수월한 코드를 작성하는 쪽이 학생 본인의 시간이며 노력을 아끼는 길이다.
The [Some Programming Tips] written in the assignment sheets is not just for the case of Python, but for C, C++, Java, whatever programming languages you use. Structurally clear code is very important. After you graduate, you are not going to work alone. You are going to work together with somebody else. The clear code helps a lot. 

According to the grading scheme, the programming style does not affect your grade explicitly. However, you might find this description in the assignment sheets:
Note that the plus sign (+) in the table below indicates that reporting without providing the corresponding code will get zero points. 

it is time for you to imagine that if TA fails to find out which part of your code fits in which grading scheme. Even though the report says you have the results for that part, you will get 0 grade if TA fails to find the corresponding code due to the messy programming style.

At first round, TA wastes his time because he has to read the messy code and check the grading scheme one by one. Since his time is limited, you may get a lower score than you expected. Then you claim for that via email, then the TA replies for the email, then they have to make an individual appointment, and you argue, the TA defenses and they open your code together, search the line by line for another one and half hours, and they eventually find the line and fix your grade, so on so forth. Then you also waste your time heavily during the midterm examination period. Then It may affect your other course score get lower. Then who benefits with this scenario? No one. I do not think you want the scenario.

Things are connected. please do not take the most convenient way but take a more qualified way. That eventually saves your energy more.

The number of files of the code does not matter. The point is how clear your code is understandable for its readers.

Good Luck.




작가의 이전글 준비, 대비
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari