본문 바로가기

암묵지/추억의 책장 · 메모

[팟캐스트 나는 프로그래머다 2탄] 개발과 삶에 대한 나.프.다의 못다 한 이야기!

반응형



■ 본문 중에서


# 스탠바이 – 023p.

퍼즐이나 알고리즘 문제를 풀 때, 심지어 회사에서 어떤 문제를 해결하고자 할 때 이런 파괴와 창조는 유용하다. 미국에서는 보통 이런 걸 ‘상자 밖에서(out of box)’ 생각한다고 표현한다. 자기 머리가 유연하지 않다는 생각, ‘나는 왜 이런 문제를 풀지 못하지?’라는 생각이 드는 사람은 자기가 올해 읽은 시집이 몇 권인지 생각해보면 답이 나올 것이다. 아니, 시집의 권 수를 세는 것이 아니라 제대로 읽은 시가 몇 편인지 따져보아도 답이 나올 것이다.

상상이라는 말을 하는 사람은 많지만, 상상을 잘하기 위해서 노력하는 사람은 드물다. 하지만 상상을 하는 힘을 의미하는 상상력은 숨쉬고 밥을 먹으면 생기는 것이 아니다. 매일 헬스클럽에 다니는 사람의 배에 초콜렛 복근이 생기는 것처럼, 매일 시를 읽는 사람의 뇌에는 상상을 위한 복근이 생긴다. 시를 읽자. 심지어 좋은 시가 담아내는 고도의 추상은 객체지향이나 함수 패러다임이 포착하는 고도의 추상과 맥을 같이 한다. 매일 코드만 들여다보는 사람의 머리는 2차원이지만, 코딩을 하면서 시와 소설을 함께 읽는 사람의 머리는 3차원이다.

- 책에 심어놓은 5개의 뉭앙스 이야기 : http://www.snujn.com/news/18286



# 컴퓨터공학과의 인기 – 33-35p.

슈뢰딩거의 고양이는 우리가 상자를 여는 순간 삶과 죽음이 결정되지만, SI의 늪에서 고생하는 개발자 다수의 삶은 우리가 보지 않아도 존재한다. 무지막지한 하청구조의 결과로 육체적 생명을 담보잡힌 채 살아가는 그들의 삶은 관찰자의 유무와 상관없이 저기, 언제나 존재한다. 그들은 매일 마감일에 쫓기고, 야근에 시달리고, 박봉에 피눈물을 흘리고, 병원으로 실려가고, 학원 출신이라는 경멸 앞에서 고개를 숙인다. 판교의 개발자들이 노트북을 챙겨들고 커피전문점에서 코딩과 SNS를 즐기는 동안, SI 개발자들은 개발이라는 노동을 하며 시들어간다.

이러한 양극화가 심각한 이유는 간단하다. 판교의 개발자들이 꽃이면, SI개발자들은 흙이다. 흙이 비옥하지 않으면 꽃이 필 수 없다. 흙 없이 존재하는 꽃은 생명이 아니라 뿌리가 잘린 장식물에 불과하다. 수적으로 비교해도 그렇다. SI 개발자가 다수다. 프로그래밍을 공부하는 학생들 다수가 장차 취직을 하게 되는 곳은 판교가 아니라 SI라는 뜻이다. 따라서 SI 시장이 규제와 혁신을 통해서 변화하지 않으면 지금 불고 있는 컴퓨터공학과의 인기는 오래 갈 수 없다.

(중략)

