[번역] JavaScript로 문제를 해결하세요 (Solve your problem with Javascript)
이 글은 원작자 카일 페넬(Kyle Pennell)의 허락을 구하고 한국어(Korean)로 번역했으며 원문은 Solve your problem with Javascript 입니다.
This article has obtained the permission of the original author Kyle Pennell translated into Korean. You can read the original article here.
튜토리얼과 스크린캐스트는 JavaScript에 대한 엉성한 지식을 얻기 좋습니다. 그러나 배우는 최고의 방법은 뭔가를 만드는 것입니다.
여러분의 작은 문제를 해결하기 위해 간단한 웹 애플리케이션을 만드세요. 저는 최근에 이 방법으로 많은 것을 배웠습니다.
제 앱 이름은 Oaxaqueando 입니다. “Eando”는 영어로 ‘ing’ 같은 동사 뒤에 붙는 접미사입니다. Oaxaca-ing처럼요. Oaxaca는 현재 살고 있는 멕시코의 도시/주 이름입니다.
Oaxaqueando는 Oaxaca에서 흥미 있는 것을 찾도록 도와주는 매우 간단한 JS/HTML 지도 앱입니다. 저는 지도 앱을 어떻게 만드는지 궁금했고 하이킹, 요가, 그리고 자원 봉사를 할 만한 곳을 찾고 싶었습니다. 이 작은 앱은 제게 Javascript 기초와 지도를 만드는 방법을 가르쳐 주었습니다.
코드로 문제를 해결하는 것은 흥미롭고 자극적입니다. 여러분은 문제를 이해하고 해결되기를 바랍니다. 이는 여러분을 견디기 어렵게 만들며 벽에 많이 부딪히고 좌절하게 만들 것입니다. 만일 정말로 결과에 신경쓴다면 쉽게 견딜 것입니다. 이와 반대로 튜토리얼과 책에 의존한다면 노력에 대한 보상은 여러분을 기다리지 않을 것입니다.
자신만의 문제를 해결하는 것은 고유한 피드백 루프를 가집니다. 지도에 레이어나 기능을 추가할 때마다 제게 폭발적인 흥미, 기쁨, 안도감을 줍니다. 저는 스스로 유용한 것을 얻는 것이 가까워지고 있다는 것을 느낄 수 있습니다.
자신만의 문제를 해결하는 것은 잊혀지고 있는 외국 언어를 배우는 것과 같습니다. 책으로 구문과 문법을 조금 공부하면 그 나라에서 사용할 수 있습니다. 외국어를 사용하는 동안 책으로 보충하면 많은 것을 배울 것입니다.
저는 여러분께 책으로 공부하면서 문제를 함께 해결하기를 권장합니다. 충분히 책으로 공부하면서 동시에 프로젝트를 하세요.
맡은 일을 해결하세요. 그리고 여러분에게 맞는 것을 찾을 때까지 새로운 책과 튜토리얼을 계속 찾으세요.
제가 좋아하는 리소스입니다:
Javascript
Professional JavaScript for Web Developers (꼼꼼함)
Eloquent JavaScript (챌린지가 있지만 대화형임)
jQuery
Tutsplus 30 days to jQuery (재밌고, 가볍고, 따라하기 쉬움)
Head first jQuery (재밌고, 가볍고, 따라하기 쉬움)
구체적으로 권장합니다:
벽에 막히면 손을 뻗어라(Reach out when truly stuck)
제 사이트 일부는 GeoJSON(지도 JSON 데이터)으로 만들었습니다. 어떤 이유로 GeoJSON은 위도 대신 경도를 사용합니다. 점이 왜 남극 대륙에 있는지 머리를 붙잡고 2, 3일 이상 생각했습니다. GIS.stackexchange에서 20분간 찾아봤는데 누군가 뭔가가 잘못됐다고 하는 겁니다. 이 일로 인해 많은 시간을 낭비했고 스트레스를 받았습니다.
벽에 막히면 온라인이나 다른 사람에게 손을 뻗으세요. 좋은 벽은 이를 통해 뭔가를 배우지만 나쁜 벽은 배우지도 못하고 의욕이 꺾여버립니다.
Stackexchange 같은 곳에 질문하는 것의 핵심은 다른 사람들에게 이 문제를 해결하기 위해 여러가지를 시도해 봤다는 것을 보여주는 것입니다.
여러분을 위해 만드세요(Don’t make it for anyone but you).
물론, 별거 아니지만 다른 사람들이 제 앱을 사용하는 것을 보면 기쁩니다. “카일, 제가 하이킹하기 좋은 곳을 발견했어요. 감사합니다.”
이런 말들을 조심하세요. 사람들은 여러분을 훌륭한 의견을 얻기 위해 허우적거리게 만들 것입니다.
여러분을 위해 만드세요. 그러면 스스로 평가할 수 있을 겁니다.
필요하면 튜토리얼을 바꾸세요(Switch tutorials if you need to)
JS를 배우는 방법은 많이 있습니다. 머뭇거리지 마세요.
저는 정말로 Eloquent JS를 좋아하지만 작가가 진도를 빠르게 나갈 때가 있습니다. 이는 매우 쉬운 연습문제를 해결할 때 혼란스럽게 만듭니다. 누군가는 이게 당연한 것이라 하겠죠. 저는 이런 혼란과 멘탈이 나가버리는 것이 필요하다고 생각하지만 의욕을 죽여버리는 데에도 한몫합니다.
탄력과 의욕이 왕입니다(Momentum and morale are king)
중요합니다. 끝내버리고 싶은 적이 많았을 겁니다. 의욕을 지키고 유지하세요.
참고: Gumption Traps
컴퓨터를 할 때 편안해지세요(Make sure you’re comfortable at the computer)
컴퓨터를 할 때 몸을 편안하게 만드세요. 필요하면 모니터, 키보드, 마우스, 그리고 더 좋은 책상을 구입하세요. 코딩할 때 다치는 일이 없을 것이며 일이 끝나면 몸이 저리거나 아플 일이 없을 겁니다.
개인적으로 저는 타이핑을 할 때 2개의 손목 보호대를 사용합니다. 그러면 손이 한결 편해지죠.
미래의 기능에 꽉 매달리지 마세요(Don’t hang on too tightly to dream features)
여러분의 앱을 미리 공개하고 싶을지도 모릅니다. 기억하세요, 탄력이 열쇠입니다. 여러분은 아마 미래의 기능에 대한 여러가지를 구현해 놓았을지도 모릅니다. 만일 너무 많으면 갖다버리고 이를 구현할 간단한 방법을 찾으세요. 생각하세요: 최소한으로 실행 가능한 제품 (나를 위한). 이건 여러분의 마지막 앱이 아닙니다.
저는 지도에 동적인 사이드바를 넣고 싶었습니다. 목록의 항목을 건드리면 지도 마커가 빛이나는 거죠. 하지만 저는 결국 놓아버렸습니다. 클릭 이벤트를 알아보려고 몇 시간을 낭비했습니다. 언젠가 다른 사람이 만들어 놓은 프로젝트에 있을 테지만 놓아버리기로 판단했습니다. 왜냐하면 무언가를 얻는 것은 자주 혼란스럽게 되거나 미완성으로 끝날 테니까요.
Jsfiddle과 Github을 사용하세요(Use Jsfiddle and Github)
Jsfiddle과 Github에서 다른 사람의 코드를 찾으세요. 특히 이 방법은 JS/jQuery 부분이 어떻게 동작하는지 정확히 볼 수 있는지 좋습니다. 본질에 다가가게 만들어 줍니다. 찾아서 자유롭게 사용하세요.
코드를 배우는 이들에게 도움이 되길.