왜 모든 사람들이 프로그래밍을 배워야 하는가?

18 분 소요

안녕하세요. 스쿨오브웹의 이상희입니다.

오늘은 왜 모든 사람들이 프로그래밍을 공부해야 하는지에 대해서 얘기해보도록 하겠습니다. 자녀분들의 능력 개발에 대해서 고민하시는 분들이나, 자신의 능력 개발에 대해서 고민하시는 분이라면 이 글을 끝까지 읽기를 바랍니다.

애플사의 창립자인 스티브잡스는 생전에 한 인터뷰에서 이런 말을 했습니다.

이 나라의 모든 사람은 프로그램을 공부해야한다. 프로그래밍은 생각하는 방법을 가르쳐주기 때문이다. 이것은 마치 법대에서 법을 공부하면 모든 사람들이 변호사가 되지는 못해도 생각하는 방법을 배우게되는 것과 마찬가지이다. 프로그래밍도 법을 공부하는 것과는 조금 다르지만 생각하는 방법을 가르쳐준다. 나는 컴퓨터 프로그래밍이 미술이나 역사와 같은 교양 과목으로 채택되어 모든 사람들이 최소한 1년 정도는 공부해야 한다고 생각한다.

위키피디아에서 말하는 프로그래밍의 정의는 다음과 같습니다.

컴퓨터 프로그래밍 또는 간단히 프로그래밍 혹은 코딩은 하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술을 말한다. 프로그래밍은 기법, 과학, 수학, 공학, 심리학적 속성들을 가지고 있다.

우리는 이 프로그래밍을 통해서 우리가 매일 매일 반복하는 작업이나 공정을 자동화하기도 하고, 자동으로 운행되는 자동차를 만들기도 하고, 우주를 왕복할 수 있는 우주 비행선을 만들기도 합니다. 지금 시청하고 계신 유튜브 또한 하나의 프로그램이고, 이제는 수없이 많은 프로그램이 우리의 생활의 일부가 되어서 프로그램이 없이는 단 하루도 살아갈 수가 없는 세상이 됐습니다. 쉬운 예로 길거리의 수많은 신호등, 매일 매일 보는 텔레비전, 항상 우리의 손에 꼭 쥐어져 있는 스마트폰, 심지어는 맛있는 밥을 만들어 주는 라이스쿠커까지도 프로그램으로 움직이고, 우리는 이것들이 없이는 하루도 생활을 할 수 없게 되었습니다.

이런 프로그램을 만드는 과정이나 행위를 프로그래밍이라고 합니다. 그런데 이 프로그래밍을 왜 모든 사람들이 배워야하는걸까요?

프로그래밍은 논리적인 사고방식과 문제 해결력을 길러줍니다.

우리가 산수와 수학을 배우는 것도 논리적인 생각과 문제 해결력을 키우기 위해서인데요, 프로그래밍을 배우면 산수나 수학을 공부하는 것과 같은 효과를 낼 수 있다고 합니다.

많은 사람들이 프로그래밍을 한다고 하면 하나의 프로그래밍 언어를 배우고 코딩을 하는 것만을 상상하는데요, 프로래밍 언어를 배우고 코딩을 하는것은 프로그래밍의 목적을 달성하기 위한 수단에 불과합니다. 프로그래밍의 궁긍적인 목적은 어떤 문제를 해결하는 것이고 프로그래밍을 한다는 것은 문제의 해결책을 찾는 행위라고 볼 수 있습니다. 이것은 우리가 일상생활에서 여러가지 문제에 직면하고 직면한 문제들을 해결하고자 노력하는것과 아주 비슷하다고 보시면 됩니다. 어떤 문제를 해결할 수 있는 답은 정해져 있지 않고 가장 효과적인 답을 찾기 위해서는 논리적인 생각을 해야 할 것입니다.

예를 들어 비만이라는 문제를 해결하기 위해서 해결책을 찾아야 한다고 가정해 보죠. 이 문제를 해결하기 위해서는 현재 자신의 가지고 있는 문제를 먼저 파악해야합니다. 즉 “내가 왜 살이 쪘을까?”와 같은 비만의 원인을 먼저 파악해야 하는것입니다. 식생활이 불규칙한지, 아니면 식사량이 운동량에 비해서 너무 많은지, 단 것을 너무 많이 먹는지는 않는지 등을 먼저 파악해야 합니다. 그리고 어떤 식으로 식사 조절을 할건지 어떤 운동을 어떻게 할건지 등 문제를 해결하기 위한 방법을 찾아내야합니다. 세상에는 셀 수도 없이 많은 다이어트 방법이 있을테고, 셀 수도 없이 많은 운동방법이 있을겁니다. 자신의 건강을 해치지 않고 생활 리듬을 깨지 않으면서도 빠른 시간안에 살을 뺄 수 있는 효과적인 방법을 찾아야하고 그렇게 하기 위해서 논리적인 사고가 꼭 필요하게 마련입니다.

프로그램을 만드는 것도 지금의 예와 아주 비슷합니다. 프로그램을 만들려면 먼저 내가 만들고자 하는 프로그램의 목적, 즉 내가 만들 프로그램을 통해서 어떤 문제를 해결해야 하는지를 정확히 판단해야 합니다. 그리고 그 문제를 해결하기 위한 효과적인 방법들을 논리적인 순서대로 나열하고 문서화한 뒤, 논리적으로 문서화된 생각을 코드로 구현해야 합니다. 이런 과정을 여러번 반복한다면 당연히 문제를 파악하는 능력과 문제를 효과적으로 해결할 수 있는 논리적인 사고방식이 길러질거라고 생각합니다.