미국에서는 소프트웨어 엔지니어라는 직업이 기본적으로 ‘좋은’ 직업으로 인식된다. 평균보다 높은 연봉, 좋은 복지, 유연한 근무 시간, 쉬운 이직. 구글이나 페이스북이 아니더라도 상관없다. 이름도 없고 작지만 훌륭한 회사가 즐비하다. 선택의 폭이 넓기 때문에 원하는 프로젝트를 고를 수 있는 여유도 있다. 연봉을 많이 받는 회사와 상대적으로 적게 받는 회사의 차이, 즐겁고 활기찬 회사와 느리고 지루한 회사의 차이는 있지만, 야근과 박봉에 시달리는 곳은 없다. 높낮이의 굴곡은 있을지언정 평균이 튼튼하고 강하다. 한국의 IT 시장이 지향해야 할 목표 지점도 이런 곳이어야 한다. 엘리트 개발자만 여유 있는 삶을 누리고 나머지는 고통받는 현실은 경쟁력을 갖추기도 어렵고 지속되기도 어렵다.



# 빅데이터와 스몰데이터 – 159p.

불변, 고계 함수, 커링 등 함수 패러다임에서 사용하는 개념들은 객체지향 패러다임을 사용하는 개발자에게도 그렇게 어렵지 않다. 그런데 그게 전부가 아니다. 카테고리 이론, 펑터, 모노이드, 모나드와 같은 괴상한 이름이 등장하면서 아직 함수 패러다임에 익숙하지 않은 사람들의 기를 눌리게 만든다. 그래서 실제로 미국에 있는 함수 개발자 중에서는 자성의 목소리가 터져나오기도 했다. 상대방이 모른다는 이유로 사실 자기도 모르는 걸 함부로 떠들지 말자.

자기도 정확하게 이해한 것이 아니면서 함부로 어려운 용어를 들먹이면서 함수 언어에 대한 진입장벽을 세우지 말자는 이야기다. 우리 업계에서는 불행하게도 그런 사람이 많다. 빅데이터나 머신러닝의 경우는 조금 다르다. 카테고리 이론이 잘난척하고 싶어 하는 개발자의 치기 때문에 언급된다고 하면, 빅데이터와 머신러닝은 기술적인 내용을 이해하지 못한 상태에서 자기 목적을 달성하려고 애쓰는 세일즈맨이나 언론에 의해서 의미가 확장되고 왜곡되는 경우에 해당한다. 단어 주변에 설탕과 밀가루가 잔뜩 묻은 채 부풀려져서 실제 의미에 접근하려는 사람의 발목을 붙잡는다.



# 머신러닝이란 – 167-168p.

영어에 ‘A on steroid’라는 표현이 있다. A는 A인데 그것이 스테로이드라는 약물을 복용했기 때문에 원래 A보다 더 강력한 무엇이 되었다는 의미다. 예를 들어서 스칼라 언어에 있는 패턴매치를 설명할 때 ‘Java switch on steroid’라는 표현이 흔히 사용된다. 자바에서 사용하는 스위치 구문과 비슷한데, 훨신 풍부하고 강력한 기능을 가지고 있다는 의미다.

개발자의 입장에서 보았을 때 머신러닝은 일종의 ‘알고리즘 on steroid’다. 흔히 하는 말로 약빤 알고리즘이다. 알고리즘이기 때문에 API만 있으면 코드 내부에서 쉽게 사용할 수 있지만, 약을 빨아들였기 때문에 기존 알고리즘보다 훨씬 강력하다.

기존 알고리즘에 비해서 강력해진 부분은 머신러닝 알고리즘은 동적이고, 피드백을 받으며 개선되어 나간다는 점이다. 기존의 알고리즘은 한번 작성되면 그것으로 끝이다. 나중에 다시 코드를 수정해서 개선하는 경우가 있긴 하지만 그건 알고리즘 자체가 변하는 경우를 의미한다. 머신러닝 알고리즘의 경우, 알고리즘은 그대로 있지만 알고리즘에게 적용되는 모델이 변한다. 모델은 수의 집합이다. 벡터로 불러도 좋고, 행렬이라고 불러도 좋다.




# NLP연구의 기초자산 – 말뭉치 – 186-187p.

