본문 바로가기
프로그래밍

[프로그래밍 공부법] 프로그래밍을 공부하는 방법

by Couldi 2021. 11. 1.
반응형
1. 공부목적을 확실히 하자.
2. 베이스가 될 프로그래밍 언어를 선택하자.
3. 강의 고르기
4. 강의 수강하기
5. 함께 공부하기.
6. 강의를 완주했다면?

 

프로그래밍을 공부를 시작하기로 마음 먹었다면 어떻게 공부해야할지 막막함이 앞선다. 이건 전공자이거나 비전공자이거나, 문과거나, 이과거나의 문제가 아니다. 누구나 마주하는 '빈 종이에 무엇을 어떻게 채워넣어야할지 모르겠는 막막함'이다.

 

무엇부터 공부해야 되나 알아보면, 우리는 정보의 바다 속에 살고 있고, 구글링을 통해 모든 정보를 접할 수 있으며, 굳이 유료강의나 오프라인 강의를 찾아볼 필요없이, 원하는 정보를 찾아서 공부할 수 있는 세상이라고 한다. 그러니 우물쭈물 하지말고 하고 싶다면 당장 시작하라는 조언이 넘쳐난다.

 

어쩜 이리 구구절절 맞는 말만 한단 말인가! 저 말 중에 틀린 말은 하나도 없다. 하지만 저런 조언을 들었다고 프로그래밍 공부를 처음 시작하려는 사람들의 막막함이 해결되지는 않는다. 여전히 그래서 뭐.. 어디서 부터 시작해야해? 라는 질문에서 자유롭지 못하다.

 

그래서 그런 사람들으 막막함을 조금이나마 해소해 드리고자 몇가지 순서에 따라 공부방법을 제시해보고자 한다. 이 글의 100% 정답은 아니겠지만, 앞으로의 여정에 작은 방향성을 제시해 줄 수 있기를 소망한다.

 

1. 공부 목적을 확실히 하자.

프로그래밍을 공부하는 목적이 확실해야 어떻게 공부할지 정하기 쉽다. 이 목적이 구체적이면 구체적일 수록, 공부하기가 수월해진다.

취업을 위해 코딩테스트를 준비해야하는데, 앱개발이나 웹개발 하는 법을 공부하고 있다면 옳은 공부 방법은 아닐 것이다. 공부하고 싶은 분야를 고르고, 거기에 맞추어 공부를 해나가야한다.

RPG게임에 비유 하자면 캐릭터를 생성할 때 직업을 고르는 것과 비슷하다. 게임과 다른 점이 있다면, 프로그래밍의 세계에서는 선택한 직업의 변경이 비교적 자유로운 편이고, 한 직업을 골라 충분히 키웠다면, 다른 직업을 고르더라도 맨땅에 헤딩하는 것보다 빠른 시간내에 성장할 수 있다. (물론 세부적인 분야에 따라 그렇지 않을 수도 있다.)

 

처음 공부하는 사람들이 목표로 삼아도 괜찮은 카테고리를 추천하자면 아래와 같다.

  • 웹 개발
  • 앱 개발
  • 게임개발
  • 인공지능

각 분야마다 공부해야하는 언어와 분야가 달라지기 때문에 처음 선택에 따라 배우는 영역이 전혀 다르게 느껴질 수 있다. 하지만 고수의 영역에 들어서는 순간 프로그래밍 부분에서 오는 차이는 정말 '사소한' 차이에 불과하고, 각 영역의 '도메인 지식'에 따른 어려움이 크게 다가오게 된다. 하지만 이 부분에 대한 걱정은 잠시 접어두자. 우리는 목표를 선택하고 이제 첫발을 내딛는 단계니까.

 

2. 베이스가 될 프로그래밍 언어를 선택하자.

