ETC/CodingTest

가장 기본적인 프로그래밍 독학 순서

페로페라 2021. 5. 26. 23:31
반응형

나는 컴퓨터공학을 전공한 사람으로 대학에서 C, JAVA, C++, Python, HTML/CSS을 배웠다.

전형적인 수동형 사람이었다. 뭔가 알아보고 스스로 해보기보단 대학 커리큘럼에 맞추어 공부하는 그저 그런 학생.

학교에서 강의를 듣고, 해당 범위에 있는 예제들을 따라 쳐보고, 돌아가는 것을 보고, 끝.

대학교에서 가르치는 프로그래밍 과목은 대개 문법을 한 학기가량 가르친다. 시험도 그와 유사하게 문법을 묻거나 간단한 코딩 몇 줄을 보는 형태이다.

그래서 나는 정말 기초 문법들을 열심히 공부하고, 과제용으로 여러 프로젝트를 만들었고, 공모전 입상을 위한 개발을 참 많이도 해왔지만, 논리적인 프로그래밍은 잘 하지 못했다.

내 코딩 방식은 오류가 나면 그 부분만 고치고, 고치고, 고치면서 코드의 체계성과 논리성은 점점 산으로 가는 코딩을 해왔다.

그리고 알고리즘 풀이가 낯설었다. 대학생활을 하면서 자연스럽게 1~2학년 때 배운 프로그래밍 언어들을 1~2년씩 소홀히 두고, 쓰던 코드들만 쓰게 되기 때문에 기본적인 알고리즘에 활용되는 근본적인 풀이가 낯설어졌다.

이제는 시간 여유가 생겨 알고리즘 해결 연습과 체계적인 코딩을 하고 싶어졌다. 어쩌다보니 잘 풀리는 코드가 아닌 논리를 갖춘 코딩.

그러다 문득, 무슨 순서로 다시 코딩 공부를 하는 것이 좋을까를 고민하다 대학생 1학년 시절의 내가 떠올라 프로그래밍 독학하는 방법을 순서대로 정리해보기로 했다. 많이 고민해보고, 다른 분들의 공부 방식을 찾아 정리한 대략적인 프로그래밍 공부 순서는 이렇다.

프로그래밍 공부 순서

1. C언어 문법 배우기

당장 무언가를 만들고자 하는 것보다 기본부터 배우고 싶다면 C언어를 배워야 한다. 배우기 쉬우면서도 가장 강력한 언어에 속하는 프로그래밍 언어이기 때문이다. 책을 사서 공부해도 되고, 이론과 실습을 동시에 할 수 있는 사이트를 찾아보거나 인터넷(유튜브, 생활코딩)을 통해 공부해도 좋다.

가장 중요한 것은 지금 당장 예제를 하나라도 더 따라하고, 이해하는 것이다.

 - 추천하는 책 : 윤성우의 '열혈 C프로그래밍'

 - 추천 사이트 : C언어 코딩도장

 

2. 알고리즘 습득하기

알고리즘은 중요하다. 하지만 그 전에 자료구조를 먼저 공부하는 것을 추천한다. 자료구조는 반드시 익힐 필요가 있다.

사실 여러 프로젝트를 해 본 사람들은 공감할 사례이지만, 눈앞의 프로젝트를 당장 해결해야 할 상황에서는 자료구조와 알고리즘이 개발에 있어 크게 중요하다고 느껴지지 않는다. 대충 코드 넣고 돌리면 오류생기고, 오류 고치면 다른 오류가 생기고, 그걸 반복하다보면 왜인지 이유는 모르겠지만 언젠간 원하는 방식으로 동작하기 때문이다. (해결 이유와 오류 원인은 제대로 알지 못한 채.)

자료구조를 당장 구현하지 않아도 되고, 한 번 구현해보고 더이상 들여다보지 않을 거라면 직접 구현해보지 않는 게 낫다. 그저 자료구조에 대해 암기할 거라면 말이다. 자료구조는 이해하는 연습을 해야 한다.

자료구조 공부가 너무 싫다면 큐, 스택, 덱, 힙, 이진검색트리 정도만이라도 먼저 익히는 것을 추천한다.

그런 다음, 알고리즘을 공부하면 좋다. 알고리즘을 연습하는 방식은 참 다양하지만 요령없이 직접 삽질해보는 것이 가장 좋은 방법인 것 같다.

 

3. OOP 언어 배우기

OOP 언어란, 객체지향언어(Object-Oriented Programming)을 의미한다.

OOP 종류는 너무 많다. C++, C#, JAVA, Python 등등등.. 본인이 마음에 드는 언어를 정하면 된다.

그리고 앞에서 말했던 것처럼 문법을 배우고, 알고리즘을 풀면서 스스로 오랜 시간 삽질을 해보면 된다.

아마, C언어를 제대로 익혔고, 꽤 오랜 시간 공들여 알고리즘 문제들을 풀어봤다면 (최소 3개월 이상) 이 단계를 거치는 것은 오랜 시간이 걸리지는 않을 것이다.

 

4. 직접 만들기

나는 문법을 익히고, 자료구조와 알고리즘을 공부하는 것까지 대략 3개월~6개월 정도 투자하길 권장한다.

이런 단계를 거치고 나면, 스스로도 이런 생각이 든다. '이렇게 배운 언어로 그래서 뭘 만들 수 있을까?' 

정답은 없다. 본인에게 달려있다. 본인이 많은 것을 만들고 싶으면 많은 것을 만들 수 있고 하나를 만들고 싶으면 하나를 만들 수 있다.

즉, 무엇이든 본인이 만들고자 하면 다 만들 수 있다는 것이다.

뭐부터 시작해야할 지 모르겠다면, 구글링을 하면 된다.

본인이 만들고 싶은 것이 앱이라면, '앱 만들기'를 검색해보자. 정말 수만가지의 코드와 강의가 쏟아진다.

본인이 만들고 싶은 것이 웹이라면, '웹 만들기'를 검색해보자. 마찬가지로 수만가지의 코드와 강의가 쏟아진다.

무엇이든 하나부터 천천히 만들어보는 것을 추천한다.

728x90
반응형