C언어 파이썬 동시에 - ceon-eo paisseon dongsie

반응형

어느정도 프로그래밍 언어 하나에 익숙해지면 

겪게 되는 고민이 있습니다. 언어를 더 배워야 하는 건가?

 

왜 이리 프로그래밍 언어는 이토록 많지? 

 

개발자라면 당연히 C는 알아야 한다는데, 

요즘 다트가 유행이라는데, 

 

인공지능 개발하려면 파이썬은 기본이라는데, 

서버는 Go언어로 짜야 성능이 좋다는데 

이 모든 걸 다 배워야 될 것 같은 생각이 듭니다. 

 

심지어 폴 그레이엄은 그의 책, '해커와 화가'에서 자바만 아는 개발자는 심각한 문제라는 이야기도 하였죠. 

 

조엘 스폴스키는 '얼랭' 같은 특이한 언어를 배운 개발자를 뽑으라고 권하기도 했구요. 

 

여러 언어를 배우는 게 정답일까요? 

 

그렇지 않습니다. 

 

언어는 2개 정도만 깊이 파고

언어 자체보다는 소프트웨어 자체를 만들기를 권합니다. 

 

프로그래밍은 외국어와 비슷한 측면이 있습니다.  

 

외국어를 7개 국어 한다는 사람도 있지만

모국어 수준으로 하는 건, 2~3개 정도이고

나머지는 간단한 회화나 독해가 전부입니다. 

 

안 쓰면 잊혀지기 때문이죠. 

 

프로그래밍 언어를 7~8개 한다는 사람을 실제로 봐도

문법을 아는 정도지, 자유 자재로 상용 소프트웨어를 만드는 경우는 많지 않았습니다. 

(근데 다 하는 사람이 가끔 있긴 합니다 가끔요..)

 

한 언어를 택해서, 그 언어의 숙련도를 높이는 게 좋습니다. 

프론트 엔드 개발자가 목표라면, 바닥부터 웹사이트를 만들어보고 브라우저 원리도 공부해보고, 

네트워크로 데이터 주고 받기, 재사용성 높게 클래스 만들기, 내가 필요한 거 라이브러리로 만들어보기, 

실제 서비스 만들어 유저 받기 같은 걸 하는 게 낫습니다. 

 

괜히 파이썬으로 rest api 짜다가, Vue가 뜬다고 하니 뷰하다가, 리액트가 낫다니 리액트 해보고

이런 건 정말 안 좋습니다. 

 

데이터 분석을 배운다면 데이터를 분석한 뒤 

어떤 결론을 도출해 내거나, 보고서를 작성해 실제 서비스에 반영되도록 시도하는 게 낫습니다. 

내가 분석한 내용이 실제 환경 (마케팅이든, 앱의 ui 든)에 적용된다면 그보다 나을 게 없죠. 

 

파이썬이 크롤링 하기 좋다니 파이썬 배우다가, R이 통계 기능이 낫다니 R 배우고, 

딥러닝 최적화 하려면 C++이 필수라고 하니  C++ 배우고 이럼 진전이 없습니다. R이든 파이썬이든 하나 정해서 끝장을 보는 게 나아요. 

끝장을 본 다는 건 하나의 분야에서 a to z를 말합니다. 

 

여러 언어를 배우는 건 중국어로 자기 소개 배운다음에, 스페인어로 자기소개 배우는 거랑 똑같아요. 

한 언어를 잘하고 난 다음에 다른 언어로 넘어가는 게 낫습니다. 

 

저도 여러 언어를 배워봤는데 숙련도 차이가 큽니다. 어떤 언어는 컴파일을 안 해도 동작이 예상되지만, 어떤 언어는 한줄 한줄 쳐봐야 되죠. 

당연히 개발 속도나 질에서도 차이가 납니다. 

 

이 글에서 언어 하나의 숙련도를 높이라고 했지만

그래도 2~3개 정도는 아는 게 필수라고 생각합니다. 

 

다른 언어를 배우면 주 언어를 더 깊이 이해할 수 있고

어떤 언어에선 못하는 걸, 다른 언어에선 쉽게 할 수 있는 경우가 종종 있거든요. 

이럴 때를 대비해서 배워두면 필요에 따라 활용할 수 있습니다. 

 

책 파이썬 '실전 스케일링 파이썬 프로그래밍’를 보면 

async io 라이브러리 개발자의 인터뷰가 나옵니다. 

그분도 “고성능 병렬 프로그램을 짤때는 GO”를 씁니다라고 하더군요. 

파이썬으로 멀티 프로세싱을 할 때는 어려움이 있다면서요. 

 

이렇듯 더 나은 문제 해결을 위해, 다른 언어를 알면 좋습니다. 

 

동적 언어로 시작했으면 정적 언어를 배워보고

정적 언어로 시작했으면 동적 언어를 배워보는 게 제일 효과적이라고 생각합니다. 

 

결론 

처음 개발을 배우거나 아직 서비스를 만들어본 경험이 없다면

언어 하나에 집중하자. 그치만 틈틈이 1~2개 정도는 추가로 배워두자. 

반응형

공유하기

게시글 관리

구독하기소프트웨어 이야기

  • 카카오스토리
  • 트위터
  • 페이스북

'코딩 배우는 법을 배우기' 카테고리의 다른 글

내가 개발을 배워온 과정 - 2부 두 갈래의 길  (5)2020.07.21내가 개발을 배워온 과정 - 1부 우연한 선택  (3)2020.07.19무료 국비 학원갈까 말까?  (8)2018.11.11코딩 시작하기 - 어떤 프로그래밍 언어를 고를까  (15)2018.10.25코딩을 책으로 배울 수 있을까? - 효과적인 코딩 공부법  (8)2018.10.15

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

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

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

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

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

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

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

번역 후기

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

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

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

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

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

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

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

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

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

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