다음으로는 내가 사용할 언어를 고르는 작업이다. 내가 사용할 언어를 골라서 차근차근 배워나가야한다. 프로그래밍 언어는 대부분이 C언어에서 파생되어 비슷한 문법구조를 가지고 있어, 처음 한 언어를 잘익혀두면 다른 언어를 배우는 건 마치 사투리를 배우는 정도의 수고로움이 들 뿐이다. 그럼에도 첫 언어를 잘 골라야하는 이유는, 그 첫 언어가 프로그래밍에 대한 전체 인상을 좌우하기 때문이다.

처음 공부하는 사람들에게 추천하는 프로그래밍 언어는 다음과 같다. 앞서 골랐던 개발분야에 따라 사용되는 언어가 조금씩 다르니 신중하게 결정하자.

  • 파이썬(Python)
  • 자바스크립트(JavaScript)
  • 자바(JAVA)
  • 다트(Dart)
  • C++
  • C#

처음 공부하는 사람들에게 추천하는 언어는 이 정도이다. 사실 이전 기준이라면 추천하지 않는 언어들이 섞여있다. 하지만 최근 프로그래밍을 배우려는 사람들의 역량과 변화된 학습 환경을 고려해보면 저 정도의 언어들은 입문으로 충분히 괜찮고 경쟁력 있는 언어들이다.

 

웹 개발

먼저 웹 개발을 하고 싶은 사람들이라면, 파이썬과 자바스크립트를 고르면 된다. 개인적으로는 자바스크립트를 추천한다. 인공지능영역까지 공부해볼 생각이 있다면 파이썬을 선택하라. 둘다 입문하기 좋은 언어이고, 파이썬 보다 자바스크립트가 조금 까탈스런 면이 있긴 하지만 둘다 엄청난 커뮤니티와 사용자들을 가지고 있는 훌륭한 언어들이다. 아 한가지 이야기 안하게 있는데, 입문언어로 자바스크립트를 골랐다면 자바스크립트 원툴로 모든 것을 할 수 있지만, 파이썬을 골랐다면 언젠가 자바스크립트를 공부해야할 시점이 오게 될 것이다. 웹에서 자바스크립트는 피할 수 없는 존재다. 게다가 자바스크립트를 공부하면 추후에 앱개발에도 도전해 볼 수 있다. 매력적이지 않은가?

  • 웹 개발도 하고 인공지능 쪽 공부도 하고 => 파이썬
  • 웹 개발도 하고 나중에 앱도 도전? => 자바스크립트
  • 웹! 오로지 웹! => 자바스크립트( + 추후 백엔드 언어 선택 해서 하나 더, 자바스크립트 원툴로도 가능!)
  • 취업! 취업! => 자바, 자바스크립트

앱 개발

앱개발은 일단 진영이 나누어져 있다. 안드로이드 진영에서는 코틀린과 자바, IOS진영에서는 Swift, Object-C를 배워야 앱을 만들 수 있다. 앱 개발을 처음 공부한다면 나는 Dart를 추천한다. Dart가 가진 flutter 프레임워크는 안드로이드와 IOS 두가지 모두 앱을 만들 수 있게 도와주고, 앱개발을 처음 도전하는 사람들이 다루기 쉬운 구성을 가지고 있다. 일반적으로 앱 개발의 경우는 웹개발을 하던 사람들이 넘어오는 형태로 개발 생태계가 구축되었기 때문에, 프로그래밍 입문자가 도전하기에 그렇게 좋은 환경이 아니였다. 지금도 웹개발보다 입문하기 좋은 환경이라고 말할 수는 없다. 하지만, 이제는 도전해보는 것도 썩 괜찮을 만큼 커뮤니티도 커졌고, 입문자들을 위한 컨텐츠들도 많이 생겼기에 추천할 수 있는 영역이다.

Dart를 입문 언어로 추천해 의아할 수도 있다고 생각한다. 내가 플러터의 팬이라는 사실도 Dart를 고른 이유 중 하나이다. 각 진영의 고유 언어보다 크로스플랫폼이 Flutter를 위해 Dart를 공부하는건 시기 상조라고 할 수도 있다. 하지만, Dart는 썩 괜찮은 언어이다. 이 언어를 배우고 다른 언어를 새로 배우는 것이 어렵지 않다. 그래서 처음 공부하는 사람들에게 추천할 수 있다.

