제발 부탁이니까 프로그래밍은 배우지 마라~ 일반 S/W관련



편집자 주:이 원고를 쓴 Basel Farag는 iOS Engineer다. (라고 본인은 생각한다). GPU 프로세서, 로봇, AI 등에 대한 흥미를 갖고 있으며 아울러 컴퓨터 사이언스, 천문학, 철학에 관심을 갖고 있다. 과거에 그는 「the Draft Punk of people」라고 불렸다. 그는 이 말이 무슨 의미인지 이해하고 있지 않지만 칭찬하는 말이라고 생각한다. 

 

 최근의 인터넷 업계에는 모든 사람이 프로그래밍을 배워야 한다는 사고 방식이 확산되고 있다. 그러나 이 사고 방식에는 문제가 있다. 프로그래밍은 읽고 쓰는 능력과 같은 필수 스킬은 아니다. 

실리콘밸리의 문화적인 속임수에 주목하는 사람이라면 「Learn to Code」라는 무브먼트를 들은 적이 있을 것이다. 정치가, Code.org와 같은 비영리단체 그리고 뉴욕시의 전 시장인 Michael Bloomberg에 이르기까지, 그들은 프로그래밍이 내일의 노동자가 가져야 할 스킬이라고 전도해 왔다. 

미국의 엔지니어에 대한 지속적인 수요를 감안한다면 이러한 흐름은 반드시 잘못된 것은 아닐 수도 있다.  

그러나 여기에는 더 복잡한 문제가 존재한다. 

우리가 사는 세상은 모든 사람들이 겨우겨우 먹고 사는 엄청난 경쟁사회이다. 그런 상황에서 사람들에게 프로그래밍 학습을 경제적인 구원책으로 제시하는 것은 정직하지 못하다.  

코딩 부트 캠프를 예로 들어 보자. 많은 사람들이 실리콘밸리의 엔지니어가 성공하는 모습을 보곤 창업을 하거나 엔지니어가 되고 싶어한다. HBO의 드라마 「Silicon Valley」에서는 20대의 젊은이가 프로그래밍을 하고 대마초를 피우면서 수백만 달러의 돈을 버는 모습이 묘사된다. 미국인들은 하룻밤 사이에 수백만 달러의 자산을 구축하는 것처럼 보이는 Elon Musk나 Mark Zuckerberg 등의 사람들에게 경탄한다. 프로그래밍에 대한 열기는 백악관까지 퍼진 것 같다. 오바마 대통령은 모든 공립학교의 커리큘럼에 컴퓨터 사이언스 수업을 도입하려 하고 있다. 

당혹스럽게도 부트 캠프뿐만 아니라 정치가들까지 사람들에게 프로그래밍을 추천하고 있다. 

할리우드부터 IT업계의 유명 인사들까지 모든 사람들이 열심히 프로그래밍 학습을 장려하고 있다. 그러한 흐름에 거스르는 것 같지만 나는 코딩 부트 캠프에 대해서 회의적인 시각을 갖고 있다.  우리 사회는 실리콘밸리를 매력적으로 포장했고 부트 캠프의 광택나는 소개서를 보면 졸업한 후에 높은 급여를 받을 수 있는 자리에 취직할 수 있다는 내용이 나온다. 하지만 현실적으로는 여러  훈련 기관들은 어떠한 인정도 받지 않았고 졸업 후의 취직에 관한 통계 자료를 공표하고 있지 않다. 졸업 후의 성공은 보장된 것이 아니다. 제대로 된 프로그래머를 육성하는 기관도 있고 정말로 학생을 배려하는 곳도 많다. 하지만 그 이상으로 많은 수의 기관은 사기꾼들이 사람들의 애타는 마음을 이용하여 운영되는 곳이다.  

오해는 하지 마시라. 나도 엔지니어링이나 프로그래밍이 중요한 스킬이라고는 생각한다. 그러나 그것은 특정한 상황에서만 중요한 것이며 성공을 위해 심혈을 기울일 의사가 있는 사람에게만 중요한 것이다. 이것은 다른 스킬에 대해서도 할 수 있는 말이다. 나는 사람들에게 측량 기술과 프로그래밍을 프로그래밍을 동일한 빈도로 추천한다.  

