---
이전 영상에서는
교양을 위해서
코딩을 배우고 있는 학우들과
작별의 시간을 가졌습니다.
그럼 이제
이 영상을 보고 계신 분들은
더 많은 것을 알고 싶은 분들일 거에요.
가야 할 길이 멀기 때문에 마음이 급하시죠?
그런데
지금은 공부를 더 하기도 좋은 때입니다만
공부를 멈추고 공부한 것을 사용하기도 좋은 때입니다.
공부만 하고 공부한 것을 사용하지 않으면
나중엔 머리 속이 너무 복잡해져서
막상 코딩을 하려니 무엇을 해야할 지 모르게 됩니다.
또
공부를 많이 해서
좋은 코드가 무엇인지는 알게 되었는데
좋은 코드를 짤 줄 모르면
내가 짠 코드가 실망스럽게 됩니다.
때로는 아는 것이 독이 될 때가 있어요.
바로 이 순간입니다.
이래서는
좋은 평론가가 될 수는 있지만
부족하더라도 무엇인가를 만들 수 있는 생산자가 될 수는 없습니다.
여러분이 현명한 판단을 할 수 있도록
생각의 재료를 제공해 드리겠습니다.
지금부터 하려는 이야기는
복잡함에 대한 것입니다.
우리 주변에는
눈에 보이는 복잡함이 있고
눈에 보이지 않는 복잡함이 있습니다.
그 중에
눈에 보이지 않는 복잡성은
공부한 것을 사용하려고 했을 때
무엇을 햬야할지 막막하게 하는 주범입니다.
이것의 실체를 추적해 봅시다.
웹페이지를 하나 만들고 아래처럼 코딩을 해 보세요.
(안 해도 됩니다)
이런 걸 체크 박스라고 합니다.
체크박스가 하나일 때
이 프로그램이 잘 동작하는지 확인하려면
몇 번 테스트를 해야 할까요?
2번입니다.
체크박스가 두 개일 때는 몇 번 일까요?
4번입니다.
3개일 때는 8번입니다.
그럼 이 추세로
체크박스가 50개일 때
몇 번의 테스트를 해야할까요?
수학적으로 생각하지 마시고,
직관적으로 짐작해 보세요.
라고 말해도
수학적으로 계산하는 분 계시죠? ㅎㅎ
그럼 좋습니다. 수학적으로는
2의 50승입니다.
2를 50번 곱하면 나오는 수죠.
그럼 2의 50승은 실제 얼마일까요?
계산기를 써 보세요.
제가 대신 계산해 드릴께요.
1000조입니다.
체크박스가 50개면
천 조 개의 경우의 수가 생겨납니다.
우리 주변에는
체크박스 50개보다 복잡한 앱들이 얼마나 많나요?
세상은 우리 생각과는 다르게
이렇게 쉽게 복잡해집니다.
눈에는 체크박스 50개가 보이기 때문에
쉽다고 생각되지만
실제로는 눈에 보이지 않는
천 조 개의 경우의 수가 숨어 있을 때
테스트 못한 경우에서
예상 못한 버그들이 생겨나게 됩니다.
처음엔 큰 기능도 쉽게 만들어지지만
뒤로 갈수록 사소한 기능 하나를 추가하는 것도
어렵게 되면서
깊은 슬럼프에 빠지게 됩니다.
이 복잡함은 눈에 보이지 않기 때문에
자연스럽게
좌절감의 원인을
자기 탓으로 돌리게 됩니다.
겨우 체크박스 50개 밖에 안 되는 단순한 프로그램도
제대로 못 만드는 사람이라고 여기게 되는 것이죠.
자기 탓이 아닙니다.
원래 그렇습니다.
공부도 마찬가지입니다.
개념을 알게 된다는 것은
말하자면 체크박스가 늘어난다는 것입니다.
자연스럽게 자신도 모르게
머리 속이 기하급수적으로 복잡해집니다.
그럼 이 복잡함은 나쁜 것일까요?
저는 그렇게 생각하지 않습니다.
오히려
인류는
눈에 보이는 단순함을 조작해서
눈에 보이지 않는 엄청나게 복잡한 것을
만들어내는 위대한 존재입니다.
그 위대함의 사례를 준비해 봤어요.
필자는 오랫동안 영어공부를 했어요.
그렇게 오래 공부를 했는데
저 스스로를 영어의 능숙한 사용자라고 느끼지 못합니다.
참 슬프네요. ㅎㅎ
영어는 주어, 동사, 목적어의 순서대로 단어들을 배치해서 의미를 만들어 냅니다.
아이가 자라면서 이 문법을 어떻게 습득하는가를 생각해 봅시다.
아이들은 명사만으로 대화를 합니다. 이를테면, 엄마, 아빠, 밥... 아이가 명사를 10개를 안다면 아이는 10개의 의미를 만들 수 있습니다. 1000개의 의미를 말하려면 1000개의 단어를 알아야 합니다.
아이가 조금 나이가 들면 동사를 사용할 수 있게 됩니다. 명사를 앞, 동사를 뒤에 두어서 말을 하기 시작합니다.
그럼 명사 10개, 동사 10개로 만들 수 있는 의미의 경우의 수를 따져보면, 20개의 단어로 100개의 의미를 만들 수 있습니다. 80개가 이득입니다.
좀 더 나이가 들면 동사 뒤에 명사를 배치해서 좀 더 복잡한 말을 만들기 시작합니다.
동사 앞의 명사와 동사 뒤의 명사를 구분하기 위해서 앞에 있는 것은 주어 뒤에 있는 것은 목적어라고 부릅니다. 그럼 20개의 단어로 1,000개의 의미를 만들 수 있습니다. 980개가 이득입니다.
전치사가 추가되면 30개의 단어로 100,000개의 의미를 만들 수 있습니다.
이렇게
문법이 조금만 복잡해져도
이득은 천문학적으로 커집니다.
즉
주어+동사+목적어라는 어순만으로도
우리는 엄청나게 많은 의미를 만들어 낼 수 있습니다.
이렇게 간단한 문법이
이렇게 대단한 도구라는 것을 알았다면
저는 이것만을 가지고
의미를 만들어 보는
연습을 충분히 했을 것 같습니다.
그런데 이렇게 중요한 도구의 사용에
충분히 익숙해지기도 전에
더 복잡한 문법들을 배웠습니다.
나중에는
머리 속이 너무 복잡해져서
한마디도 할 수 없게 되더라구요.
지금까지 우리가 배운 내용은
영어로 치면
주어+동사+목적어와 같이
혁명적인 것이었습니다.
이것만으로도 우리는
웹이 웹이기 위한 모든 것을
알게 되었어요.
덜 아름답고
덜 편리하고
덜 생산적일 뿐입니다.
그럼 어떻게 해야 할까요?
진도를 멈추세요.
그리고 지금까지 배운 것을 이용해서
여러분의 삶에서 정말 중요한 정보를
잘 정리정돈 해 보세요.
그것이 여러분의 인생에서 중요한 것일수록
여러 가지 불만족이 쏟아져나올꺼예요.
더 예쁘게 만들고 싶을 수도 있고
더 편리하게 만들고 싶을 수도 있습니다.
더 생산적으로 만들고 싶을 수도 있습니다.
중요한 것은 이런 불만족을
자기 눈으로 직접 확인해 보는 것입니다.
그래야 부분학습할 수 있습니다.
또 그 불만족이 누적되서 절망감이 충분히 성숙해야 합니다.
그래야 공부가 우리의 문제를 해결해 줄 수 있습니다.
바로 이 때가 진도를 나갈 절호의 타이밍입니다.
더 빨라도, 더 늦어져도 안 됩니다.
자 그럼 조사 한 번해 볼게요.
진도는 여기서 잠깐 멈추고
지금까지 배운 것을 사용하실 분 손 드세요. ㅎㅎ
잘 생각하셨습니다.
지금 손 드신 분들은
공부를 그만두고,
즐겁게 만들면서,
한계에 스스로 직면하세요.
그리고 그 한계에 대해서 충분히 절망하세요.
그 때 다시 찾아오시면
절망감을 극복할 수 있는 공부가 준비되어 있을 거에요.
절망감의 크기가 클수록 그것을 극복했을 때의 행복감도 커질 것입니다.
그럼 그 때까지 안녕히 가세요.
그럼 나머지 분들은 진도를 나갈 준비가 된 분들이죠?
그럼 어디 가지 마시고 다음 영상에서 뵙겠습니다.