CS 1학년때는 무엇을 해야 하나요?

ㅇㅇ 140.***.198.159

지금 수준에서 언어를 여러개 배우는건 좋지 않습니다. 하나라도 깊게 제대로 하세요. 그러면 나중에 다른 언어 배우는 것도 쉬워집니다. Python은 많이 쓰니까 알아두면 좋긴 하겠죠. 그런데, 기본적인 사용 개념과 syntax가 중요한게 아니라, “어떻게 쓰냐”가 중요한 겁니다. “언어를 x 가지 할 줄 안다”는 것은 똑똑하게 뭔가를 해낼 줄 모르면 별로 의미없는 것이죠. 그 중요한 능력을 키우는게 실력을 갖추는 핵심입니다.

지금 Java를 배웠다는 수준은 도구의 기본을 배운겁니다. 그 도구를 써서 “여기 못 박아봐라”, “가르쳐준 도구로 구덩이를 파봐” 이런걸 해본거고요. 관심이 있는 사람들은 교과 과정에서 배우고 숙제로 해본 것 이외에 다른 것을 해보고 싶어합니다. 오픈 소스 같은걸 찾아서 고쳐서 돌려도 보고 커스터마이즈도 시도하죠. 그러면서 많이 배울 수 있습니다.

일단 뭔가에 관심이 있어야 이런 활동이 스스로 시작되겠죠? 관심이 있으려면 이것 저것 호기심을 가지고 뒤적여 봐야 합니다. 이런건 가만히 앉아 있으면 재미를 던져주는 예능 프로그램 처럼 수동적인 나에게 나타나거나 주어지는게 아닙니다. 그냥 앉아서 뭘 해보면 좋을까 아무리 궁리해도 답은 안나옵니다. 뒤지고 읽고 생각하다보면 나옵니다. 그리고 도전하는겁니다. 그 도전에 새로운 언어가 필요하다면 해보면서 배우기도 합니다.

나의 필요와 관심으로 습득한 것과 교육 과정에서 내려 받은 것은 큰 차이가 날 수 있습니다. 나중에 잡/인턴 인터뷰할 때도 그런 성향과 노력을 convey할 수 있다면 큰 도움이 될겁니다.

===

뭔가 스스로 해보려다 보면 당연히 잘 안됩니다. 예를 들어 개인 프로젝트 아이디어를 가지고 코딩을 한다고 합시다. 간단한 것 같아도 잘 안되는 경우가 있습니다. 아무리 봐도 내가 잘못한게 없어 보여서 엉뚱한 이유를 생각하고 이것 저것 시도하기도 하죠. 이런 과정들을 겪으며 실력있는 사람이 가져야할 사고 방식도 키울 수 있습니다. 정규 교육 과정에서도 숙제하며 이런 경험이 있긴 하지만 그 울타리 안에서 하는걸로는 부족합니다. 결국 정말 어처구니 없는 실수나 이유도 알게 되고, 내 시야 밖의 완전히 다른 차원의 지식도 얻게 됩니다. 몇 번 반복하다보면 그런걸 어떻게 피하냐, 이런 경우 어떤식으로 디버깅에 접근하는가 등의 경험이 생깁니다. 생각하는 방식도 점점 빈틈없어 지고 논리적으로 변해갑니다.