-
파이썬 일주일 독학 후 깨달은 점들Let's Code/Python 2019. 7. 3. 23:15
내가 지금 일하고 있는 회사는 동영상 스트리밍과 광고로 수익을 얻는 OTT회사인데, 규모가 큰 회사는 아니나 외국 대기업 라쿠텐의 자회사인 덕에 받는 혜택이 꽤 쏠쏠하다. 그 중 하나가 교육 복지로, 저렴한 가격에 질 좋은 강좌를 제공하기로 유명한 유데미의 모든 강좌를 무제한으로 들을 수 있다. (그 밖의 회사 정보를 열람할 수 있긴 한데 인턴 직급에선 언론에 이미 공개된 정보가 대부분이라 큰 소용은 없다.)
처음 입사할 때만 해도 유데미를 통해 3개월 동안 코딩의 기초를 떼고 나가겠다는 투지에 불타 있었는데 처음 한 달은 괜찮아 보이는 강의를 수강등록하기만 했고 (프리미어, 파이썬, R, SQL 등이 있다. 돈 내고 아깝게 안 듣는 사람으로 오해했는지 뉴스레터가 끊임없이 날아와서 스팸 등록해뒀다.) 두 달 째는 찔끔찔끔 파이썬 10강 정도를 수강했고 (하나가 10분짜리므로 사실 깔기만 했다고 봐야 한다.) 세 달 째인 지금에서야 겨우 파이썬을 강좌를 '듣긴 들었다'고 할 정도가 되었다. 모든 삽질을 다 합치면 한 달 독학이라 봐야하지만, 사실상 공부한 기간을 따져 일주일이라 달았다. 하루에 한 시간 이상씩 공부했다고 가정하면 3일 쯤으로 잡아야 할지도 모른다.
참고로 내가 등록한 강의는 Python: From Zero to Hero 이다. 수강평이 16만 이상이며, 정가는 20만원이 넘어간다고 하나 사시사철 13000원에 판매하는 것 같다. 회사의 하루 식대가 11000원이니 생각해보니 그렇게 대단한 복지는 아닌데 (꼭 퇴사 전까지 다 들어야 할까?) 뭐든 기한이 있으면 좋으므로 일단은 2주 안에 끝내는 것을 목표로 잡자.
내가 맨 처음 공부한 방법
때마침 올해 초에 고시공부한다고 장만한 아이패드3가 있었기에(정작 시험은 장렬하게 말아먹었다), 나는 기업 분석이든 자소서 구상이든 모든 작업을 다 아이패드로 하던 중이었다. 아이패드 필기는 국제법이나 경제학 같은 과목을 들을 때 굉장히 유용했는데, 두꺼운 법전을 들고 다닐 필요 없이 pdf 파일 하나를 넣어가면 그만이었기 때문이다. 하지만 코딩을 아이패드로 공부하겠다는 발상 자체는 처참하게 실패했다. 일단,
1. 재미가 없었다.
나중에서야 알게 되었지만 코딩은 내가 쓴 코드를 즉각즉각 돌리며 결과물을 확인하는 것이 재미였다. 따옴표 하나를 잘못 쓰거나, 대소문자를 구분 못해서 안 돌아가던 코드의 에러를 찾아 정상적으로 코드를 구동했을 때의 기쁨! 무엇보다 결과를 바로 확인할 수 있다는 점, 그리고 코드를 칠 때 자동으로 변하는 색깔과 예쁜 폰트 같은 것이 소소한 즐거움이다. 타입을 구분해서 자동으로 색이 변하지도, 결과가 구현되지도 않는 손필기가 재미있을리 만무했다.
2. 헷갈렸다.
재미가 없더라도 머리에 잘 들어가면 모르겠는데, 생각보다 쉽지 않았다. 개념 자체는 쉬운 거 같은데 출퇴근길에 정신없이 듣다가 복습을 까먹고 3,4일 후에 들어가보면 이 코드가 뭐였더라? 하고 생소하게 쳐다보게 됐다. 원래 코드란 것은 처음 배웠을 때 즉각 써먹어보고, 내가 응용도 해보면서 이렇게 하면 돌아가고 이건 안 돌아가고 파악하며 구동 범위를 스스로 확인해야 완전히 학습하게 된다. 직접 쓴다고 암기가 되는 분야도 아니고, 무엇보다 암기가 주인 분야는 아닌 거 같다. 오히려 직접 타자를 치면서 필기하는 것이 아무래도 실제 코드 구현과 비슷하다 보니 능률이 좋았다.
Py라는 어플을 다운받다.
파이썬이 이렇게 재미가 없는 건가? 나만의 프로젝트나 앱을 개발하려면 먼 것 같은데, 이렇게 기나긴 재미없는 강의를 들어야 하나? 하고 슬슬 회의감이 들 무렵(그래봤자 도합 1시간쯤 들었을 때), Py라는 어플을 다운받게 되었다. 처음에는 출퇴근길에 강의를 듣는 게 생각보다 귀찮아서 어플을 찾다가, 아이콘이 예뻐서 바로 다운받았다. 역시 인터페이스든 아이콘이든 IT서비스는 예뻐야 장땡이다. 인터페이스도 물론 예뻤고, 파이썬 기초 코스가 너무너무너무 쉬워서! 문화충격을 받았다. 출퇴근하는 30분 동안 모든 초급 코스를 다 뗐을 정도다.
강의를 4,5개 이상 들어야 간단한 퀴즈 2개가 열리는 유데미와 달리, 사소한 개념을 하나라도 익히는 순간 퀴즈를 여러 개 풀어야 하는 Py의 방식이 훨씬 더 재미있었고, 내 실력을 더 잘 테스팅해주는 것 같았다. 틀린다 하더라도 금방 문제를 파악하고 수정하면 그만이니 문제 없다. 놀랄 정도로 몰입하면서 회사에 도착하기 전에 모든 코스를 클리어해버렸다. 여기에 Py의 가장 큰 장점이자 단점이 나온다.
빠르고, 간단하다. 참 좋은데, 코스 하나가 너무 짧다!
분명 나는 파이썬의 모든 요소를 배운 것 같지 않은데 (그랬다면 이렇게 단기간에 돌파할 수 있을리가), 이미 코스를 다 끝냈단다. 그 다음엔 코드 인터뷰를 풀려고 하니 처음 배운 개념들이 막 나와서 손도 못 댔다. 중간 단계가 없다.
결국, 체계적으로 하나하나 배우는 것보다 즉각적으로 모르는 언어를 훑고 싶거나, 또는 이미 중급자지만 간단하게 실력을 점검하고 싶은 사람에게 더 적합한 어플이라고 결론 내렸다. 그리고 나는 다시 유데미로 회귀하게 되었다. 사실 가장 듣기 싫었던 이유가 화질 깨짐과 버퍼링인데, 우연히 기업용 유데미 또한 어플이 있으며 모바일 사용이 꽤 편하다는 걸 알게 되면서 자연스럽게 유데미에 정착하게 되었다.
무조건 코드를 돌리면서
이제는 수업을 들으면서 즉각즉각 예제를 손으로 구현해보고 있다. 듣다보면 호기심에 응용을 해보기도 하고, 전에 배웠던 것과 합쳐서 코드를 시도해보기도 하는데 결과를 바로 알 수 있어서 좋다. 무엇보다 대다수의 입력 프로그램은 캡쳐처럼 각 function마다 간단한 해설이 나오므로 굳이 모든 요소를 외우고 있을 필요가 없다. 따라서 복습을 하지 않고 있다 (이건 변명이 아닙니다). 어쨌든 코딩은 맨 처음 흥미를 느꼈을 때 그 기세를 모아 쭉쭉 진도를 나간 다음, 홈페이지 제작이든 통계 돌리기든 프로젝트를 구현해보면서 복습을 하는 쪽이 정석인 것 같다. 손필기... 문과의 방법이었습니다 졸업합시다...
+ 완전 파이썬 초보라서 나름대로 한 생각들을 쓰기도 민망하지만, 각 fuction을 이름별로 암기할 필요는 없지만 기본 원리를 아는 건 참 중요한 것 같다. 예를 들어 mylist_sort() 라는 Method와 mylist_sorted() 라는 Method는 다른 특징을 가지고 있는데, 그냥 sort()라고만 쓰면 행위를 지칭하는 것이기 때문에 이것 자체는 아무런 속성을 가지고 있지 않다. Type function을 돌려도 NoneType이라 나온다. 그런데 mylist.pop()을 치면 삭제한 요소가 튀어나온다. 이런 식으로 그 자체 아무런 요소도 저장하지 않는 method도, 기능을 수행한 일부에 적용되는 method도, 그 method를 적용한 이후의 원래 요소가 나오는 method도 있는 것 같은데 정확한 원리는 모르겠다. 지나가듯 sorted.()보다 sort.()가 더 적게 돌아가는 길이므로 더 효율적이다, 라고 했는데 나중에 무슨 뜻인지 알게 될 거란다. 뭔 뜻이지! 마찬가지로 Method나 Function의 차이도 정확하게 모른다. 이건 배우면 자연스레 알게 되겠지~ 아무튼 컴퓨터를 만질 시간만 있으면 (이번주에 수영을 시작해서 이것도 이제 힘들 예정...) 즐겁다 코딩!
'Let's Code > Python' 카테고리의 다른 글
Numpy : 1차원과 2차원 벡터의 생성 (0) 2019.09.30 댓글