다른 업종에서도 비슷한 말이 있을테지만 소프트웨어 개발자들 사이에는 engineer's ego 란 말이 있습니다.

실무에서는 다양한 개발자들이 작성한 코드들을 하나로 합쳐서 전체 소프트웨어를 구성하는데, 이때 원하는 대로 동작이 되지 않을 경우 어느 코드에서 문제가 발생했는지를 찾아내는 데에 많은 노력이 들어가곤 합니다. 원인을 찾다보면 누가 만든 코드에 문제가 있는지를 논할 수 밖에 없는데, 이때가 바로 engineer’s ego가 마각을 드러내는 순간입니다. “나는 똑똑하다. 따라서 내가 만든 코드는 잘못되었을 리가 없다. 오히려 네가 만든 코드에 문제가 있을 것이다.” 라며 협업해야 할 팀원들끼리 서로 감정적으로 싸우는 결과를 초래합니다.

이렇게 에고가 강한 엔지니어들이 출현하는 이유는 대략 다음과 같습니다.

  1. 그동안의 성공의 경험으로 인해 철저한 자만에 빠져있거나,
  2. 문제를 객관적으로 파악하는 능력/지식이 부족하거나,
  3. 내재적으로 실패를 부끄러워하거나 두려워하는 심리를 가지고 있거나,
  4. 외재적으로 조직에서 실패를 용인하지 않는 분위기

저의 현업 시절 가장 중요한 임무 중의 하나가 바로 엔지니어들 스스로 에고를 제어하는 능력을 키우고 상대방의 입장을 살피며, 객관적인 데이터를 가지고 문제를 파악하도록 돕는 일이었습니다.

어른들도 이러할진대, 아이들은 두 말 할 나위 없겠지요.

수업 시간에 많이 마주치게 되는 상황은 다음과 같습니다.

  • 타이핑 연습을 할 때 - “제가 제대로 쳤는데 글자가 이상하게 나와요.” (이후에 컴퓨터에 대한 짜증이나 화를 동반)
  • 코딩을 할 때 - “분명히 선생님이 하라는 대로 했는데 이상하게 나와요.” (여기에서는 화를 내는 경우보다는 짜증과 좌절감을 표출하는 경우가 많음. 때때로 자기 머리를 때리거나 볼을 때리는 자해(?)행동 수반.)

이 경우 제가 학생에게 내리는 해결책은 일단 컴퓨터나 선생님이 잘못했을 것이라는 생각은 접어두고 내가 무엇을 잘못 했을까를 먼저 생각하게 하는 것입니다. 물론 많은 경우 죽어도 자기는 제대로 했다고 주장하기는 합니다. 하지만 문제점을 외부에서 찾기보다는 먼저 스스로에게서 찾아보고, 열심히 생각하고 따져보았음에도 불구하고 스스로에게 문제가 없을 때 비로소 외부를 점검하는 훈련을 지속하고 있습니다. 이러한 훈련이 부족할 경우에는 문제에 봉착했을 때 감정이 이성을 억압하여 문제를 명확히 볼 수 없게 됩니다. 따라서 해결책도 찾아내기 힘들어지게 되지요.

제 경험으로 볼 때 이러한 훈련의 성과는 두 가지로 요약됩니다.

  • 시간적으로 보았을 때 말귀 잘 알아듣는 고학년일수록 일찍 결실을 보고, 저학년일수록 시간이 더 걸립니다.
  • 성공 비율로 보았을 때 저학년은 거의 100% 훈련에 성공하는 반면, 고학년은 꽤 오랫동안 훈련을 해도 자아의 껍질이 이미 꽤 두껍게 형성되어 성공하지 못하는 경우도 있습니다. (즉, 시간이 더 필요하다는 뜻)

얼마전 G2 클래스 수업 중에 아주 흐뭇한 광경이 있었습니다. 수업 중에 한 번에 코드가 제대로 동작하지 않는 경우는 비일비재한데, 어린 G2 학생임에도 불구하고 “컴퓨터가 잘못 됐을 리는 없을테니 내가 어딘가 잘못 했을거야” 라고 혼잣말을 하면서 문제를 바로 찾아서 고쳐내는 모습이었습니다. 옆에서 다른 친구는 “그래그래 컴퓨터는 잘못이 없어, 사람이 시키는대로 하니까.”, 또 다른 친구는, “컴퓨터야 잘했어~” 라고 하더군요.

문제의 원인을 감정과 자아에 치우침 없이 객관적으로 살피고 해결책을 찾아내는 것. 그것이 코딩수업을 통해 배우게 되는 진짜 지식이라고 생각하고 있습니다.

감사합니다.