앱개발자로 취업을 원해서 급하게 공부를 시작했다면 안드로이드나 IOS진영의 언어를 골라 배우는게 낫다. 하지만 그게 아니라면 Dart로 시작해서 앱개발을 경험해보고, 자신의 상황에 맞게 Dart와 Flutter를 더 심도 있게 공부하를 하던, 안드로이드나 IOS 진영중 하나를 선택해서 네이티브 개발자를 목표를 잡는것이 좋다고 생각한다.

앱개발을 이야기하다보면 피할수 없이 나오는 이야기 중에 리액트 네이티브(RN)라는 것이 있다. 실제로 이걸 기반으로 돌아가는 서비스들도 있고, 자바스크립트를 기반으로 돌아가는 크로스플랫폼이기 때문에, 자바스크립트를 다루는 앱개발자 또한 인기가 좋은 편이다.

자바스크립트를 다루는 수많은 개발자들이 자바스크립트를 활용해서 앱개발이 하고 싶었고, 그래서 만들어진게 RN이다. 하지만 앱개발에 입문을 자바스크립트로 하는 것은 추천하지 않는다. 웹개발을 할 줄 아는 사람들이 앱개발이 하고 싶어 선택하는게 RN이다. 만약 RN을 통해 앱개발을 하는 개발자를 꿈꾼다면, 먼저 웹개발세상을 경험하고 오기를 추천한다.

  • 앱개발이 처음인 초보 => 다트
  • 취업! 취업! => 자바, 코틀린, Swift, (다트 - 지금은 추천하지 않으나 머지않아 추천해야 될 것 같은 느낌...)
  • 자바스크립트 웹개발자에서 앱개발자로 전향 => 자바스크립트(React Native), 다트
지금 크로스플랫폼에 대한 선호도를 조사해보면 RN이 Flutter보다 압도적으로 높은 선호도를 가지고 있다.
이유는 단순하다. 자바스크립트를 사용하는 개발자들이 많아서 그렇다. 반면 dart를 쓰는 개발자는 이제야 조금씩 늘어가고 있는 추세라고 볼 수 있다. RN이 Flutter보다 인기 있는 이유에 대해 여러 이유가 있겠지만, 보통 자바스크립트 개발자들은 자바스크립트로 모든걸 해결하고자 하는 경향이 있고, 그래서 아직 플러터를 많이 접해보지 않았기 때문에 RN에 대한 선호가 높다고 생각한다.
헤이, 츄라이 츄라이. 플러터 잡솨봐

 

게임 개발

게임 개발은 독학하기 쉬운 분야가 아니다. 혼자 개발하기 역시 쉬운 분야도 아니고. 괜히 종합예술이라는 이야기가 나오는게 아니라는 생각이 든다. 하지만 공부를 못할 분야도 아니다. 특히 프로그래밍 입문으로 게임개발을 선택했다면, 게임에 대한 열정이 진심일 것이라는 생각이 든다. 게임 개발은 C++와 C# 언어를 선택해서 공부하게 되는데, 언어부터 익히고 게임개발을 해야지 라고 생각한다면, 열정에 찬물을 끼얹는 것일 지도 모른다. 게임 개발이 하고 싶다면, 언어가 아닌 게임엔진 부터 고르는걸 추천한다.

게임을 밑바닥 부터 한땀한땀 만드는 시대는 옛날에 끝났다. 게임 제작을 도와주는 툴을 게임 엔진이라고 하고, 요즘 대부분의 게임은 게임엔진을 통해 제작된다. 유니티랑 언리얼 엔진이 가장 유명하다. 해당 엔진을 고르고 관련된 교육을 찾아 하나하나 해나가라. 프로그래밍 언어에 대한 공부는 게임엔진을 공부하는 과정 중에 병행해야, 흥미를 잃지않고 끝까지 공부할 수 있을것이다.

 

인공지능

