오늘 정모엄마의 전화 통화를 옆에서 우연히 듣게 되었는데요, 내용인즉슨 아는 국제학교 엄마에게 제가 코딩 교육을 시작했다는 것을 홍보하는 내용이었습니다. 그러니 당연히 상대방 엄마는 코딩이 뭐냐, 무엇을 배우는 거냐, 괜히 컴퓨터 가르쳐서 게임만 하는 것 아니냐 등등의 질문을 하셨을텐데요, 정모엄마의 대답이 제가 듣기에는 거의 “버버버” 수준이었습니다. ^^ 사실 코딩이 뭔지 저희 와이프도 뭐 알겠습니까?

또 다른 여담인데요, 저희 부모님은 제가 대학 졸업 후 평생 해온 일이 무슨 일이었는지 아직도 모르십니다. 뭔가 대단한 것 하는 것 같기는 하고, 돈도 많이 받는 것 같고, 회사도 좋은 데 같아서 친구들에게 아들 잘 나가는 것 자랑 좀 해야겠는데, 아들한테 설명을 들어도 당췌~ 무슨 일 하는건지 알 수가 없다고 하십니다.

이렇듯, 세상은 이미 소프트웨어로 돌아가고 있고, 소프트웨어에 문제가 생기거나 정지하면 우리의 생활이 마비되어 버리는 시대인데도 (심지어 우리의 생명을 잃을 수도 있습니다.) 많은 사람들이 소프트웨어가 무엇인지, 그것을 만드는 코딩이라는 활동이 무엇인지, 소프트웨어 엔지니어 (혹은 프로그래머)라는 직업이 있는지조차 모르고 계십니다.

그나마 요즘은 설명하기가 좀 수월해졌는데, 모두들 고성능 컴퓨터 한 대씩 주머니에 넣고 다니시며 여러가지 소프트웨어를 애지중지 사용하시기 때문입니다. 그 컴퓨터는 바로 여러가지 멋진 소프트웨어로 가득찬 스마트폰이죠!

코딩 교육이란? 페이지에서 언급했지만 (느슨한 의미의) 코딩(coding)이란 바로 소프트웨어를 만드는 활동을 의미합니다. 소프트웨어(software)란 컴퓨터에게 어떤 작업을 하도록 하는 명령어를 모아 놓은 꾸러미를 의미합니다. 이런 소프트웨어를 사용 용도에 따라 여러가지 이름으로 분류해 놓았는데, 그 중에서 우리 일반 사용자들이 이런 저런 작업을 하기 위해 직접 사용하는 소프트웨어를 애플리케이션(application) 소프트웨어라고 부릅니다. 스마트폰에서 앱(app)이라고 부르는 것이 바로 이 애플리케이션의 줄임말입니다.

여러분이 애플의 앱스토어나 구글의 구글 플레이에서 다운로드하시는 앱들이 모두 소프트웨어이고, 그것을 만드는 작업이 코딩이며, 그것을 만드는 사람을 (느슨하게 표현하여) 소프트웨어 엔지니어(software engineer) 혹은 프로그래머(programmer)라고 부릅니다. 요즘은 이들을 그냥 개발자(developer)라고도 많이 부릅니다.

아래 사진을 한 번 보시죠.

어떤 사람이 컴퓨터 앞에서 무언가를 하고 있습니다. 컴퓨터 화면에는 뭔가 작은 글자들이 빼곡하고 촘촘하게 잔뜩 써 있습니다. 이 사람은 지금 코딩을 하고 있는 중입니다. 화면에 있는 글자들은 모두 컴퓨터에게 어떤 일을 하라고 지시하는 명령어들입니다. 이런 명령어들은 그 숫자가 아주 많습니다. 또한 명령어를 조합하는 방법도 무궁무진합니다. 이러한 조합을 통해 멋진 기능을 하는 소프트웨어를 만들어냅니다. (사진의 사람은 여러분이 잘 아시는 인터넷 백과사전인 위키피디아를 만드는 사람들 중의 한 사람으로 Trevor Pascal이라는 소프트웨어 엔지니어입니다. 레알!)

우리가 지금 사용하는 스마트폰 앱 하나를 열어서 안을 자세히 들여다보면 그 안에는 사진의 사람과 같은 소프트웨어 엔지니어들이 만들어 넣은 명령어들로 빼곡하게 채워져 있는 것을 알 수 있습니다. (물론 여러분의 스마트폰을 자세히 들여다보신다고 해서 육안으로 보이지는 않습니다.^^)

지금까지 설명드린 바를 통해 코딩이 무엇인지 감을 잡으셨을 것으로 압니다.

그러면 도대체 우리 아이들이 왜 이 코딩이란 것을 배워야 하는지 (사실 정모 아빠는 배워야 한다~라고 단정적으로 말하고 싶지 않습니다. 사실 안 배워도 됩니다. 세상을 사는 방법은 여러가지이고 세상은 다양한 능력/감성/경험을 가진 사람들로 채워져야 하니까요.) 풀어나가기 전에 소프트웨어란 것의 중요성에 대해 다음 포스팅에서 말씀드리겠습니다.