파이썬 빠르게 제대로 익히는 방법 기술 이야기 2022. 4. 7. 23:14

요즘 참 인기가 많은 파이썬을 빠르게 제대로 익하는 방법에 대해서 소개하려 한다. 이 방법은 사실 내가 새로운 언어나 플랫폼, 프레임웍을 익힐때 사용하는 방법으로 Android, Tizen, C++, Java, JSP, Typescript, Angular, Vue, Python을 개발할 때 유용하게 사용했던 방법이다.

파이썬은 고수준의 범용 프로그래밍 언어인데, 배우기도 쉽고 사용하기도 쉬워서 요즘 참 않은 사람들이 배우고 있다. 프로그래밍 도서 순위 상위권에 많은 책ㅇ들이 파이썬 관련 도서이고 유튜브에도 파이썬 학습 영상이 많이 올라와 있으며, 온라인 강좌도 많이 있다. 하지만 막상 파이썬을 배우는 방법으로 기존 프로그래밍 언어를 배우는 오래된 구식 방법을 소개하는 컨텐츠도 많이 있어서 파이썬을 빠르게 익히는 좀더 나은 방법을 소개해보고자 글을 쓴다.

파이썬의 철학부터 핵심까지 먼저

프로그래밍 경험히 있는지 여부가 중요할 수도 있지만, 프로그래밍 경험이 전무한 사람이더라도 파이썬을 배울때 가장먼저 파이썬 철학과 핵심 기능에 대해서 빠르게 훑고 지나가라고 권하고 싶다. 파이썬은 귀도 반 로섬이라는 사람이 만들고 공개한 후 여러 사람들의 의견이 더해지면서 발전했는데, 만들어질 태부터 뚜렷한 철학을 가지고 있었고 지금도 그 철학을 유지하면서 발전하고 있다. 철학이 뚜렷한만큼 어떤 프로그래밍이 파이썬스럽다는 표현까지 흔히 볼 수 있다. 파이쏘닉ㅎ

https://peps.python.org/pep-0020/

프로그래밍 경험이 없는 경우, 파이썬의 철학을 쉽게 이해하지 못 할 수도 있으나 그래도 부담없이 한 번쯤은 쭈욱 읽어보고 파이썬 학습을 시작하길 권한다. 파이썬을 파이썬스럽게 잘 쓸 때 파이썬의 장점을 잘 살려서 프로그래밍을 할 수 있기 때문이다.

철학을 대충 느꼈으면, 다음으로 할 일은 한 번 가볍게 만져보면서 경험하는 것이다. 파이썬은 공식 사이트에서 자습서라는 컨텐츠를 제공하는데 내용이 매우 알차다. 에이부터 젴트까지 모든 것을 나열해서 설명하는 방식이 아니라 흥미있게 한 번 쭈욱 살펴볼 수 있는 컨테츠들로 구성되어 있다. 자료 구조, 조건문, 반복문 이런 식상한 구성이 아니고 각각에 대해서도 한번에 너무 많이, 너무 깊게 설명하고 있지 않아서 좋다. 그런 구성은 학습에 효과적이지도 않을 뿐만아니라 재미도 없고 학습 의욕도 떨어뜨린다.

https://docs.python.org/ko/3/tutorial/index.html

공식 사이트 - 자습서

자습서의 내용을 보고 인터프리터 모드로 기본적인 변수, 조건문, 반복문 그리고 자료구조만 살짝 맛보아도 당장 파이썬 프로그램을 작성하는데 큰 문제가 없다. 핵시 내용을 빠르게 학습하고 그 외에 자주 사용하지 않는 기능이나 용법, 응용 방법, 고급활용 방법은 실전에서 직접 사용하면서 익히는 것이 좋다.

작은 프로젝트라도 직접

다음 단계로는 실전에서 직접 사용한면서 파이썬에 대한 이해를 높이고, 앞에서 배운 내용을 어떻게 사용할 것인지에 대해서 익히는 것을 권장한다.

문제는 막상 실전에서 익히고 싶어도 어떻게 시작해야 할지 난감한 경우가 많다는 것이다. 특히 프로그래밍을 경험해 보지 않은 경우는 언어를 익힌 후에도 어떻게 프로그램을 만들어야 하는지 시작부터 암담함을 느끼는 경우가 대부분일 것이다. 이런 경우에는 작은 프로젝트를 하나 정하고, 이미 공개되어 있는 프로젝트를 참고하여 비슷한 기능과 구성으로 프로그램을 만들면서 익혀보면 좋다.

예를 들어 웹에서 특정 데이터를 크롤링하고자 한다면, 깃허브에서 이미 공개된 프로그램 하나를 다운로드 받고, 그 프로그램을 이해하는 동시에 내가 원하는 기능을 추가 또는 변경하면서 직접 프로그래밍을 해보는 것이다. 파이썬 책에 나온 코드를 단순히 따라쳐서 익히는 것은 당장에 어렵지 않게 배울 수 있을지 몰라도 직접 고민하면서 작성한 코드보다 기억이 오래 가지도 않고 생각을 확장하기에도 부적합하다.