인공지능 때문에 프로그래밍을 공부한다면, 두말할 것도 없이 파이썬을 공부해라. 파이썬이 답이다. 가끔 자바스크립트로도 머신러닝이나 인공지능을 할 수 있다고 주장하는 사람들이 있는데, 그 사람들 말이 맞다. 할 수 있다. 그러니까 파이썬을 공부해라. 쓸데없이 다른 것들에 눈길을 주느니 파이썬을 공부하고 남는 시간에 수학이나 논문을 몇편 더 보도록해라.

 

3.  강의 고르기

독학을 하기로 결정했다면 강의부터 골라야한다. 유튜브에 수많은 강의, 기타 프로그래밍 업체들이 파는 수많은 유료강의들이 넘쳐난다.

초보자 입장에서는 어떤강의가 좋은 강의인지 모르기 때문에 여기저기서 초보용 강의라고 하면 혹 할 수 밖에 없다. 하지만 그렇게 강의를 쫓아다니다가는 여러강의를 섭렵한 초보자로 남게되기 쉽다.

내가 추천하는 강의 고르는 법은 자신이 공부하고 싶은 분야, 공부하고 싶은 언어에서 가장 많이 팔린 강의를 보라는 거다.

개인적으로 Udemy에 있는 강의들을 선호하는 편이고, 전세계 사람들이 듣는 강의이기 때문에 여기서 가장 많이 팔린 강의라는 건, 그만큼 전세계적으로 인정을 받았다는 이야기이기도 하다. 영어라서 부담을 느낄 수는 있지만, 영어로된 스크립트도 제공하고, 요즘 번역기도 잘되어 있으니, 꼼꼼한 공부를 원한다면 스크립트를 번역기에 돌려가며 공부하면 된다.

그렇게 공부하지 않더라도, 어떤 식으로 코드를 작성하고 작동시키는지 따라하며 공부하게 커리큘럼이 구성되어 있기때문에, 말을 30~40%만 알아들어도 얼추 따라하며 공부할 수 있다.

  • 가급적 영어로된 강의를 선택하라.
  • 최근에 업데이트된 강의를 골라라.
  • 많은 사람들이 선택한 강의를 골라라.
  • 평점이 높은 강의를 선택해라.

위 기준으로 강의를 추렸다면, 세부적인 항목으로 다음 것들을 고려해라.

  • 예제나 프로젝트 기반의 학습구성을 갖추고 있는가?
  • 강의가 15분 이내 길이로 잘게 쪼개져 있는가?
  • 이론 -> 실습 -> 도전과제 순의 구성을 지키고 있는가?

이러한 기준들을 충족하는 몇 개 강의를 추천하면 아래와 같다.

 

https://www.udemy.com/course/the-complete-web-development-bootcamp/

https://www.udemy.com/course/the-web-developer-bootcamp/

https://www.udemy.com/course/flutter-bootcamp-with-dart/

https://www.udemy.com/course/learn-flutter-dart-to-build-ios-android-apps/

 

4. 강의 수강하기

괜찮은 강의를 골랐다면 그 강의가 이제 여러분이 공부할 프로그래밍 세상의 베이스캠프가 되어줄 것이다. 강의자가 요구하는대로 강의를 따라해보는게 우선이다. 한번 따라서 해봤다면, 완성된 코드를 읽어보고, 강의를 보지 않고서 작성해봐라. 좋은 강의인 경우에는 혼자 생각해 코드를 작성하라는 지시사항을 내려주기도 한다. 그렇게 연습하다보면 이해했다고 생각한 내용이 사실은 이해가 안되어있다는걸 알 수도 있고, 아무리 최신강의를 골랐어도 촬영시점과 실습 시점의 차이 때문에 발생하는 여러가지 에러들이 있을 수 있다. 학습이 시작되는 지점은 강의를 따라하다가 문제를 마주했을때 부터이다.

