최근 일자리 시장이 개발자 위주로 공급되면서 일반인들, 즉 비전공자들도 코딩 교육을 받는 경우가 늘어나고 있다. 코딩 열풍, 명과 암
취업을 하기 위한 것이 아니라면 왜 코딩을 배워야 할까? 여기서는 단순히 ‘코딩’만을 의미한다. 실제 많은 개발자들은 숲을 보지 못하고 나무만을 보는 개발자들을 ‘코더’라고 부르며 하대한다. 기반이 되는 공학적인 지식에 대한 배움이나 깨우침 없이 단순히 코딩 교육 만으로 일반 사람들이 어떤 이득을 얻을 수 있을까?
나는 개발자인 동시에 현대인으로 살아가면서 프로그래밍을 통해 다음과 같은 장점을 얻었다.
업무의 자동화가 가능하다
어떻게 보면 가장 유형(有形)의 장점일 것이다. 서비스 직종을 제외한 임금 노동자, 전문직, 학생등 대부분의 일반인들은 컴퓨터로 업무를 본다. 그들이 수행하는 업무들은 반복되는 작업들을 포함한다. 그런 단순 업무들을 코딩을 이용해 자동화할 수 있다. 많은 개발자들은 반복되는 코드나 데이터는 좋지 않다는 것을 본능적으로 체득하고 있다. (DRY원칙)
이런 예들은 실제로 많은 도메인에 걸쳐서 발견된다. 내가 발견한 예중 하나는 회계팀에서 각종 매크로를 사용해 비용이 자동적으로 계산되고 검증까지 수행해주는 특정 양식의 엑셀을 제공하는 것이다. 이는 빌 게이츠가 이야기한 인재 채용의 원칙과도 맞닿아 있다. ‘힘든일은 게으름 사람에게 시킨다. 그들은 쉽고 빠르고 편한 방식을 찾아낸다’. 실제로 나도 동료로 게으른 사람을 선호한다. 그들은 동일한 업무를 반복하지 않고 도구나 자동화를 사용해 일을 해결하고, 뒤에 다른 사람들이 똑같은일을 반복하지 않도록 하기 때문이다.
논리적으로 사고할 수 있는 능력을 키워준다.
컴퓨터는 기본적으로 수학과 과학으로 움직이는 커다란 계산기이다. 비논리적인 사고가 끼어틀 틈은 없다. 컴퓨터에서 생기는 버그들은 모드 그 원인과 결과가 명확히 존재하며 그것을 통제하지 못한 사람과 시스템에게 그 책임이 있다.
정치적으로도 IT직종 인력들이 대체적으로 진보적인 사고를 가지고 리버럴(liberal)의 영역에 가까운 것은 익히 알려진 사실이다. 보수나 진보의 옳고 그름을 떠나서 그들이 성장해온 토양과(오픈소스) 일하는 회사들의 기업문화등을 고려했을 때 당연한 결과이다.
과거에는 자연과 종교에 대한 피상적인 해석들이 자연을 이해하고자 하는 인간들을 가로 막았지만 이제는 그런 장애물 들은 존재하지 않는다. 코딩을 배우게 되면 절대적인 지식은 존재하지 않으며 본인의 무지에는 끝이 없다는 과거 과학자들의 마음을 배우는 것이 가능하다.
추상화에 능해진다
추상의 개념은 무었인가? 여러가지 사물에서 공통되는 개념들을 추출해내는 능력이다. 날이 갈수록 복잡해지는 현대사회에서 핵심을 꽤뚫어 보는 능력은 매우 중요하다고 할 수 있다.
컴퓨터는 계층화된(Layered) 구조를 가지고 있어서 하부의 구조들에 신경쓰지 않고 현재 업무에 집중할 수 있는 추상화의 개념은 매우 중요하다. 그렇기 때문에 개발자는 습관적으로 추상화를 수행하는데 그렇지 않고서는 전체의 시스템을 다 이해하는 일은 천재에 가까운 한두명을 제외하고는 불가능에 가깝기 때문이다.
코딩을 배우게 되면 자연스럽게 하위의 복잡성은 무시하고 현재 문제 영역에서 관심을 가지고 있는 해결방법에만 집중할 수 있도록 도와준다.
일반인들의 모든 문제 해결에 이와같은 추상화가 적용될 수는 없겠으나 문제의 본질과 그 해결방법에 신속하게 도달하기 위해서는 추상화가 꼭 필요한 능력이라고 볼 수 있다.