https://github.com/scrapy/scrapy

파이썬은 범용 언어로 다양한 용도로 사용되며 다양한 프로그램의 소스 코드가 공개되어 있기 때문에 조금만 검색해보면 본인이 관심이 갖게되는 프로그램을 찾아서 고르기가 어렵지 않을 것이다.

오픈소스 프로젝트를 활용

마지막으로 고급 기술을 습득하는 방법에 대해서 소개하겠다. 사실상 이부분이 제일 중요한 팁이다. 뭐든지 한번 배울때 제대로 배우는 것이 좋고, 기초를 튼튼히 하는 것이 중요하다. 파이썬을 기초부터 튼튼하게 익히려면 단순히 문법을 익히는 것을 넘어서 용법을 잘 익히는 것이 좋고, 좋은 용법은 고수들의 코드에서 확인할 수 있다. 운동이나 예술에서도 고수를 관찰하고 흉내내는 것만으로도 실력을 향상 시킬 수 있듯시 프로그래밍도 고수들의 코드를 읽고 활용하는 것만으로도 실력을 키울 수 있다.

문법에서 if, for, while을 배웠지만 어떤 상황에서 그것들을 어떻게 사용하는 것이 좋을지는 책에도, 파잇썬 자습서에도 나와있지 않다. 더 나아가 함수의 구성이나 클래스의 설계등은 더욱 더 경험과 고민이 필요하다. 물론 당장 돌아가는 코드를 만들기에는 기본 학습을 바탕으로 적당히 프로그래밍하는 것에 문제가 없을 것이다. 하지만 프로그램이 커지고 복잡해 질 수록 코드의 작은 차이들이 모여서 결과적으로 큰 차이를 만들게 된다.

https://github.com/search?q=python

회사 같으면 코드 리뷰도 받고 선배한테 피드백을 받을 수도 있겠지만 혼자 학습하는 경우는 본인의 코드가 어떤 수준인지 파악하기도 쉽지 않다. 이런 경우 잘 알려진 오픈소스 프로젝트의 소스코드를 참고하는 것이 도움이 될 수 있다. 그냥 오픈소스 말고 잘 알려진 오픈소스의 경우 사용자와 컨트리뷰터도 많고, 실력 좋은 메인테이너의 코드 리뷰를 거친 코드이기에 충분히 검증이 되었다고 생각해도 좋다. 이런 귀한 코드를 거져볼 수 있다니!

서두에서 말했듯이 나는 꽤나 많은 언어와 프레임웍, 플랫폼을 경험해 보았다. 실력이 좋다는 뜻은 아니다.ㅋ 새로운 환경에서 개발을 시작할 댸 가장 먼저 하는것이 유사한 영역에서의 오픈소스 프로젝트를 조사하는 것이다. 프로젝트 구조부터, 빌드 및 배포 환경, 설계 내용까지 둘러보는데, 잘 알려진 3~5개의 정도의 프로젝트를 조사한다. 그렇게 하면 공통적으로 사용되는 코드나 환경, 구조, 설계가 보인다. 물론 특이하게 하나의 프로젝트에서만 사용되는 독특한 내용들도 있는데, 그런 부분은 "왜?"라는 질문과 함께 깊숙이 스며들게 만든다. 이과정에서 자연스럽게 실력 급격히 끌어올릴 수 있었다.

유명한 오픈소스 프로젝트의 경우 규모가 상당히 큰 경우가 많다. 그런 프로젝트를 모두 훑어보고 분석한다는 것은 아니다. 일단 소스코드를 확보해두고, 필요할 때마다 검색해서 찾아본다. 예전에 타이젠 어플리케이션을 개발 할때는 Opengrok을 사용하기도 했는데, 보통을 그냥 소스 코드를 다운받아놓고 VS code에서 코드에 하나의 워크 스페이스를 만들어서 필요할 때마다 검색해서 해당 부분을 참고한다.

마치며

영어 공부할 때 문법부터 차근 차근 할 수도 있지만 외국인과 대화를 하거나 글을 쓰거나 이야기를 듣는 것이 빠르게 영어를 습득할 수 있는 방법일 것이다. 프로그래밍 언어도 마찮가지다 문법을 공부하듯이 자료형, 조건문, 반복문 하나씩 열거된 규칙을 머리에 넣기보다는 헬로 월드부터 찍어보고, 버튼이라도 만들어보고, 버튼 누르면 전송되게 해보면서 익히는 것이 좋다.

생각대로 동작한다고 해서 만족하지 말고, 화면에 로그를 한 줄 풀력해도 보다 멋지게 읽기 쉽고 다루기 쉽게 프로그래밍하는 방법에 대해서 고민하고, 좋은 코드를 보며 익히는 것이 중요하다. 그렇게 할 때 금방 실력을 키울 수 있을 뿐만 아니라 프로그래밍 자체에서 재미를 찾를 수 있을 것이다.

프로그래밍은 이제 특정 직업군만의 일이 아니다. 누구나 할 수 있는 놀이이며 능력이다. 두려워하지말고 재미있게 프로그래밍을 즐기길 바란다.

댓글