제목: Unconventional way of learning a new programming language
세상에는 500개 이상의 프로그래밍 언어가 있다. 그러므로 오늘날 새 언어를 배우기 시작하는것은 종종 있는 일이다. 당신이 C++과 자바를 할 수 있지만, 작업에서 파이썬을 필요로 한다던지, 파이썬을 할 수 있는데 자바로 코드를 짜야한다던지 그럴 수 있다. 혹은 여러분의 전문성을 넓히기 위해 멋진 언어를 배우려 할 수도 있다.
새로운 프로그래밍 언어를 배우기위해 어떤 선택지가 있을 수 있을까?
- 온라인 튜토리얼으로 배운다.
- 온라인 강의(MOOC)로 배운다.
여러분 중 몇몇은 실제로 아래처럼 하는게 제일 좋은 방법이라고 주장할 수도 있다.
- 새로운 프로그래밍 언어의 문법을 배운다.
- 그 언어를 이용해서 개인적인 프로젝트를 한다.
이제 됐다! 이것은 여러분이 배우고 싶은 언어의 문법을 배운 것으로부터 얻은 지식을 적용할 수 있게 해준다.
나는 서로 다른 언어를 배우는 동안 20개 이상의 작은 프로젝트를 개발해왔다. 나를 믿어보고, 여러분이 주말이나 밤사이에 개인적인 프로젝트를 할때, 동작하는 코드를 짠다. 여러분이 관심 있는 부분은 "내 코드가 동작하는가?"이다. 반면 여러분 코드의 퀄리티는 거의 신경쓰지 않는다.
"바보같은 사람들은 컴퓨터가 이해할 수 있느 코드를 짜지만, 좋은 프로그래머들은 사람이 이해할 수 있는 코드를 짠다" -(Martin Fowler)
그래서 새로운 프로그래밍 언어를 좋은 방법으로 배울 수 있을까?
그 언어로 된 오픈소스 프로젝트에 기여하기
놀랐는가? 여러분 중에 몇몇은 이렇게 생각할것이다. "잠시만. 오픈소스는 어려운데, 그 언어에대해 박식하게 알고 있어야 오픈소스 프로젝트에 기여할 수 있는것 아닌가?" 그 대답은 틀렸다.
내 이야기를 들려주겟다.
작년에 나는 Booking.com에서 풀타임 직장을 제안받았는데, 나는 펄 언어(백엔드에 특화된 언어)로 작업한다는 것을 알고있었다. 2016년 6월에 대학을 마칠때, 대학이후 첫 직장을 가지기위해 나는 펄 언어를 배우기 시작했다. 7월 둘째주에 들어가면서부터 거친 한달을 겪었다.
나는 펄에대한 문법을 읽는 것과 이 언어의 일반적인 패턴을 이해하는 것부터 시작했다. 이제 나는 파이썬을 이용해서 뭔가 만들어보고 싶었으므로 그 언어에대한 내 지식을 적용시켜보고 그 언어에대한 다양한 개념을 연습할 수 있었다. 내가 펄 언어로 뭔가 만들 수 있는 방법을 찾아보다가, 깃헙에 있는 DuckDuckGo 오픈소스 프로젝트 오가니제이션을 찾았다. 그 오픈소스의 일부는 펄로 작성되었다는 것을 알게되었고, 이슈를 확인해보니 수많은 이슈들이 "초보"적인 것임을 발견했다. 즉시 작업을 해서 몇 풀리퀘스트를 제출했다. 오늘까지 빠르게 앞으로 나갔고, 현재 나는 몇몇 오픈소스 프로젝트에서 메인 컨트리뷰터이며, DuckDuckGo에서 20명의 오픈소스 커뮤니티 리더중 한명이 되었다.
그래서 왜 이렇게 작업했을까?
펄 언어의 문법을 배우자마자, 나는 오픈소스 프로젝트에 기여하기 시작했다. 이렇게하는동안, 나는 현재 존재하는 모듈을 보는데 익숙하다. 펄 언어를 사용한 것의 패턴을 알아차리는데 익숙하다. 따라서 이 좋은 방법들을 내 코드에 집어넣을 수 있었고, 펄 언어로 어떻게 좋은 코드를 작성하는지 배우는데에도 큰 도움이 되었다.
이것이 단순한 우연이 아니다; 나는 이 비슷한 또다른 이야기를 들려주려한다.
최근에 Booking.com에서 일하는동안 Go 언어로 쓰여진 서비스가 들어간 작업(새 기능 추가)을 잡았다. 아래에는 내 팀원들과 내가 대화한 내용이다.
나 : 나는 이 작업이 굉장히 좋습니다. 이 작업을 하고싶은데 그쪽 생각은 어떤가요?
그 : 좋아요, 아주 흥미로운 것이에요. 그런데 Go 언어에대해 알고있어야하는데, Go 언어를 아시나요?
나 : 아니오.
그 : Go 언어를 배우고 싶은가요?
나 : 그래요!
그 : :) 시작하죠!
그래서 다른 언어를 배우는 지점에서는 바로 Go 언어였다!
나는 Go 문법을 읽기 시작했고 공식 사이트에 초급자를 위한 멋진 투어를 발견했다. 나는 이 투어를 통해 언어의 기본 개념을 익혔다.
다시 한번 나는 Go 언어로 된, 그리고 "beginner"나 "easy-fix" 이슈를 가진 오픈소스 프로젝트를 찾기 시작했다. 나는 Google이 만든 깃헙의 REST API를 Go로 감싸는 기본적인 프로젝트를 발견했다.
내가 Go언어를 배운지 이틀만에 첫 PR을 가졌다.
오픈소스가 어떻게 여러분을 도와줄까?
이제 오픈소스 기여가 어떻게 그 언어의 좋은 습관을 배울 수 있게 해주는지 궁금할 수 있다. 여기에는 여러 면이 있으니 하나씩 이야기해보자.
코드 품질
대부분의 좋은 오픈소스 프로젝트는 엄격한 코딩 가이드라인을 가진다. 여러분의 코드를 머지하려면 그 규약을 따라야한다. 이 가이드라인을 적용시키면서, 언어를 배우고 있는데도 좋은 품질의 코드를 작성하는데 도움이 된다.
단순히 그뿐만 아니라 다른 사람의 코드를 볼 수 있는 기회를 가지며, 어떻게 좋게 문서화하는지 직접 눈으로 볼 수 있다.
코드 리뷰
오픈소스 기여에대해 가장 좋은 부분은 코드 리뷰이다. 여러분이 코드를 푸시할때 그 프로젝트에 관련된 전문가로부터 피드백을 받기때문에 그 언어에대한 이해를 높힐 수 있는 기회가 된다.
이것은 좋은 코드를 짜는것에대한 무료의 개인 과외이다.
평가
우리는 소프트웨어 개발자로서 우리 작업에대해 평가를 받을 필요가 있다. 그리고 오픈소스 커뮤니티는 잘 했는지 확인할 수 있게 해준다. 오픈소스 기여에대한 내 모든 경험에의하면, 나는 한번도 주입식이나 의욕을 잃게하는 커멘트를 받아 본적이 없다. 모두가 완전 격려해주고 도움이 된다.
그러니 다음에 여러분이 새로 배우고 싶은 언어가 생기면, 어서 시작하여 뛰어들자! 기여할 오픈소스 프로젝트를 찾아서 언어를 배우고 그 늬앙스를 배워가자 ;)
그리고 이 정해지지 않은 방법이 여러분에게 어떻게 되었는지 알려달라. 또한, 이 글이 조금 유용했다고 생각하면, 포스팅에 추천(
❤
)을 해달라.
자유롭게 여러 다른 방법으로도 공유할 수 있다.
나를 트윗/팔로우하려면 @sahildua2305로 가면 된다.
이 블로그는 공부하고 공유하는 목적으로 운영되고 있습니다. 번역글에대한 피드백은 언제나 환영이며, 좋은글 추천도 함께 받고 있습니다. 피드백은
- 블로그 댓글
- 페이스북 페이지(@나는한다번역)
- 이메일(canapio.developer@gmail.com)
- 트위터(@canapio)
으로 보내주시면 됩니다.
WRITTEN BY
- tucan.dev
개인 iOS 개발, tucan9389
,