요즘은 오픈소스와 인터넷의 발달로 개인이라고 해도 NLP에 대한 연구를 상당한 수준까지 진행할 수 있게 되었다. 다만 말뭉치의 경우 방대한 양의 텍스트에 대해 수작업으로 주석을 달아줘야 하는 관계로 개인이 만들기가 쉽지 않다. 이는 공개된 한글 말뭉치가 적은 것이 한글을 이용한 NLP 연구가 뒤쳐지게 되는 커다란 원인이 되고 있다.

일본의 경우 대학을 중심으로 여러 종류의 말뭉치가 공개되어 있으며, 위키피디아의 데이터를 이용한 명사 말뭉치도 꾸준하게 업데이트되어 공개되어 많은 NLP 연구자들이 편리하게 사용한다.

국내에 공개된 대표적인 한글 말뭉치로는 국립국어원에서 21세기 세종계획의 성과물로 내놓은 말뭉치가 있는데, 인터넷에 공개하지 않는 대신 학술 목적의 이용을 약속하면 CD 형태로 송부해준다. 문제는 이 말뭉치의 내부에 깨진 문자가 다수 존재한다든지 주석이나 태깅에 오류가 있다. 그래서 NLP 연구자가 사용하기엔 적지 않은 수고를 들여 수정해야만 사용이 가능하다. 개인적으로 국립국어원에서 하루빨리 이러한 문제점들을 인식하여 문제점을 보완해 깃허브와 같이 일반인들이 편리하게 접근할 수 있는 통로를 마련해 주었으면 하는 바램이다.




# 개발자와 알고리즘 – 214-215p.

http://www.zdnet.co.kr/column/column_view.asp?artice_id=20150622080223

대학에서 학생들이 배우는 것은 특정한 API를 다루는 ‘코딩’이 아니라 주어진 문제를 해결하기 위해서 규칙을 이해하고 (혹은 규칙을 정의하고!) 해당 규칙을 단계별로 적용해서 문제를 해결하는 능력이다. 다시 말해서 코딩이 아니라 알고리즘이다. 코딩이라는 것은 (우리가 앞에서 정의한 넓은 범위에서의) 알고리즘이 겉으로 드러나는 하나의 방식일 뿐이다. 즉, 코딩은 외공이고 알고리즘은 내공이다.


이런 이유 때문에 대학에서는 학생들에게 단편적인 코딩 능력이 아니라, 문제를 해결할 수 있는 능력, 즉 알고리즘을 길러줘야 한다. 코딩은 살에 새긴 문신과 같다. 내 몸의 일부지만 지우거나 덧칠할 수 있는 표면적인 존재다. 대학에서 배우지 않더라도 훗날 MOOC, 학원, 스터디그룹 등을 통해서 얼마든지 배울 수 있다. 하지만 뼈에 녹아서 나와 한 몸이 되는 알고리즘은 나와 분리할 수 없다. 그 자체로 내 프로그래밍 능력, 프로그래머로서의 정체성을 규정하는 화학적 구성물이다. 그래서 알고리즘은 배워야 하는 시기가 따로 있다. 시기를 놓치면 제대로 익히기 어렵다.


요즘처럼 기술 변화의 속도가 바른 시대에는 특정 기술, 플랫폼, 언어, API에 종속되는 코딩 기술의 가치가 전보다는 크지 않다. 오히려 낡은 기술을 버리고 새로운 기술을 익히는 능력이 더 중요하다. 전투기의 생명이 방향을 빠르게 전환하는 기동성(maneuverability)에 달려 있는 것처럼, 현대 프로그래머의 생명도 방향 전환 능력에 달려 있다. 알고리즘은 그런 방향 전환을 가능하게 만들어주는 일종의 ‘메타 능력’이다.


그래서 미국의 IT 회사들은 (특별히 예외적인 경우를 제외하면) 특정 기술이나 API에 정통한 사람을 찾지 않는다. 기본적인 능력, 즉 문제를 해결하는 알고리즘 능력을 갖춘 상태에서 새로운 기술을 빠르게 습득할 수 있는 사람을 찾는다. 앞에서 황금열쇠라고 표현한 것이 바로 이런 능력을 의미하는 것임은 다시 설명할 필요가 없다.