프로그래밍은 상상력과 창의력을 길러줍니다.

초등학교에서 학생들의 상상력과 창의력을 키워주기 위해서 국어 시간에 글짓기를 시키거나 미술 시간에 그림, 조소등을 시킵니다.

프로그램을 만들기 위해서는 단순히 코딩만 하면 되는게 아니라 글짓기나 그림 그리기와 같이 남들이 생각하지 못했던 자신만의 아이디어를 만들어 내기위해 끝임없이 생각하고 상상해야 합니다. 좋은 프로그램을 만들기 위해서는 풍부한 상상력과 창의력이 필요하게 마련입니다. 그래서 코딩 기술이 뛰어나고 경력이 많은 개발자 보다 어린 학생들이 세상이 깜짝 놀랄만한 프로그램을 만들어내기도 하는 것입니다.

잘 알려진 예로 빌게이츠가 하버드 대학 재학중에 MS-DOS를 개발하여 마이크로 소프트를 창립하였고, 마크 저커버그 또한 하버드 재학시절에 패이스북을 개발하였습니다. 재일 교포로 유명한 소프트뱅크의 손정희 회장도 대학생 시절에 전자사전을 개발한 뒤, 이 특허를 샤프에 팔아서 남긴 이익으로 현재의 소프트뱅크를 세웠다고합니다.

프로그래밍은 문서를 만드는 능력과 문서를 관리하는 능력을 길러줍니다.

간단한 프로그램을 하나 만들더라도 제안서, 계획서, 설계서, 사양서, 메뉴얼 등 수없이 많은 문서를 만들고 관리해야 합니다. 물론 여러명이 자신의 분야를 정해서 분업을 하는 경우가 많지만 작은 프로젝트를 진행하다보면 모든 문서를 혼자서 만들고 관리해야하는 경우도 있습니다.

앞에서 말씀드린 문서 뿐만 아니라 코드 소스 또한 가장 중요한 문서 중에 하나입니다. 혼자서 개발을 하더라도 나중에 다른 개발자가 쉽게 이해하고 수정할 수 있도록 알기쉬운 주석을 달고, 코드가 변경 될때마다 버전 관리를 잘 하는 것 또한 좋은 문서관리 능력이라고 생각합니다. 좋은 문서관리 능력은 회사에서 가장 중요하게 여기는 직원의 능력중에 하나이고 사회생활을 하면서 어떤 필드에서도 잘 활용될거라고 생각합니다.

프로그래밍은 협동력과 커뮤니케이션 능력을 길러줍니다.

프로그램을 만드는 프로젝트를 시작하면 보통 여러명이 자신의 파트를 정하고 협업을 하게됩니다. 다른 개발자에게 자신의 생각을 표현하고 상대방의 의견을 들어주는 커뮤니케이션 스킬은 프로그램을 만드는 개발과정에 있어서 아주 중요한 부분을 차지합니다. 따라서 여러번 개발 프로젝트를 반복하면 커뮤니케이션 스킬이 자연스럽게 향상되게 마련입니다. 회사생활을 하거나 자신의 비지니스를 하더라도 대부분의 업무가 다른 사람과의 협업으로 이루어지고, 이때 얼마나 좋은 커뮤니케이션 스킬을 가지고 얼마나 조화로운 협업을 할 수 있는지는 자신의 회사생활이나 비지니스에 큰 영향을 줄 거라고 생각합니다.

저는 개인적으로 프로그래밍을 하는데 있어서 가장 중요하다고 생각되는 스킬은 앞에서 말씀드린 세번째와 네번째 이유인 문서 관리 능력과 커뮤니케이션 능력이라고 생각합니다.

프로그래밍 스킬은 더 이상 개발자들만의 기술이 아닙니다.

이제는 의학, 생물학, 물리학, 수학 분야에서 프로그래밍이 널리 사용되고 있습니다. 특히 파이썬은 데이터 분석과 데이터 시각화를 목적으로 여러 분야에서 비개발자들에게 많은 사랑을 받고 있습니다.

개발자가 아니어도 프로그래밍 스킬을 가지고 있으면 자기의 분야에서 프로그래밍 스킬을 사용하여 자신의 경쟁력을 높이고 업무의 퍼포먼스를 향상 시킬 수 있을 것입니다. 예를 들어 회사 동료들이 매주 수작업으로 만드는 엑셀 보고서나 파워포인트 보고서를 버튼 하나만 누르면 자동으로 만들어주는 프로그램을 만들거나, 하루 종일 걸려야 끝나는 데이터분석을 단 5분만에 끝내주는 프로그램을 만든다면 회사에 인정 받는 것은 물론이고 동료들에게도 많은 인기를 얻을 수 있다고 생각합니다.

이 밖에도 전문 개발자가 아니더라도 모든 사람들이 프로그래밍을 배워야 하는 다른 이유는 아주 많다고 생각합니다. 지금부터 프로그래밍을 시작하시거나 자녀분들에게 프로그래밍을 가르쳐 직접 프로그래밍을 배워야하는 다른 이유를 찾아보시는건 어떨까요?