[번역] C++와 Python 중 무엇을 먼저 배울까?


제가 처음 이 질문을 Quora에서 보았을 때, 이미 47개 정도의 답변이 달려있었고 대부분의 답은 잘못되어 있었습니다. 하지만 이 많은 답변들은 여러분에게 무언가 시사하는 바가 있습니다. 프로그래밍 언어를 선택하는 것은 기술적이라기보단 종교적인 질문에 가깝다는 겁니다. 사실 당신이 전문적인 프로그래머가 되고자 한다면 두 언어를 동시에 배워야 합니다.

우리가 프로그래밍을 가르칠 때는 언제나 두 언어를 동시에 가르칩니다. 과제는 반드시 두 가지(혹은 그 이상의) 언어로 작성되어야 하며, 왜 언어마다 해결법이 다른지, 혹은 왜 같은지 설명하는 에세이를 같이 첨부하도록 합니다. 이 방법으로 여러분의 전문적 코딩 지식과 성숙도를 발전시킬 수 있습니다.

일부 답변자들은 프로그래밍 언어는 도구에 불과하다고 주장합니다. 만약 그 비유가 맞다면, 목수가 되고자 하는 사람들이 이런 질문을 할 때 어떻게 대답해야 할까요?

“제가 톱질하는 법을 배워야 할까요? 아니면 나사돌리개 쓰는 법을 배워야 할까요?”

둘 중에 하나만 배운 사람이 최고 수준의 목수가 될 수 있을까요?

그러니 이 결론이 날 리 없고 유사종교스러운 논란을 멀리하는 대신에, 여러분의 소중한 시간을 가능한한 많은 프로그래밍 언어를 배우는데 쓰도록 하십시오. 최소한 다섯 개에서 여섯 개 정도를 배우세요. 모든 언어를 반드시 사용할 필요는 없지만, 언어별로 다른 접근방식을 알게 되면 이런 바보같은 말은 하지 않게 될 것입니다:

“저는 X라는 언어만 알고 있어요, 그리고 여전히 이 언어가 세상에서 가장 뛰어난 언어라고 생각합니다.”

번역 후기

요즘은 시간이 너무나 빨리 지나가버려서 1주일에 한 개 정도 번역을 하겠다는 다짐을 지키지 못하게 되는 때가 잦습니다. 다시 번역에 시동을 걸면서 이번에는 짧지만 의미있는 글을 번역해보았습니다.

우연히 이 글을 보게 되었을 때 ‘이 나이 지긋한 어르신은 누구신가’ 하고 찾아보니 명망있는 IT 컨설턴트시더군요. 병환으로 사경을 헤메신 적이 있다고 하는데 아직까지는 잘 계십니다. 최근 트윗을 보니 병원에 다시 투병중이신가 봅니다. 쾌차하시길 바랍니다.

‘프로그래밍 언어는 도구에 불과하다’ 라는 말을 다른 분에게 들었을 때는 이 글에서 이야기하고자 하는 뉘앙스와 약간 달랐습니다. ‘개발에 필요한 원리를 숙지하고, 실무에서 필요한(혹은 가장 빠르게 적용 가능한) 언어를 익혀서 금방금방 적용할 수 있어야 한다.’ 라는 뜻으로 말씀을 하셨었지요. 어느 쪽이든, 결론적으로 다양한 언어를 접하는 것은 프로그래머로서 사고의 폭을 넓히기 때문에 도움이 된다는 뜻이라고 생각합니다.

취지는 좋지만 현실적인 문제를 생각해보면.. 시간이 부족하다는 장벽이 있겠지요. 이럴 때는 조급한 마음가짐을 잠시 내려놓고 배움의 호흡을 길게 가져가야 할 것 같습니다. 제가 이 글의 번역을 하겠다고 허락을 구하기 위해 메일을 보낼 때 주고받았던 메일 일부를 발췌해 보았습니다.

Rinae: (중략) 저는 루비와 자바스크립트라도 동시에 익혀나가고 있습니다. 하지만 쉽지는 않네요.

Gerald: 음, 그 두개면, 충분히 제가 추천한 방식대로 하고 있군요. 앞서 언급했듯이 같은 일을 양쪽 언어로 구현해보세요. 그렇다고 무조건 구체적으로 작성할 필요도 없지만, 최소한 서로 다른 두 언어가 어떻게 다른지 이해하고 최소한의 스케치라도 디자인할 수 있을 정도가 되어야 합니다.

그리고 이렇게 하는 게 아주 어렵다고 느껴진다면 최소한 앞의 두 언어가 익숙해질 때 까지는 세 번째 언어를 배우지 않도록 하세요.

Rinae: 새로 배울 언어를 추천해주실 수 있나요?

Gerald: 기존에 알고 있던 언어와 가능한한 다른 언어를 고르세요. 다른 언어를 고르기 위해 인터넷에서 찾아보거나 프로그래머 지인들에게 그 사람들이 알고 있는 언어를 물어보세요. 그 대신에 지금 알고 있는 언어와 너무 비슷한 언어를 고르게 된다면 헷갈리기만 할 겁니다(역주: 언어의 문법이 다른 정도만 헷갈리고 나머지는 별 의미 없을 것이라는 의미로 보입니다).

이 글의 저자는 이후에 다른 글 ‘How Long Can I Remain a [Ruby, Java, C++, Python, …] Programmer?’ 를 작성하여 더 깊게 생각할 거리를 던져주었습니다. 이 글의 후속편이라고 할 수 있겠지만, 굳이 번역하지는 않을거라 한번 읽어보시면 좋겠습니다. 저 글의 한줄 요약을 남겨드리자면 이렇습니다.

“특정 언어의 프로그래머로 몇년 먹고살 수 있을지 전전긍긍하지 말고 ‘Programmer’ or ‘Problem-solver’ 같은 사람이 되어 살아남을 생각을 하라”


Dohyung Ahn (rinae)
Dohyung Ahn (rinae)
삽질을 하고, 글을 남기면서 다른 사람들과 함께 자라고 싶어하는 프론트엔드 개발자입니다. 더 좋은 코드와 설계를 항상 고민하며 지식을 어떻게 효율적으로 습득하고, 어떻게 잘 나눌 수 있을지도 고민합니다.

GitHubTwitterFacebook