컴퓨터는 활용적인 지식이 있고 이론적인 지식이 있습니다. 전자는 후자에 비해 직관적이고 실천적이라 잘 이해하는 것은 쉬운 편이고 행동으로 옮길 수만 있으면 배울 수 있구요. 후자는 조금 도전적입니다. 누구나 맞춤설명을 들으면 할 수 있는 도전적인 유형이지만 때로는 어려움에 봉착합니다. 이유를 들어보면요.
(1) 누구나 익숙한 언어도 수능 레벨까지 되면 어려워지듯이 이론적이라서 그렇습니다. 정확하게 뉘앙스 구별도 해야 하고 이론을 배경으로 삼아 메타적으로 적용해야 하기에 어렵습니다.
(2) 기초부터 차근차근 하더라도 그 배경 지식의 범위와 심도가 넓고 깊어서 지식 정도에 따라 성패가 갈리는게 이론적 지식이라, 사람마다 다른 경험 상태에 있으니 어려울 수 있습니다.
이 두가지가 제일 중요한 이유구요. 공부의 왕도를 지금 설명하기는 애매하지만 일단은 이 두가지의 해결 방법을 노하우로 알면 좋습니다. 요령 위주로 해설해봅니다.
(1)은 일정 정도는 언어에 기반하므로 국영수 공부를 잘 해두면 좋습니다. 국어의 경우 어문학적 수련보다는 과학철학적인 수련을 추천하네요. 어문학은 문법적 접근을 주로 하기에 화용론이나 논리적 접근에 약합니다. 과학철학은 인공지능처럼 전산학 개념을 논의하기도 하고 수학이나 과학의 방법론적인 것을 논의하는 분야라 전산학적인 또는 인지과학적인 것도 원리적으로 접근하기에 컴퓨터 이론 공부에도 수련 방법이 되죠. 과학철학에서 전산학을 다루는 관련 해설을 자주 접하고 메타인지를 장착하면 언어로 표현이 더 잘 되서 실기만 아는 것보다 발전이 더 잘 됩니다. 전산학 교수님처럼도 될 수 있네요.
영어를 배우는 것도 필수입니다. 교과서가 원서로 된 것을 읽어야 할때가 많으니까요. 이 경우 구사하는 영어는 원서와 개발자들의 블로그 등을 통해 배우시구요. 토익이나 토플은 문법 정도만 아는 용도로 활용하세요. ESL과 같은 실용영어에서는 강제하지 않지만, 전산학에서 통용되는 문체와 어문학 특정적인 문체는 조금 다릅니다. 실용적으로 전산학에서 통하는 영어 기술법은 어문학보다 전산학 자체의 기술자들의 문장을 주로 봐야 합니다. 때로는 어문학적으로만 통하는 영어를 주로 구사하다보니 원어권에서 엄밀히 보면 실격이 된 문체를 구사하기도 하네요. 이를 배우는 초기 단계부터 잘 챙겨서 전산학다운 영어를 하는게 좋습니다.
저의 경우 본래 문체가 어느 분야에나 통용되는 문체였는데요. 이 문체는 지식이 없더라도 잘 구사된 타인의 언어를 보면서 문체를 체현하면 누구나 가능합니다. 그런데 이 문체가 철학적으로 멋이 있게 하려고 하다보니 변형이 되어 원어권에서 말하는 아시아 학생의 문체라고 하는 해독이 어려운 형태가 되었었네요. 이런 경험을 하다보니 전산학 분야에서 통용되는 문체에 대한 준수를 더 신경써서 하시라고 전해드립니다. 겉멋보다는 전산학에서 통용되는 문체가 존재하구요. 이 문체들은 영어권 개발자가 저술한 전산학 원서를 보면 쉽게 배울 수 있구요. 이분들의 블로그가 책에 소개되어 있으면 가셔서 보시면 개발자들이 일상적으로 쓰는 표현도 알게 되어 배움에 보탬이 됩니다. 많은 경우 외국에서 영어를 배울때 쓰면 되는 방법이네요. (사실 “저의 경우” “겉멋”이라고 했지만 그 연원을 아시면 놀라실 것입니다)
국어 실력과 프로그래밍 실력은 있는데 영어 문체 차이로 인해 실격되면 그것만큼 더 실망인게 없습니다. 이것도 챙겨주시면 좋아서 언급합니다.
일단 문체가 통용되는 문체로 체현이 되면 설명해두고 만족도도 높아지고, 누가 읽더라도 이해가 잘 되서 소통도 잘 되니 이것도 자존감을 높히는 방법이 됩니다. 협업할때도 채용이 더 잘 될 것입니다.
(2)는 한 단계를 이수했어도 꾸준히 설명을 단계별로 접하고, 아는 단계도 해설의 유형을 늘 살피는 전략으로 쉬운 해설도 항상 접하는 것을 추천합니다. 해설력이 길러지니까요. 쉬운 설명도 무시하지 마시고 글쓴 분들이 채택한 서술의 방법이나 양태를 잘 봐두고 어떻게 자신의 해설에 적용할지 생각해두면 좋습니다. 해설력을 기르는 방법입니다. 그리고 해설력 외에도 난이도를 조금씩 높히는 것도 단계별로 뭘 해야 할지 결정하는 능력에 해당됩니다. 이 경우 제가 설명했던 카테고리적인 사고방식이 기초가 되구요.
단계별로 다음 단계로 넘어갈지 아는 쉬운 방법은 자격증 공부를 하는 방법입니다. 자격증 수험서를 구해서 읽다보면 초심자 시절에 경험이 없어도 잘 가이드를 해주니 도움이 됩니다. 수험서를 볼때는 해설된 개념이나 기법에 집중하는 것 말고도 개념이 해설된 순서를 여러 수험서를 비교해가면서 보면서, 개념의 지도를 생각해두는 것도 좋습니다. 분야별로 연관된 큰그림이 그려지면 무엇을 더 공부해야 할지를 생각해볼 수 있으니까요.
살펴볼 수 있는 한 최대한의 자원과 노력을 들여 늘 공부하는 자세로 임하면 좋습니다. 공부를 할때 접하는 분야별로 서로 연관분야가 있을 수 있습니다. 한 나라의 역사를 배울때 지리학 개념인 지도를 보고 지명부터 살피는 것처럼 전산학도 분야에 따라 보조가 되는 분야가 있네요.
특히 프로그래밍이라면, 개별 언어에 대한 지식 말고도 소프트웨어 공학을 깊이 있게 파고들어 각각의 언어로 구현할때 API 이해를 심도있게 하는 것도 추천됩니다. 교과서에 나온 예제들은 개념잡는 용도라, 객체지향이나 API 개념들을 적용하지 않은 형태인데요. 이러한 예제들만으로도 프로그램이 작동하지만, 의존성 주입과 같은 기본 개념부터, 디자인 패턴, 애자일 방법론 같은 프로그래밍 방법론을 심도 있게 살펴두면 한단계 높은 경지로 이어갈 수 있으니 참고하시길요. 웹프로그래밍 또한 스크립트적이라 이를 안챙기는 경우가 있는데요. 소프트웨어 공학을 기본으로 삼아 프로그래밍 언어를 배우면 방법론이 녹아든 코드 작성이 가능하게 됩니다. 같은 언어로 만든 코드도 차이가 크죠.
흔히 리눅스에 비해 윈도우는 쉽다고 하는 속설이 있는데 관리 수준이 되면 다 만만치 않습니다. 명령어로 주로 운용한다는 이미지에 의해 있는 속설인데 윈도우도 명령어로 처리하는 모드가 있고, 파워쉘만 해도 알아야 하는 주제가 정말 많습니다. 그러니 자만하지 마시고 실력을 차츰 확장해간다는 마음가짐으로 임하면 좋습니다. 이 경우에도 분야별로 필요한 개념을 알게 되는데 현 수준에 만족하지 마시고 늘 지식을 확장한다고 하는 마음가짐이 필요하네요.
그리고 또 하나 정보를 드리자면 이렇습니다. HTML이나 프로그래밍 언어 API 함수들처럼 이해하면 외어야 하는 것은 외우면 됩니다. 이 경우 그냥 외우면 되는 부분은 그냥 외우시구요. 자연언어처럼 의미를 분별하지 않고 기호라고 생각하고 기호의 의미를 살펴서 흐름을 빠르게 훑는 연습도 좋고, 문자열 처리처럼 글자가 뚫어지게 주시하면서 패턴적으로 쪼개는 것과 같은 능력도 중요합니다. 영화 뷰티풀 마인드에서 광고를 패턴화해서 보는 주인공이 결국 남들이 못보는 방법으로 세상을 바라보고 경제학에 공헌한 게임이론을 만들었듯이, 패턴적으로 보는 것도 전산학에서도 중요한 기능 중의 하나네요.
외우는 것만 하다보면 스스로 생각하는 능력이 쇠퇴하기도 합니다. HTML을 예로 더 들면요. HTML도 외우고나면 활용을 해야 하는데요. 태그를 외웠어도 복잡한 형태의 레이아웃을 만들때는 여러 분기의 코드가 가능해서 교재에서 나온 코드를 응용해서 실험을 토대로 하는게 추천됩니다. 일단 교재를 보고 응용해보시구요. 이 응용하는 노하우를 고유한 형태로 만들어보는 것도 연습하면 좋습니다. 사이트를 다니다가 뭔가 신박한 레이아웃이 발견되면 소스보기를 해서 대응되는 코드를 살피는 것도 좋구요. 때로는 WYSIWYG 방식의 웹에디터가 생성한 코드를 살펴서 직접 코딩할때 활용해도 좋습니다. 응용례는 무궁무진합니다. HTML 태그들이 한정된 것 같아두요. 물론 HTML은 코드 형태가 비슷하게 나오는 경우가 많긴 한데요. 교재에서 나온 코드나 남들이 만든 코드도 이렇게 저렇게 바꿔보면서 배우면 예제나 참고한 사이트 코드가 해결못한 것을 해결하는 코드가 고안되기도 합니다. 이를 늘 열심히 해두면 신박한 기술자가 되죠.
조금 두서없이 써놨는데요. 이 글에서 해설한 컴퓨터 공부에 필요한 덕목을 요약하면 아래와 같습니다.
(1) 누구나 익숙한 언어도 수능 레벨까지 되면 어려워지듯이 이론적이라서 그렇습니다. 정확하게 뉘앙스 구별도 해야 하고 이론을 배경으로 삼아 메타적으로 적용해야 하기에 어렵습니다.
(2) 기초부터 차근차근 하더라도 그 배경 지식의 범위와 심도가 넓고 깊어서 지식 정도에 따라 성패가 갈리는게 이론적 지식이라, 사람마다 다른 경험 상태에 있으니 어려울 수 있습니다.
이정도로 요점을 말씀드려봅니다. 이 덕목들을 실현하기 위해 노력하면 다들 이론도 잘하게 될 것입니다.