프로그래밍이라는 기술은 이렇게 알고리즘이라는 세포로 이루어져 잇다. 그리고 알고리즘이라는 세포 내부에 존재하는 DNA는 논리다. 일반적으로 논리적인 사람은 좋은 코드를 작성하지만, 논리적 사고가 결여되어 있는 사람은 아무리 열심히 ‘코딩’을 배워도 좋은 코드를 작성하지 못한다.

다시 질문으로 되돌아 가보자.

“프로그래밍을 하려면 알고리즘을 꼭 알아야 하는가?”

“개발자에게 알고리즘은 얼마나 중요한가?”

그렇다. 프로그래밍을 하려면 알고리즘을 반드시 알아야 하고, 개발자에게 알고리즘은 대단히 중요하다. 다른 답을 기대했던 사람에게는 미안하지만 프로그래밍을 하려면 알고리즘이라는 메타 능력이 필수적으로 요구된다. 알고리즘이라는 능력 없이 프로그래밍을 하려는 것은 한 수 이상 앞을 내다보지 못하는 사람이 바둑을 두는 것과 마찬가지다. 물에 뜨지 못하는 사람이 수영을 하려는 것이다. 프로그래밍은 알고리즘이다.



# 알고리즘은 개인기다 – 226p.

개발자에게 알고리즘은 축구선수에게 있어서 개인기와 같다. 개인기만 앞세우는 선수가 세계적인 선수가 되기는 어렵지만, 세계적인 선수 중에서 개인기가 부족한 사람은 없다. 박지성 선수가 맨체스터 유나이티드에서 활약할 때 호날두나 긱스 같은 선수와 비교해서 개인기가 부족하지 않은가 하는 비판을 받았는데, 설령 그렇다고 해도 그의 개인기는 이미 세계적인 수준에 도달해 있었다. 무슨 이야기인가 하면 훌륭한 회사에서, 훌륭한 프로젝트에서, 자신의 실력을 마음껏 과시하며 코딩에 열중할 수 있으려면 알고리즘에 대한 깊은 이해와 문제 해결 능력이 필수라는 뜻이다.

book.algospot.com



# 페이스북 개발자 해외 취업 그룹 – 284-285p.

http://www.moreagile.net/2014/08/it.html 

영어 공부의 다섯 가지 원칙

1. 사운드 퍼스트의 원칙 (Sound First) 

먼저 귀가 뚤려야 한다. 이해를 하지는 못하더라도 우선 말로서 들릴수 있어야 한다. 인간의 뇌는 소리에 대해서 필터링을 적용하여 언어와 그 외의 소리(노이즈)로 구분하여 처리하는데, 외국어에 대해서는 언어가 아닌 노이즈로 인식을 하게 된다. 귀를 뚫는데 있어서 저자가 제시한 포인트는 다음과 같다. 원어민의 발음에 최대한 가깝게 소리를 낼 수 있게 발음과 억양을 연습하는것이 맨 처음 이뤄져야 한다. 영어에 사용되는 음을 머저 이해하지 않으면 듣기도 읽기도 잘 늘지 않는다. 처음에는 의미를 이해하지 못하는게 당연하다. ‘음’에 대한 감을 단련해 두자. 


2. 다이렉트 이해의 원칙 (Direct Understanding)

영어를 번역해서 생각하지말고 영어 그대로 이해한다. 영어는 한국어로 1대1 번역이 불가능하다.


3. 스피킹중심의 원칙(Speaking Centered)

네이티브의 발음과 억양을 흉내내어 음독하는것은 영어를 유창하게 말하기 위한 초필살기이다. 단, 한국식 발음으로는 해 봤자 아무소용 없다. 반드시 네이티브의 발음을 최대한 흉내낼것!