프로그래밍 학습은 그 원리와 구조를 이해하는 것도 중요하지만, 학습에 대한 태도를 만들어 나가는 것이 더 중요하다. 해결되지 않는 문제에 대한 분석과 해결을 위한 수많은 시도. 그 과정이 프로그래밍을 하는 뇌 근육을 단련시키고 보다 나은 실력을 가지게 한다.

성장의 시작 지점은 문제를 마주 했을때다.

공부를 하다보면 내가 이해를 하고 코드를 치는지, 그냥 따라치고있기만 한지 애매한 기분이 드는 시점이 온다. 그럴때면, 일단 듣던 강의를 끝까지 완주해라. 해당 강의, 혹은 해당 강의가 포함된 섹션을 완주해보는게 좋다. 그리고 작성된 코드를 하나하나 읽어보며 왜 이런 코드를 작성했는지 생각해보고, 작성된 코드에 변형을 주는 시도를 해라. 그러면 수없이 많은 에러를 마주하게 될거고 그 에러들을 해결하는 과정 중에 코드의 구조와 흐름이 이해될 것이다.

 

 

5. 함께 공부하라

독학으로 공부를 혼자 잘 하고 있는 사람들에게는 의아한 이야기 일 수 있다. 하지만 혼자 공부하는 것보다 함께 공부해야 배우는게 더 많다. 성장의 시작 지점은 문제를 마주한 시점이다. 다른 사람들과 공부하면, 내가 겪은 문제를 다른 사람의 도움으로 보다 쉽게 해결해서 성장해 나갈 수도 있고, 다른 사람들의 문제를 함께 고민하며 성장할 기회를 얻을 수 있다.

내가 아는 내용을 다른 사람에게 설명하는 과정에서 개념에 대한 이해를 좀 더 명확히 할 수도 있고, 반대로 다른 사람의 설명으로 어려운 개념을 쉽게 이해해버릴 수도 있다.

특히 이러한 함께 성장하는 경험은 같은 강의를 통해 공부했거나 했던 사람들과 소통할 때 훨씬더 좋은 효과가 나타난다. 서로 어떤 내용을 공부했고, 어떤 문제에 직면했는지 더 잘 알고 있으니까. 

https://study.flearner.co/
그래서 이런 모임도 만들어서 운영하고 있다.
함께 공부하는 순간, 성장의 질이 달라져버리니까!
 

플러터 스터디 : 플러너 2기 모집 🎉

Udemy에서 판매 중인 강의를 기반으로 함께 플러터를 공부할 플러너를 모집합니다! (진행 강의 : The Complete 2021 Flutter Development Bootcamp with Dart) 🙋🏻 혼자 꾸준히 공부하기가 어렵다면? 🙋🏻 열정

study.flearner.co

 

6. 강의를 완주했다면?

강의를 완주했다면, 여러분의 프로그래밍 세계로의 여행을 위한 베이스캠프 건설이 끝났다고 보면 된다. 전체적인 개발 프로세스와 학습해나가야할 방향같은 것들을 강의를 통해 익혔기때문에, 강의의 내용을 기반으로 자신이 원하는 프로젝트들을 진행하면서 추가적으로 모르는 내용을 학습해 나가면된다.

이제 정보의 바다 속에서 원하는 자료를 찾아 볼 능력을 갖추게 되었다고 보는게 맞다. 유튜브를 보던 다른 강의를 사보던 자유롭게 공부하자. 자신에게 부족한 부분을 찾아보고, 그 부분을 메꿔줄 수 있는 강의나 자료를 찾아 스스로 결정할 수 있다.

함께 공부했던 동료들이 있다면 동료들과 새로운 프로젝트를 시도해보는것도 좋은 선택일 것이다.

조금 큰 규모의 서비스를 클론하는 것을 시도해보는 것도 좋다. 강의를 완주했다면, 강의를 처음 시작했을때의 나 자신과 비교해보기 바란다.

그 때의 나에 비해, 분명 큰 폭으로 성장했다는걸 알 수 있을 것이고, 어떻게 공부해 나가야할지 감이 잡혀있을거라 확신한다.

반응형

댓글