티스토리 뷰
코딩이 '트렌드'라는 것을 부정할 수 없다. SNS에도 한 달만 배우면 전공자만큼 코딩을 할 수 있다는, 지금 코딩을 배우지 않는다면 '4차 산업혁명' 시대에 뒤쳐진다는 광고가 넘쳐난다. 실제로 주변에서도 코딩을 배우고 싶은데 어떻게 시작하면 좋을지 묻거나, 교양 수업으로 코딩을 배우는데 과제가 어렵다고 질문을 하는 경우가 꽤 생겨났다. 하지만 대개 python 수업이 끝난 이후에는, 코딩을 잘 써먹지 못한다. 아마 제목을 보고 이 글을 클릭해서 읽고 있는 분들도 비슷한 상황일 것이다. 왜 python을 배우고도 코딩을 하지 못하는지, 나름대로 파악한 그 이유를 나누고자 한다.
1. python을 배웠기 때문이다.
첫 번째로, python을 배웠기 때문에 코딩을 못하는 것이다. 그럼 python이 아니라 C나 Java로 코딩을 시작해야 하는 것일까? 물론 나의 경우에도 C로 코딩을 시작했기는 하지만 어떤 언어를 배웠는지는 문제가 아니다. 오히려 python은 코딩에 입문하기 좋은 난이도이며, 동시에 실제로 많이 사용되는 언어이다. 실제로 2022년 1월 TIOBE INDEX기준, 프로그래밍 언어 순위를 봐도 python이 1위다 [1].
문제는 python이라는 프로그래밍 언어 자체를 학습하는 데에 중점을 두었다는 점이다. if문을 쓸 때에는
if 조건문:
으로 써야 하는 걸 외우는 데에 힘을 쓴 것이다. 이런 언어 자체의 문법은 외울 필요가 전혀 없다. 지금 python 전문가가 되어서 python 책을 쓸 것도 아니고, python interpreter 개발할 것도 아니면 안 외워도 된다. 어차피 언어 따라서 저런 세세한 문법은 다 다르다. 나도 헷갈리면 google에 검색해서 공식 document나 검색했을 때 나오는 글 아무거나 읽고 참고해서 코딩한다. 물론 코딩을 하다 보면 if문 정도는 당연히 안 찾아보고도 쓸 수 있게 된다. 하지만 이는 내가 if문을 쓸 때에는 ':'을 쓴다를 영어 단어 외우듯이 외워서 된 것이 아니라 익숙해져서 그런 것이다.
대부분 친구들이 과제 질문하는 것을 살펴보면 배운 개념을 활용하지 못해서 물어보는 경우가 많다. 예를 들어, for문을 사용해서 3부터 카운트 다운하는 코드를 작성하는 법을 배웠다면, 아래와 같이 *을 출력해 두변의 길이가 3인 직각 이등변 삼각형을 출력할 줄도 알아야 하는데, 이를 못하는 것이다.
*
**
***
아무리 영어 단어를 외워도 Hi! How are you? 에 자꾸만 머물게 되는 것과 같은 상황이다. 그러다 보니 아무리 python을 배워도 코딩이 안 되는 것이다.
2. 남의 코드를 읽고 따라 치거나, 복사-붙여 넣기만 했기 때문이다.
코딩 관련 '친절한' 자료들은 정말 넘쳐난다. 대부분 전체 코드를 제공하고, 일부는 한줄한줄 코드를 설명해주기도 한다. 이런 자료들은 정말 고마우며 도옴이 많이 된다. 하지만 이런 고수분들의 설명을 보면서, 책이나 인강을 보면서 공부하다 보면 생각 없이 그대로 따라 치거나 심지어 마법의 키 ctrl+c와 ctrl+v를 활용해 복사-붙여 넣기만 하기도 한다. 무슨 내용인지 이해하지 못한 채 이런 방식으로 코딩을 하는 것은 영어타자연습과 다를 것이 없다. 물론 많이 따라 쳐 보다 보면 언젠가는 이해하고 응용할 수 있으리라 생각할 수도 있다. 하지만 그냥 코드를 받아 적는 것은 마치 다항함수 적분을 어떻게 하는지 모르는 채로
$$ \int_{1}^{3} 2x dx = 8 $$
$$ \int_{0}^{2} 3x^{2} dx = 8 $$
등 정적분 결과를 계속해서 받아 적으면서 공부하는 것과 같다. 언젠가는 규칙을 발견하고 스스로 응용을 할 수도 있지만 그러기까지 많은 시간과, 참을성, 그리고 충분한 재능이 필요할 것이다. 아무도 이렇게 수학을 공부하지 않는다. 코딩도 마찬가지이다.
그렇다면 어떻게 해야 python이 아니라 코딩을 할 수 있는 사람이 될 수 있을까?
1. python을 도구로 배워라.
python은 그저 코딩을 하기 위해 선택할 수 있는 여러 도구 중 하나이다. 그냥 땅을 파기 위한 삽 같은 것이다. 삽은 손잡이가 어디에 달려 있는지 정도만 기억하면 된다. 중요한 것은 땅을 파는 방법을 익히는 것이다. 앞서 언급한 것처럼 나도 코딩할 때에 python 문법 자주 검색해 본다. 오히려 배워야 하는 것은 저 위치에 if문을 써야 할지, for문을 써야할지 판단하는 것이나 어떤 '조건문'을 쓸지를 생각해내는 것이다. 이건 google에 검색해도 안 나오기 때문이다. for문 쓰는데 ':' 넣는 것 까먹었다고 자책하지 말고, 문법을 먼저 생각하지 말고, 큰 틀을 먼저 생각하는 습관을 들여야 한다. 아주 기본적인 기초를 아는 상황이라면 python을 배우는 것을 목표로 잡지 말고, 어떤 프로젝트 하나를 목표로 정해두고 이를 구현하는 데에 필요한 지식을 습득해 가는 것도 좋다. 이렇게 배운 지식은 오래 기억에 남으며 무엇보다도 python 문법 자체에 집착하지 않고, '생각'하는 습관을 기를 수 있기 때문이다. 즉, 컴퓨팅 사고력을 기를 수 있게 된다.
2. 남의 코드를 읽고 따라 치는 것이나, 복사-붙여 넣기를 잘하자.
앞에서 남의 코드를 따라 하기만 했기 때문에 코딩을 못하는 것이라고 해놓고서는 잘 따라 하라니 참 어이가 없을 것이다. 하지만 그렇게 좋은, 고수님들의 자료가 넘쳐나는데 이걸 참고하지 않는 것도 동시에 미련한 행동이다. 대신에 이걸 잘 따라 해야 한다는 것이다. 기초적인 프로젝트만 한다면 늘 검색해서 내가 원하는 것과 동일한 코드를 찾을 수도 있을지도 모른다. 하지만 갈수록 내가 원하는 것과 100% 동일한 코드는 찾기 어려울 것이다. 적어도 몇 개의 코드를 합쳐야 구현할 수 있는 프로젝트도 생길 것이다. 그러니 남의 코드를 잘 읽고 이 코드가 하는 행동이 무엇인지 파악하고 내가 원하는 행동을 하도록 만들기 위해서는 무엇을 수정해야 하는지를 늘 생각하고 가져와야 한다. 예제를 보고 공부할 때에도 마찬가지이다. 적어도 이 코드의 어떤 부분을 바꾸면 어떻게 작동할지를 예측해보고 실제로 바꿔서 실행해보는 습관을 가져야 한다. 이 과정을 통해 원리를 이해해야 한다.
3. 검색하는 것을 두려워하지 말라.
지금 당장 시험 보는 것도 아니고 검색을 안 할 이유가 없다. 제발 google에 검색해서 github 자료를 보고 어떤 식으로 구현했는지 참고하자. 제발 무언가 빨간색이 뜨거나 작동이 제대로 안 되면 google에 검색해서 stackoverflow 글을 보자. github이랑 Stack Overflow 동시에 고장 나면 아무도 못 고친다는 농담이 있을 정도로 다들 참고하는 사이트이다. 물론 영어로 되어 있기는 하지만 어차피 쓰는 단어가 거기서 거기다. 몇 번 읽다 보면 다 이해할 수 있고 모르면 우리에겐 Papago도 있다. (그러니 제발 에러 났다고 나한테 물어보지 말고 검색을 하자... 나도 검색해서 알려주는 거다.) 아직 코딩 입문이라 영어로 된 설명을 읽는 것 자체가 부담이라면 tistory나 Velog, medium 같은 곳에 한글로 된 좋은 글도 많다. 제발 google에 검색하고 열심히 읽어보자. 추가적으로 코딩에 좀 적응이 되었다면 기본 문법은 공식 document를 읽으면서 파악하는 것을 추천한다.
이 글을 시작으로, 내가 문과 친구에게 방학 동안 코딩을 비대면으로 알려주었던 것을 바탕으로 python 기초 개념 정리 및 나름의 코딩 공부 팁을 전달하고자 한다. 다만, 나의 방식은 코딩 테스트가 아니라 어찌 되었거나 프로젝트를 스스로 진행할 수 있도록, 어찌되었거나 코딩을 활용할 수 있도록 하는 데에 특화되어 있다. 코딩 테스트 관련 글은 google에 검색해서 더 좋은 것을 보시길 추천드린다. 하지만 python을, 코딩을 한 번 배워보고 싶으신 분이라면, python을 배우긴 배웠는데 코딩은 못하겠다는 분이라면 앞으로의 글을 기대해 주시기를 바란다!
[1]: TIOBE Index for January 2022 (글 링크)
'Computer Science > python 기초' 카테고리의 다른 글
python으로 코딩 배우기1-print, 변수 (0) | 2022.02.15 |
---|---|
python 개발환경 구축하기2-github (0) | 2022.02.14 |
python 개발환경 구축하기1-visual studio code, anaconda (0) | 2022.02.04 |
코딩할 때, 참고해야만 하는 사이트 (0) | 2022.02.02 |