프로그래밍이 주목받게 되자 문제를 이해하는 것보다도 그것을  「올바른 방법으로」 해결하는가에 무게가 놓여지게 되었다. 

나는 사람들에게 측량 기술과 프로그래밍을 동일한 빈도로 추천한다. 

프로그래밍을 하면서 어떠한 문제에 임할 때 우선 우리들은 그 문제가 무엇인가, 그리고 그것이 정말로 해결해야 할 문제인가를 확인해야 한다. 그 문제가 정말로 프로그래밍으로 해결할 수 있는 문제인가 아닌가를 고려하지 않고 프로그래밍으로 해결하는 것에 고집하고 「왜 문제인가」라는 시점을 잃어버리면 거기서부터 우리는 아무것도 얻을 수 없다. 그것이 프로그래밍으로 해결할 수 있는 문제든 아니든 말이다. 

스탠포드 출신의 내 친구는 Association for Computing Machinary International Collegiate Programming Contest의 우승자이다. 그가 내게 ACM 챔피언십에 관해서 말해 준 것은 해결하려는 문제를 이해하는 중요성이다. 

당신은 자기자신에게「정말로 문제가 존재하는가」 그리고 「그 문제에 파인먼/터프트의 원리를 응용할 수 있는가. 그것을 타인이 이해할 수 있도록 설명할 수 있는가」라는 질문을 해야 한다. 

그는 대부분의 명문교의 학생들도 문제의 요강을 슬쩍 읽고 금방 코딩을 시작한다고 말한다. 

그는 챔피언십에서 우승한 해에 한 가지 중요한 것을 배웠다. 똑똑한 엘리트조차 「코드」라는 한 가지 무기만 갖고 복잡한 문제를 해결하느라고 머리를 처박는다는 것을 말이다.  

한편 내 친구는 문제를 철저하게 이해한 후에야 비로소 코딩을 시작했다. 문제를 해결하는 것 자체에 주어진 시간의 대부분을 할애한 것이다. 그는 마감 시간을 불과 몇 분 앞두고 프로그래밍을 시작했다. 

그는 챔피언이 되었다. 

그는 프로그램을 입력하는 것 자체는 문제 해결의 수단이 아니라는 것을 알고 있었다. 냉정하고 침착하게 문제를 해결하는 능력이야말로 말 그대로 문제를 해결하는 수단이 될 수 있다. 

지나치게 프로그래밍을 장려하는 것은 현재 개발자들의 어려운 상황을 무시하는 것이다.

테크놀로지는 엄청난 속도로 변화하고 있다. 

불과 몇 년 전까지 나는 Objective-C를 사용했었다. 그러나 요즘 내가 건드린 대부분의 프로그래은 Swift로 작성된 것이다. iOS 개발자 지망생 중에는 지금까지 Objective-C 코드를 한 줄도 코딩한 적이 없는 사람도 있다. Swift는 배우기 쉽고 안전하며 모던한 개발 패러다임을 가졌으며, Objective-C에는 없는 우아함을 갖고 있다. 새로운 개발자들이 Objective-C 고유의 불완전함에 대처할 필요 없다는 것은 좋은 일이다. 하지만 이것은 프로그래머라는 직업이 갖는 현실을 무시하고 있다. 

실리콘밸리의 로망스에 흠뻑 빠져있는 동안에도 현실을 직시해야 한다.

개발자들은 설사 레퍼런스가 부족하더라도 재빨리 배워야 한다. 이는 해고 통지에 대한 공포에서 비롯된 것이다. 이 직업에서 성공하기 위한 비용에 불과하다고 주장하는 사람도 있을 것이다. 그러나 만일 현직에 있는 개발자들이 좌절하고 뒤쳐지고 있는 현실이 존재한다면, 그리고 그에 대한 증거가 있다고 한다면 왜 우리들은 사람들에게 프로그래머가 되라고 권하고 있을까?  