음독시에는 스마트폰의 녹음기 기능등을 이용해 자신의 발음을 체크해보라.


4. 문맥이해의 원칙 (Contextual Experienced)

자잘한 단어나 문법이 아닌 전체적인 문맥으로서 대량의 문장을 이해하라. 단어도, 표현도 그 상황 안에서 의미를 파악해야 한다. 같은 상황에서 몇번이고 같은 표현을 마주함으로서 그 의미가 자연히 통하게 된다. 단어나 문법을 따로 공부할 필요는 없다. 그것보다 실생활의 영어를 대량으로 접해보자. 그러면 자연스럽게 몸에 익혀진다. 


5. 선택과 집중의 원칙(Choice and Focus)

영어는 크게 미국식과 영국식이 있어 어느쪽이든 선택해야만 한다. 자신이 주로 사용하고 싶은 쪽으로 타겟팅을 해서 그쪽 분야의 영어를 집중적으로 공략한다. 예를들면 저자는 애자일 개발이라는 분야를 목표로 해서 집중적으로 공부했다.


# 기획에서 테스트까지 – 322p.

www.quora.com에서 개발자들 사이에 마세라티 문제(https://www.quora.com/Whats-a-Maserati-Problem)가 논쟁이 되고 있다. 이탈리아 슈퍼카인 마세라티를 사기도 전에 마세라티를 사고 나서 생겨나는 문제를 고민한다는 것을 의미한다. 개발에 있어서도 이런 문제가 존재한다. 단순한 쇼핑몰과 웹 호스팅을 만들면 될 것을, 많은 개발자를 투입해 그보다 못한 서비스를 큰 비용으로 만드는 것이다. 마켓은 기다려주지 않는다. 성공할 타이밍을 놓칠 뿐만 아니라, 개발에 따른 스트레스도 날로 커진다. 장기간 개발의 끝에서 실패를 만난다. 전통적인 폭포수 모델이 이러하다.



# PC방 알바 – 373p.

냉정하게 보았을 때 김종민 게스트는 운이 좋았다. 타고난 재능과 멈추지 않는 노력이 밑바탕이 된 것은 의심할 여지가 없다. 하지만 그건 <청년의 방>에 등장하는 청년들도 마찬가지다. 그들은 이미 인간으로서, 물리적으로, 더 이상 할 수 없는 수준의 노력을 기울이고 있다. 그럼에도 현실은 지옥이다. PC방 알바 시절의 김종민 게스트는 알지 못했겠지만 그의 재능과 (이후에 펼쳐지는) 노력이 가리키고 있는 방향은 (운 좋게도) 전 세계적으로 수요와 혁신이 풍부하게 넘쳐 흐르는 시장을 향했다.

지연이나 학연으로 똘똘 뭉치는 패거리문화가 만연한 나라에서, 고졸이면 대통령도 무시하는 나라에서 김종민 게스트는 그런 천박한 문화가 개입할 여지가 없는 시장을 자신의 무대로 선택했다. 그게 운이다. 10년 전에 부산의 한 PC방에서 게임에 몰두하는 고등학생에게 컵라면을 가져다주고, PC를 수리하고, 게임을 설치하던 김종민 게스트를 상상하면서 지금 이 순간 전국의 모든 PC방에서, 편의점에서, 주유소에서, 주차장에서, 삶은 모든 현장 구석구석에서 치열하게 방황하고 있는 젊음들을 떠올려본다.

그들의 마음속에도 ‘내가 나중에 무엇을 할 수 있을까? 앞으로 어떻게 살아야 할까?’ 이런 생각이 멈추지 않고 떠오르기를 희망한다. 아무리 끔찍한 지옥이라도 그 마지막 생명줄을 놓지 않기 바란다. PC방에서 정상급 개발자로 발돋움한 김종민 게스트의 이야기는 예외적인 신화가 아니다. 누구에게나 일어날 수 있는 정상적인 일이다. 끝까지 생명줄을 놓지 않는 진지함과, 장인이 되고자 하는 어린 시절의 꿈을 망각하지 않은 일관성과, 뭐든 시작하면 성취를 이루고야 마는 집중력이 낳은 평범한 성공이다.


http://cmiscm.com/#/aboutme/



# 상경, 그리고 공부 – 377-378p.

프로그래머에게 실력의 궁극은 창조다. 반드시 많은 사람이 사용하는 언어나 플랫폼을 창조할 필요는 없다. 잘 알려진 오픈소스나 깃허브 코드일 필요도 없다. 자기가 다니는 회사에서, 혹은 자기가 수행하는 프로젝트에서, 원래 의도한 목적을 제대로 수행하는 코드를 만들면 그게 창조다. 그게 제일 중요하고, 제일 기본이다. 그래서 회사와 같은 현장에서는 실제로 사용되는 시스템을 설계하고 구현한 최초의 창시자가 가장 중요한 위치에서 다른 개발자를 리드하는 경우가 많다. 나중에 합류하는 프로그래머의 코딩 실력이 더 윗길인 경우도 있지만, 창시자의 철학과 비전은 실력 이상의 의미를 갖기 때문에 존중을 받는다.



# 개발자의 연봉 – 417p.

그들은 왜 구글이라는 엄청난 브랜드를 포기하고 뉴욕의 이름없는 스타트업 회사로 자리를 옮겼을까? 임팩트 때문이다. 자기가 짠 코드가 세상에 어떤 임팩트, 즉 어떤 영향을 주는 모습을 확인하고 싶기 때문이다. 세상에 엄청난 영향을 끼치는 작업을 수행하는 개발자는 구글에 많이 있다. 하지만 엄밀한 의미에서 그들은 소수다. 상당히 많은 구글 개발자가 거대한 조직 속에서 소리 소문 없이 사라지는 코드를 만들며 속상해한다. 다른 그룹의 개발자와 객체의 이름을 어떻게 붙여야 하는지 논쟁하며 하루를 보내고 허무한 심정으로 퇴근을 한다. 그런 개발자들은 회사의 브랜드를 포기하더라도 세상에 직접적인 영향을 끼치는 프로젝트에서 일하기 위해 다른 회사를 선택한다. 연봉 수준이 유지된다는 조건은 물론 기본이다.

이걸 우리나라의 상황에 대입해보자. 삼성전자에 다니는 개발자 중에서 비슷한 고민을 하는 사람이 있다고 해보자. 거대한 조직 속에서 소리 소문 없이 사라지는 코드를 만들며 좌절하고, 매일 의미없는 논쟁을 되풀이하며 지쳐간다. 그에겐 세상에 커다란 임팩트를 주는 프로젝트에서 일하고 싶은 욕망이있다. 그러던 그의 눈에 흥미로운 프로젝트가 발견되었다. 인포섹이라는 작은 중소업체에서 진행하는 프로젝트다. 자, 그가 삼성을 떠나서 인포섹에 들어가는 것이 가능할까? 천만의 말씀이다. 1억 연봉을 받다가 2,000만 원을 받으면서 일할 수 있는 사람은 세상에 없다. 그는 눈을 감는다. 그래, 하는 일은 재미없어도 1억을 받잖아. 버티자. 업계 전체를 놓고 보았을 때 이건 동맥경화다. 흐르지 않는 물이다. 개발자 연봉의 빈익빈 부익부, 양극화 현상은 이런식으로 업계 전체를 서서히 마비시킨다.




<팟캐스트 나는 프로그래머다 2탄>

임백준, 정도헌

한빛미디어, 2016



팟캐스트 나는 프로그래머다 2탄
국내도서
저자 : 임백준,정도현
출판 : 한빛미디어 2016.07.01
상세보기


반응형