멘토지원
파트너스
현직자 클래스
멘토 찾기
Best 질문답변
프로그래머, 습관이 실력이 되는 세가지 학습법
달랩 · .
약 4년 전
💬 멘티의 질문

멘토님 안녕하세요! 컴퓨터 공학을 전공했고, 졸업을 앞두고 있습니다. 헌데, 지금 부터 취업을 위해 어떤 공부를 어떻게 해야 할지 모르겠습니다. 


©️freepik


학교에서 어설프게 C, C++, C#, Unity, python, Java 등 이것저것 하다 보니, 뭘 잘하는지도 모르겠고, 회사가 어느 정도 수준을 원하는지도 모르겠습니다. 그나마 제일 자신있는 언어는 python인데 수요가 너무 없는 것 같아요. 


방향과 공부 방법 등 멘토님의 조언이 필요합니다. 감사합니다!


💬 아샬 멘토의 답변

안녕하세요. 간단하게 답변을 드리도록 하겠습니다!


©️pexels


프로그래머 : 컴퓨터가 일하는 순서를 작성합니다

프로그래머는 프로그램, 즉 컴퓨터가 일하는 순서를 작성하는 사람입니다. 순서가 필요한 이유는 컴퓨터는 알아서 작동하지 않기 때문이죠. 수학적으로 간단히 표현할 수 있는 것 (e.g. 2의 제곱근)조차도 그 계산 방법을 나열해야 합니다. 이걸 우리는 알고리즘이라고 하죠.


아무리 좋은 알고리즘이 있어도 컴퓨터가 알아들을 수 있는 언어로 표현하지 못한다면 문제가 있겠죠? 그렇기 때문에 우리는 프로그래밍 언어를 통해 컴퓨터가 일하는 순서를 적어줍니다. 프로그래밍 언어가 프로그래밍에서 차지하는 위치는 딱 이게 전부입니다. 


다만, 각 언어는 각자 다른 패러다임을 갖고 있기 때문에 다양한 언어를 그 언어 커뮤니티의 사고방식과 함께 습득하는 건 매우 중요합니다. 일반적으로 Lisp를 공부한 프로그래머는 Java만 공부한 프로그래머보다 압도적으로 실력이 좋습니다.


©️pexels


기초를 다지는 공부가 중요합니다

영어로 연설해야 하는 사람을 뽑을 때, 영어를 잘하는 사람과 논리적으로 글을 쓸 수 있는 사람이 후보라면 당연히 후자를 선택합니다. 논리적으로 글을 쓰는 건 영어를 공부하는 것보다 훨씬 오랫동안 투자해야 하는 일이고, 가르치기 어려운 일이기 때문입니다. 


프로그래밍도 마찬가지입니다. 프로그래밍 언어는 기초만 확실하면 상대적으로 매우 쉽게 배울 수 있습니다. 학부 기준으로 보면 이산수학, 자료구조, 알고리즘, 운영체제, 데이터 베이스, 네트워크, OOP, FP 등 기본에 집중하는 게 매우 중요합니다. 


‘RDB에서 R이 무엇인가, HTTP가 어떤 식으로 작동하는가, Java에서 abstract class와 interface를 구분해서 쓰는 이유가 무엇인가 등’ 이런 기본 질문에 대한 답변을 생각해보세요. 의외로 설명하지 못하는 경우가 정말 많으니, 먼저 제대로 공부하기를 추천합니다. 기초를 충분히 다졌다면, 다음에는 코드를 자연스럽게 작성할 수 있어야 합니다. 


‘RDB에서 R이 무엇인가, HTTP가 어떤 식으로 작동하는가, Java에서 abstract class와 interface를 구분해서 쓰는 이유가 무엇인가 등’ 기본 질문에 대한 답변을 생각해보세요. 


©️unsplash


+ 코딩 테스트

매우 간단한 코딩 테스트를 예로 들어보겠습니다.


피보나치 수열

(1, 1, 2, 3, 5, 8, 13, 21...)을 계산하는 프로그램을 작성합니다. 반복으로 작성했다면 재귀로 바꿔봅니다. 재귀로 작성했다면 꼬리 재귀로 바꿔봅니다. 에러가 나는 상황을 만들어 봅니다. 어떻게 하면 오류를 미리 발견할 수 있을까요? 어떻게 하면 믿을 수 있는 프로그램이란 걸 동료에게 설명할 수 있을까요?


퀵 소트와 머지 소트

퀵 소트와 머지 소트가 어떻게 다른지 딱 하나만 설명한다면 무엇을 지적하겠습니까? 이 문제를 풀 때 Python을 사용하면 어떤 장점이 있나요? 에러가 나는 상황을 만들어 봅니다. 어떻게 하면 오류를 미리 발견할 수 있을까요? 어떻게 하면 믿을 수 있는 프로그램이란 걸 동료에게 설명할 수 있을까요?


+ Python을 쓰는 회사

혹시 개발자 모임에 참석하신 적이 있나요? 있다면 얼마나 자주 참석하시나요? PyCon에는 참석하신 적이 있나요? 취업을 전제로 한다면, 현업 개발자를 자연스럽게 만나는 게 매우 중요합니다.


©️pexels


오늘부터 바로 실천하실 수 있는 세가지

1. GitHub 계정을 만드세요. 매일 코딩하고, 코드를 GitHub에 올리세요. 참고하시라고 제 계정 올려드립니다.


* 멘토의 GitHub ahastudio (Ashal aka JOKER)

2. 배운 게 있다면 블로그 등에 적어서 공유하세요. 틀려도 괜찮습니다. 틀린 부분을 지적받거나 더 나은 방법을 배우는 게 매우 중요합니다.


3. 개발자 모임에 참여하세요. 가능하면 컨퍼런스는 무조건 참석하세요. Python으로 뭔가를 하고 싶으시다면 PyCon에 주목하세요. 온오프믹스 등을 수시로 찾아보셔도 좋습니다. 책도 몇 권 추천해 드릴테니 꼭 읽어 보세요! 





추천 책 

프로그래머 열정을 말하다 , 프로그래머의 길, 멘토에게 묻다실용주의 프로그래머



멘토님 덕분에 뭘 해야할 지 감이 잡히는 기분입니다. 심도 깊게 기본부터 다져야한다는 생각이 드네요. 감사합니다. 너무 답답했는데 가슴이 뻥 뚫리는 기분입니다. 정말 감사합니다!

아샬 멘토
달랩 · .
IT개발/데이터
코딩의 신[神]
hacker, musician, libertarian
같은 직무를 다룬 글
인기 있는 글
연구/설계
약 5년 전
잇다의 멤버가 되어주세요 🚀
직무, 취업 콘텐츠를 담은   뉴스레터를 받아볼 수 있어요.
멘토에게 직접   질문할 수 있어요.
현직자 클래스를 무료로 수강할 수 있어요.