밤낮으로 Objective-C를 배웠다가 WWDC 2014에서 Swift가 발표되는 모습을 보고 아연실색했던 사람들은 어떻게 되는 걸까? 그들은 애매한 상황에 놓인 언어로 계속 프로그래밍을 할까? 아니면 다시 처음부터 다시 공부할까? 20대의 젊은 프로그래머 입장에서는 이것은 그리 큰 문제는 아닐 수도 있다. 그러나 매달 납부해야 할 고지서가 한 가득 있고, 가족을 부양해야 하는 사람 입장에서는 처음부터 다시 배우기란 무척 험난한 일이다.  

프로그래밍 언어는 매일같이 발전하고 있고 그들은 그러한 상황 자체도 이해하지 못하고 어려운 문제에 직면하게 된다.  

프로그래밍을 학습하는것과 프로그래밍으로 먹고 사는 것 사이에는 높은 벽이 있다. 

정말 그렇다.  

프리랜서가 되어 일을 따내기까지 난 1년 동안 독학했다. 그 후에도 급여는 쥐꼬리만했다. 컴퓨터 사이언스 학위를 갖고 있지 않다는 이유에서 면접조차 받을 수 없는 경우도 있었다.   

예산에 맞는 집을 찾지 못해서 친절한 친구의 신세를 질 수 밖에 없었다. 몇 번이나 포기하려고 생각하면서도 밤을 새웠다. 그러면서 계속 나아가기 위한 위한 힘을 익혔다. 

나의 끈기는 그 당시의 내게 힘이 되어 주었고 지금도 나를 이 바닥에 머물게 해주고 있다. 

인턴 개발자조차 되기 힘든 것이 이 업계의 현실이다. 자리를 얻기 위해서는 연줄이나 추천인, 잘 관리된 GitHub 계정이 필요하다. 평등한 기회가 확산되고 있다. 그럼에도 불구하고 만일 이 업계에서 당신이 과소평가당한 마이너리티에 속하고 있다면 다른 사람보다 2배 이상 능력이 있어야 한다. 단순히 능력을 드러내기 위해서만도 말이다. 


내가 아는 한, 당신은 그들의 방식에 따르는 수 밖에 없다. 상황이 불공평하더라도 말이다.  문지기는 곳곳에 존재한다. 그들은 아이비리그의 졸업생이며 「어떻게 바이너리 트리를 반전시킵니까?」라는 질문이 개인의 기술적인 능력을 측정하는 척도가 된다고 믿는 사람들이다. 그들은 화이트보드・테스트에 홀린 프로젝트 매니저들이며 (고백:나도 여러 개의 화이트보드를 갖고 있다)모집 요강에 「5년간의 Swift 프로그래밍 경험이 필수」라고 적는 무식한 인사 매니저들이다. (힌트:Swift가 출시된 것은 2014년)좋든 나쁘든 제대로 된 일자리와 당신 사이에는 이러한 사람들이 막고 서있다.  

마치며

만일 엔지니어가 되고 싶다면 그 누구의 방해도 개의치 마시라. 그리고 교육 시스템과 같은 전통적인 제도때문에 꿈을 향해서 돌진하는 속도를 늦춰선 안 된다. 꿈을 이루는 여정에는 올바른 길도 잘못된 길도 없다.

그러나 실리콘밸리의 로망스에 흠뻑 빠져 있는 동안에도 현실을 직시해야 한다. 이 업계는 당신의 부채를 없애주는 마법의 카드는 아니다. 시간을 들여서 이 업계를 깊게 이해해야 한다. 당신은 단순한 「프레임워크를 적용하기」만 하는 개발자가 아니라 문제 해결자라는 사실을 받아들여야 한다. 새로운 프레임워크나 언어를 배워야 할 때가 올지도 모른다는 것, 정식 자격이 없으면 일자리를 얻기 위해 싸워야 한다고 각오하라. 

소프트웨어 엔지니어링은 많은 돈을 벌 수 있는 직업이다. 하지만 「코더」에서 「엔지니어」로 발전하기는 쉽지 않다.  

만일 당신이 힘내서 버틴다면 당신의 인생은 달라질 것이고 사물에 대한 사고방식도 바뀔 것이다.  

[原文]

