문제는 알고리즘이다
수만 명의 회원이 가입한 생활코딩이라는 페이스북 그룹이 있다. 나도 최근에 회원으로 가입했는데, 여러 가지 포스팅 중에서 간혹 알고리즘에 대한 질문이 올라오는 것을 보게 된다. “프로그래밍을 하려면 알고리즘을 꼭 알아야 하나요?” “개발자에게 알고리즘은 얼마나 중요한가요?” 이와 같은 내용의 질문이다.
알고리즘이라고 하면 병합정렬, 그래프검색, 동적프로그래밍 등과 같이 구체적인 ‘알고리즘’을 떠올리는 경우가 일반적이다. 아마 질문을 올린 사람도 그런 알고리즘을 염두가 두었을 것이다. 그렇기 때문에 위의 질문을 “PHP로 웹사이트를 개발하고 있는데 반드시 병합정렬을 알아야 하나요?”처럼 좁은 의미로 해석하면 대답하기가 쉽다. 웹사이트를 개발하기 위해서 꼭 병합정렬을 알아야 할 필요는 없기 때문이다.
그렇지만 우리가 이야기하는 알고리즘이라는 것이 그렇게 특정한 ‘알고리즘’을 모아놓은 것을 의미할까. 이 부분이 핵심이다. 제대로 된 답을 구하려면 우선 질문을 제대로 구성하는 것이 중요하다. 메리엄-웹스터 사전에 나와 있는 알고리즘의 정의를 살펴보자.
“a set of steps that are followed in order to solve a mathematical problem or to complete a computer process”
수학적인 문제를 해결하거나 컴퓨터 프로세스를 완결하기 위해서 차례로 뒤따르는 단계의 집합. 이게 알고리즘이다. 여기에서 “단계의 집합”은 “규칙의 집합”이라고 바꿔 불러도 좋을 것이다. 이러한 정의에 따르면 알고리즘은 어떤 문제를 해결하기 위해서 필요한 규칙을 이해하고 그러한 규칙을 단계별로 적용해서 문제를 해결하는 것을 의미한다.
다시 질문으로 되돌아가보자. “프로그래밍을 하려면 규칙을 이해하고 그런 규칙을 단계별로 적용하는 능력이 반드시 필요한가요?” 혹은 “개발자에게 규칙을 이해하고 그런 규칙을 적용해서 문제를 해결하는 능력은 얼마나 중요한가요?” 질문을 이렇게 바꾸면 질문 자체가 성립하지 않는다는 사실을 알게 된다. 왜냐하면 “규칙을 이해하고 그런 규칙을 적용해서 문제를 해결하는 것”이 바로 프로그래밍이기 때문이다.
올초 지디넷코리아에 실렸던'컴공 전공자가 왜 SW 개발을 못하나'라는 기사가 개발자 사이에서 잠시 회자되었다. 컴퓨터 공학을 전공한 졸업생들이 회사에 취업했을 때 회사가 원하는 수준의 코딩 실력을 갖추지 못하는 현실을 지적한 내용이었다. 컴공을 전공한 학생이 대학을 졸업하서 코딩을 하지 못하면 확실히 문제다. 하지만 ‘코딩’이 특정 회사가 요구하는 특정 플랫폼, 특정 언어, 특정 API에 대한 내용이면 이야기가 달라진다.
대학은 학원이 아니기 때문이다. 대학에서 학생들이 배워야 하는 것은 특정한 API를 다루는 ‘코딩’ 능력이 아니라 주어진 문제를 해결하기 위해서 규칙을 이해하고 규칙을 단계별로 적용해서 문제를 해결하는 능력이다. 즉, 코딩이 아니라 알고리즘이다. 코딩은 알고리즘이라는 능력이 겉으로 드러나는 여러 가지 방식의 하나일 뿐이다. 코딩은 외공이고 알고리즘은 내공이다.
그렇기 때문에 대학은 학생들에게 코딩 능력이 아니라, 문제를 해결할 수 있는 능력, 즉 알고리즘 능력을 길러주는 방법을 고민해야 한다. 살에 새긴 문신 같은 코딩 능력은 MOOC, 학원, 스터디 그룹 등을 통해서 필요할 때 얼마든지 배울 수 있다. 지울 수도 있다. 하지만 뼈에 녹아들어 나와 한 몸이 되는 알고리즘 능력은 그 자체로 프로그래머의 정체성을 규정한다. 그렇기 때문에 배워야 하는 시기가 따로 있다. 시기를 놓치면 익히기 어렵다.
요즘처럼 기술변화의 속도가 빠른 시대에는 특정 기술, 플랫폼, 언어, API에 종속되는 코딩 기술의 가치가 전보다 크지 않다. 오히려 낡은 기술을 버리고 새로운 기술을 재빨리 익히는 능력이 중요하다. 전투기의 생명이 빠르게 방향을 전환하는 기동성(maneuverability)에 달려 있는 것처럼, 프로그래머의 생명도 방향전환 능력에 달려있다. 알고리즘은 그러한 방향전환을 가능하게 만들어주는 일종의 “메타-능력”이다.
그래서 미국의 IT 회사들은 (특별한 경우를 제외하면) 특정 기술이나 API에 정통한 사람을 찾지 않는다. 기본적인 능력(문제를 해결할 수 있는 능력, 즉 알고리즘)을 갖춘 상태에서 새로운 기술을 빠르게 습득해서 활용할 수 있는 사람을 찾는다. 이런 면들을 생각해보면 실리콘밸리라는 미국드라마에서 해커 느낌이 풍기는 보안전문가와 자바전문가가 아니라 파일을 압축하는 ‘알고리즘’을 개발한 사람을 주인공으로 배치한 것은 우연이 아니었을 것이다.
프로그래밍이라는 기술은 이렇게 알고리즘이라는 세포로 이루어져 있다. 그리고 알고리즘이라는 세포의 내부에 존재하는 DNA는 논리다. 만사에 논리적인 사람은 좋은 코드를 작성하지만, 논리적 사고가 결핍되어 있는 사람은 아무리 열심히 ‘코딩’을 배워도 좋은 코드를 작성하지 못한다. 다시 질문으로 되돌아가보자.
“프로그래밍을 하려면 알고리즘을 꼭 알아야 하나요?” “개발자에게 알고리즘은 얼마나 중요한가요?”
이제 질문의 의미를 정확하게 이해할 수 있게 되었으므로 대답을 할 수 있다. 그렇다. 프로그래밍을 하려면 알고리즘이라는 메타 능력이 반드시 있어야 한다. 알고리즘이 얼마나 중요한가하면 프로그래밍 그 자체라고 말할 수 있을 정도로 중요하다. 문제는 알고리즘이다.
-
정년까지 롱런하는 인재들의 특징 5
LG경제연구원에서 발간한 보고서 <정년까지 롱런하는 인재들의 특징>을 요약한 글입니다. 40~60세를 일컫는 중년들은 힘든 처지에 놓여 있다. 청춘을 바친 직장에서 언제 나가야할지 모르는 불안감에 휩싸여 있고 점점 버거운 가정 지출, 은퇴후의 삶, 자녀의 ... -
도굴이 불가능한 조선왕릉
도굴꾼이 관까지 가지도 못하고 파다 포기 함 ㅋㅋ 그래서 실험을 해봤더니 중장비로 깨야 할 정도로 탄탄함. -
No Image
SpaceGlasses are the future of computing
이거 대박.. 이미 판매되고 있다네.. ㅠㅠ -
미국 15세 소년의 징역 25년 사연
15세 소년이 유튜브로 게임 방송하던 FPS 게이머를 테러리스트라며 경찰에 신고 경찰 특공대인 SWAT팀이 출동하고 집에서 게임 방송하던 게이머는 체포됨 경찰 조사 결과 장난전화라는 것이 밝혀짐 이 소년은 이미 비슷한 장난을 친 경력이 있음 판사는 연방 ... -
인공지능.. 진짜 이런 날이 가까웠는지도..
이러다 인공지능이 사람의 지능을 뛰어 넘는거 아닌가? 그러면 전문가들은 이렇게 말한다. - 사람의 지능을 능가하려면 아직 멀었다고.. - 특정 분야에 국한된 지능이라고.. 하지만 로봇은 이렇게 생각하지 않을까? -
Trigger Words란? 클릭·전환을 유도하는 단어
trigger words에 의한 전환률 28% 증가 사례split test를 통해 trigger word를 발굴, 전환률을 끌어올린 사례입니다. 원본 – 전환률 14.5% 대안본 – 전환률 18.6% https://vwo.com/blog/ab-test-case-study-how-two-magical-words-increased-conversion-rate-b... -
안철수가 지운 구의역 스크린도어 사고 희생자 관련 트윗이 정말 최악인 이유
안철수 국민의당 상임공동대표의 트윗 하나가 논란에 휩싸였다. 그는 30일 밤, 서울 지하철 2호선 구의역에서 스크린도어 수리작업 도중 숨진 노동자 A씨(19)를 언급하며 트윗 세 개를 올렸다. 9시49분에 올라온 첫 번째 트윗에는 큰 문제가 없었다. 문제는 그... -
여름에 물놀이 하면 안될 이유
알고 있었지만 숫자로 표현해주니 대박.. 수영장 물은 염소로 소독하는데.. 염소가 땀,소변,대변과 반응하면 해로운 산염화질소 생성 수영장의 코를 찌르는 소독약 냄새가 그것. (알레르기성 천식, 호흡곤란 증상 유발) 깨끗한 수영장 소독 물에서는 아무런 냄... -
감정 표현도 대물림…버럭 부모가 욱하는 아이 만든다
지난 1일 대전의 한 아파트 엘리베이터에서 열여섯 살 A군이 함께 타고 있던 20대 여성을 갑자기 돌로 때려 크게 다치게 한 사건이 발생했다. A군은 경찰 조사에서 후배들이 말을 안 들어 화가 나서 생면부지의 여성을 때렸다고 진술했다. 10일 울산에 사는 40... -
먹음직스러운 음식 광고 속 진실..
맛있게 보일려고 이렇게.. ㅡㅡ;; 그래서 작은 글씨로 제품은 이미지와 다를 수 있습니다! 라고 써있구나.. -
자기 암시
한 청년이 등반하고 있었습니다. 한참을 오르던 청년은 숨이 차고 갈증이 나던 찰나 계곡에서 떨어지는 폭포 밑에 웅덩이를 발견하게 됐습니다. 벌컥벌컥, 꿀맛 같은 폭포물을 들이킨 후 몸을 돌리는 순간, 청년의 눈에 팻말 하나가 들어왔습니다. [Poison] ... -
잠이 많은 아기 다람쥐
BBC 야생다큐팀 소속의 어떤 스텝이 길에 쓰러진 아기 다람쥐를 구했는데, 다른 다람쥐들 보다 잠이 훨씬 많아서 늘~ 잠에 취해 있다 함 ㅋㅋ