프로그래밍은 언제 시작하는게 적절할까?
첫 번째 주제는 프로그래밍 입문. 이미 프로그래밍을 시작한 사람들은 스펙편으로 건너 뛰는 것을 권장한다.
알파고와 이세돌의 경기, 비트코인이 휩쓸고 간 지난 몇 년 사이 주변에서 프로그래밍에 관심을 보이는 사람이 부쩍 많아졌다. 하지만 제대로 접해보지 못한 컴퓨터 언어를 배우기에는 너무 늦은 것 같아 망설여하는 것 같아 보인다.
코딩을 옛날부터 쭉 해오고 각종 대회 참여 경력이 있는 친구. 고등학교 시절 잠깐 코딩을 배워서 할 줄 아는 친구. 그리고 대학교 와서 코딩을 처음 배운 친구. 내가 본 바로는 대학교 전에 프로그래밍 경험이 있냐 없냐가 크게 프로그래머서로의 "성공" 여부가 되지 않았다. 프로그래밍을 일찍 배우는지, 늦게 배우는지는 중요하지 않다는 것이다.
물론 컴퓨터 사이언스 커리큘럼이 탄탄한 학교를 다녔기에 그렇게 느꼈을 수도 있다. 하지만 아래와 같은 상황의 작용이 클 것이다.
테크는 아주 빠르게 바뀌는 필드이다. 경험이 많은 사람들도 새로 나오는 기술들을 계속 습득해야 한다. 프로그래밍을 배운다는 건 단순히 기술적인 것을 배우는 게 아니다. 다양한 알고리즘과 언어들을 익히면서 (1) 문제를 다양한 시선으로 바라보고 (2) 새로운 것을 끊임없이 학습할 수 있는 역량을 키우는 것이다. 이러한 자세가 없다면 아무리 능숙한 경험자도 뒤쳐질 수밖에 없다.
실리콘밸리의 테크 회사들은 단순히 프로그래밍을 오래 해 온, 표준화된 개발자만을 원하지 않는다. 다양한 지역, 다양한 배경을 가진 사람들이 모여야 건강한 커뮤니티를 만들 수 있다고 믿기 때문이다. 나는 인턴십을 하면서 정말 다양한 사람들을 만났다. 패션계에서 디렉터로 일했다가 UI/UX 디자이너가 된 사람, 옥수수를 만드는 회사에서 매니지먼트를 하다가 소프트웨어 개발자가 된 사람, 유럽 여행을 하며 재즈 기타 공연을 하다가 하드웨어 개발자가 된 사람도 만났다. 어차피 프로그래밍을 단기간에 터득할 수 있다면, 대학교 오기 전에 중요한 시간들을 마냥 프로그래밍에 쏟아붓는 것보다 이들처럼 유니크한 경험을 쌓는 게 더 중요하지 않을까?
조금 더 객관적인 의견을 듣고 싶어서 나의 지도교수를 찾아갔다. 미국 공대에서 1989년부터 지금까지 Computer Science (CS)분야 학부생을 지도하신 분이시다. 예상과 달리 중립적인 의견을 내주셨는데, 중요한 부분을 간단하게 요약해본다.
Q) 여기 CS전공 학부생들만 보았을 때, 대학교 이전의 코딩 경험이 “성공”여부에 영향을 미친다고 생각하시나요?
CS전공 신입생 중에서도 3~4분의 1 정도는 프로그래밍 경험이 충분치 않아 입문 수업을 듣는다. 그런 학생들보다 바로 심화과정에 들어간 학생들의 졸업률이 더 높다. 하지만 이것을 학생의 코딩 실력을 미리 키워두지 않아서라고 보기 힘들다. 단지 컴퓨터 사이언스가 어떤 필드인지 이해가 부족하고, 깨달은 뒤 자기가 좀 더 원하는 필드로 가서 일어나는 현상이라 생각한다.
Q) 개발자가 될 생각이 없어도, 모두가 대학교 이전에 코딩 교육을 받아야 된다고 생각하세요?
나쁠 건 없다. 하지만 현실적으로 아직 제대로 된 프로그래밍 수업을 모두에게 지원하기 힘들다. “Computing”을 가르친다고 하면서 엑셀사용법을 가르치는 곳을 본 적도 있다. 테크가 워낙 포괄적인 만큼 무엇을 가르쳐야 하는지에 대한 경계가 모호하다.
다른 것을 떠나서, 프로그래밍이 얼마나 우리에게 자유롭게 창조할 능력을 주는지 모두가 알았으면 한다. 코딩을 하면서 직접 무언가를 만들기 전까지는 이것을 깨닫기 힘들다. 하나 더, 설령 코딩을 할 줄 모른다고 해도, 프로그래밍의 범위와 한계가 어느 정도인지 알았으면 한다. 해킹, 인공지능, 자율주행이란 단어가 뉴스에 뜰때 이것을 어떤 악마의 주술이 아니라 인간의 산물로 여기며, 우리가 얼마큼 컨트롤할 수 있는지 알아야 될 의무가 있다.
앗, 전혀 없다고 하기엔 망설여진다. 대학에서 코딩을 배우기 시작한 사람 모두가 프로그래머가 되는 것은 아니다. 이는 프로그래머가 되기 이전에 어떤 학습 방법을 했는지와 연관이 있다. 대학 이전에 어려운 프로그래밍 언어(기술적인 것)를 배우기 보다는 논리적인 사고방식에 익숙해지는 연습을 하도록 하는 것이 좋다.
아무래도 이과 성향이 강한 사람들이 프로그래밍을 쉽게 터득한다. 이과생이 아니더라도 일상생활에 논리적인 사람들, 혹은 문제 해결을 좋아하는 사람들이라면 프로그래밍이 잘 맞을 것이다. 하지만 내가 내리고 싶은 결론은 이것이 아니다. 손재주가 없어도 그림 그리는 것을 좋아할 수 있고, 귀가 밝지 않아도 음악을 좋아할 수도 있다. 나는 0개국어지만 지금 이렇게 글을 쓰ㄱ
위 지도교수님이 말했던 것처럼 프로그래밍은 디지털 세계 안에서 자유로운 창조능력을 준다. 그것으로 좋은 책을 빠르게 배송하는 웹사이트를 만들 수 있고, 사람들이 열광하는 3D 게임을 만들 수 있고, 시각장애인들의 편리를 위한 모바일 어플을 만들 수도 있다. 결국 내가 많은 가능성들 중 프로그래밍을 택한 이유는 프로그래밍을 통해 할 수 있는 일이 흥미롭고 뜻깊다고 느꼈기 때문이다. 모든 사람들에게 프로그래밍을 한번 도전해 보라고 권하고 싶다. 프로그래밍이 나의 인생을 바꾸어 놓을지는 아무도 모르는 것이다.