(翻訳: 木村 拓哉 /website /Twitter /Facebook


덧글

  • 리퍼 2016/05/18 23:03 # 답글

    견딜 수 있는 사람이 아니면 프로그래머를 하지 않는게(...)
  • 자유로운 2016/05/19 00:26 # 답글

    분야는 다르지만 통하는 것들이 다 있네요. 번역글 보면서 많이 배웁니다.
  • 푸른별출장자 2016/05/19 00:35 # 답글

    저도 소프트웨어를 배웠고 좀 짰지만 그 바닥에 놀기에는 머리가 나쁘고 또 아날로그 세상이 좋아서 하드웨어 쪽 일을 합니다. (옛날은 전기-전자 구분이 없어서 강전과 약전으로 나뉘었고... 그 뒤로 한 동안 전자과는 두루두루 다 배웠다는)

    소프트웨어도 좋고 코딩도 좋은 일이긴 한데

    그 보다는 문제를 분석하고 해결책을 찾는 로직을 먼저 배워야 하지 않을까 싶다는...
  • Heb614 2016/05/19 03:31 # 답글

    한국이나 미국이나 사람사은곳은 다들 비슷하구낭!!
  • 따뜻한 허스키 2016/05/19 07:18 # 답글

    잘보고 갑니당!!ㅎㅎ
  • 존다리안 2016/05/19 13:48 # 답글

    늦깍이로나마 배웠고 그걸로 먹고 살 궁리를 하는 중인데 저렇게 말한다면 나도 걱정이네요.
  • 산오리 2016/05/19 21:14 # 답글

    이번에도 일본 쪽에서 번역 좀 이상하게 한 것 같네요.
    "나는 사람들에게 측량 기술과 프로그래밍을 프로그래밍을 동일한 빈도로 추천한다."라고 번역된 문장의 영어 원문을 찾아보니
    "I would no more urge everyone to learn to program than I would urge everyone to learn to plumb."이네요.
    제가 번역한다면 "나는 사람들에게 프로그래밍을 공부하라고 강요하기 보다는 들이 파는 방법을 공부하라고 강요할 것이다."라고 할 것 같습니다.

    (plumb이 배관공(plumber)와 연관이 되는 것 같기는 한데 앞뒤 문맥을 볼 때 Oxford 영어사전의 해석대로 깊이 파헤치는 것을 말하는 것 같습니다.
    참고: http://endic.naver.com/enkrEntry.nhn?sLn=kr&entryId=8b87d3fc8c3e45cca1c9ffb654888bd1 )

    뒤에 Feynmann이 나와서 양자역학 이야기인줄 알고 관측(observation) 측면에서 측량 기술로 초월 번역한 것 같은데,
    Feynman-Tufte Principle이라는 것은 "(속이 아무리 복잡해도) 설명이 간단해야 의미가 있다"는 뜻으로 보입니다.
    원문은 "A visual display of data should be simple enough to fit on the side of a van."
    실제 구현예는 http://www.edwardtufte.com/bboard/images/0003oo-17195/Page9.jpg
    (Feynman Diagram을 아는 사람이 과연 몇이나... 사실 알 필요도 없고...)
  • isao 2016/05/19 21:54 #

    重譯의 弊害 정도로 생각해 주시면 감사하겠습니다....
  • 키토산 2016/07/07 19:59 # 삭제

    글쎄..plumb가 명사로 씌였는데 옥스포드에 타동사 문예체로 '들이파다' 있는거 하나 보고서
    '이건 깊이 파헤치다라는 뜻으로 쓰인거네요'라고 단정하는 거보니 영어를 썩 잘하는 것 같진 않아뵙니다만?

    문맥을 보아도 "나는 사람들에게 측량 기술과 프로그래밍을 프로그래밍을 동일한 빈도로 추천한다."이 제대로 한 번역이네요.
    측량기술이라고 번역한 것도 초월번역이 아니라, 엄연히 수심측량이라는 뜻이 있고요

    잘 모르면서 태클거는 리플이 매우 별로네요. 심지어 오역의 이유를 찾는답시고 상상의 나래(?)를 펼쳐나는 것도 심히 재수없음..
  • ㅁㅁ 2018/11/18 10:14 # 삭제

    원래 뜨억들이 그럼 ㅋㅋ
댓글 입력 영역



통계 위젯 (블랙)

29213
1338
4546766

이 이글루를 링크한 사람 (블랙)

612