프로그래밍을 배우는 과정(2)

https://pixabay.com/photo-1084923/

프로그래밍에 막 관심이 생긴 사람을 위한 간단한 안내 두 번째 글입니다.

생소한 분야를 파고들 때 드는 막막함을 다소 해소할 수 있다면 성공이지요.

제게 익숙한 웹 분야를 토대로 풀어보겠습니다.

프레임워크를 익힌다.

이제는 프레임워크(framework)이다. 프레임워크는 단어의 뜻처럼, 어떤 분야의 앱(서비스)을 만드는 데 쓸 수 있는 기본적인 틀이다. 재사용할 수 있는 코드를 미리 마련해두어서, 프로그래머가 하부 기술이나 반복 작업에 신경쓰지 않게 대신 처리해 주어서, 개발자가 앱의 독자적인 기능 구현에 집중할 수 있도록 도와준다.

웹 앱 구현에 쓰는 프레임워크는 대부분 MVC 디자인을 따르고 있다. Ruby에서 유명한 Rails, Python의 Django가 대표적이다. MVC를 정보(데이터)의 관점에서 간단히 설명하면,

  • Model: 앱에서 필요한 데이터를 저장한다. 주로 데이터베이스를 사용하며, ORM 방식으로 구현한다.
  • View: 데이터를 보여주는 방식을 처리한다. 사용자가 직접 접하는 페이지, UI 등을 구현한다.
  • Controller: Model과 View 사이를 연결하며, 주요 기능과 로직을 담당한다. 예를 들어 필요한 데이터를 Model에서 가져와, 적절하게 가공하여 View에게 보내는 것이 이 컨트롤러의 몫이다.
  • MVC의 목적은 이 세 부분을 분리하여 구현하자는 것이다.

언어에 맞게 프레임워크를 선택한 후, MVC 디자인을 익혀보자. 어떤 기능을 구현해야 할 때, M.V.C 중 어느 부분에서 처리하는 게 나을 지 고민해 보자. 그러면 나중에 문제가 생기거나 수정을 해야 할 경우, 찾아보기 쉽고 처리하기 간편할 것이다.

프레임워크를 익히는 데 유의할 점이 있다. 바로 언어의 문법과 프레임워크의 사용법을 구분하는 것이다. 라이브러리와 달리, 프레임워크는 마치 문법처럼 그만의 규칙을 따로 정해 놓는다. 아직 프로그래밍에 익숙하지 않으면, 이 둘을 헷갈리기 쉽다.

또 언어의 문법을 배우는 것처럼 프레임워크의 문법도 별도로 배우고 익히는 과정이 필요하다. 프레임워크의 덩치가 클 수록 당연히 배워둘 것이 많아진다. 하지만 프레임워크마다 사용법이 각자 다르기에, 한 프레임워크를 익히는 데 너무 치중하지 않기를 바란다. 전반적인 구조나 개념을 익히는 데 집중하고, 세세한 것은 그 프레임워크만의 특징으로 알아두는 것이 낫다.

간단한 사이트를 만든다.

프레임워크를 익혔다면, 이를 활용해 간단한 사이트를 만들어본다. 이제까진 이론이었으니, 실습을 해보는 것이다. 좋다고 해서 도구를 사 두어도, 실제 써먹어야 비로소 가치가 생기는 법이니까.

지금부터는 실제 개발자와 비슷한 문제에 부딪히고, 고민을 경험할 수 있는 기회이다. 이제까지는 가이드 또는 예제가 있어서, 정확하게 따라하기만 하면 됐다. 오류를 만났더라도 오타나 구문 오류에 그쳤을 것이다. 하지만 실제로 사이트를 구현해보면, 이제껏 접하지 못한 상황에 처하게 된다. 하지만 그 과정을 겪고 나면, 그만큼 자신감이 생기고 더 깊이 이해하게 된다. 프로그래밍 언어라는 도구를 더 익숙하고 자유롭게 다룰 수 있는 것이다.

인터넷 초기에는 게시판을 만드는 것이 유행이었다. 지금도 여전히 유효하지만, 평소에 자신이 자주 사용하고 친숙한 서비스가 있다면 시도해 보자. 블로그나 할일 앱 같은 사이트 말이다. 개인적으로 구현이 매우 간단했던 할일 앱을 추천한다.

그 외

중요하지만 간과할 만한 내용을 덧붙인다.

개발 환경을 갖춘다: 설치

개발 환경을 갖추는 것은 중요하다. 자신의 방이나 사무실 공간을 본인이 편하게 집중할 수 있도록, 주변을 정리하고 준비하는 것과 비슷하다. 운영체제에 따라 언어와 프레임워크, 텍스트 편집기를 설치해 둔다. 그리고 ‘Hello, world!’를 표시하는 것으로 마무리한다.

코드 실행 방법을 알아둔다.

코딩은 다음 과정을 되풀이한다.

  • 코드를 입력한다.
  • 코드를 실행한다.
  • 결과를 확인한다(디버깅한다).

그러니 당연하게도, 코드를 실행하는 방법을 먼저 알아두어야 한다. 언어의 문법을 익히기 전에 알아두도록 하자.

코드를 입력한다: 에디터

소스 코드는 일반 텍스트(서식이 없는) 형식이어서, 이를 편집할 수 있는 앱이라면 무엇이든 가능하다. 윈도우에 메모장이나 워드로도 가능하다. 하지만 가능하다는 것이지 결코 편리하진 않다. 코드를 입력할 수 있는 전문 도구는 참 다양하다. 크게 입력 및 편집에 집중하는 앱과 프로젝트 관리, 디버깅 등 편의 기능을 포함하는 앱이 있다. 전자를 코딩 전문 에디터, 후자는 IDE로 부르겠다.

IDE는 기능이 다양하고 강력하다. 편리한 만큼, 자칫 이 IDE라는 도구의 사용법에 매몰될 수도 있다. 프로그래밍을 익힐 때 흔히 IDE를 추천하지만, 개인적으로는 코딩 전문 에디터로 시작하는 것도 좋은 방법이다. 코딩 전문 에디터는 기본적인 기능도 뛰어나지만, 필요한 기능이 있다면 쉽게 확장할 수 있도록 지원한다. Sublime TextAtom을 추천한다.

결과를 확인한다: 디버깅

프로그램의 오류를 버그(bug)라 하는데, 디버깅(debug)은 이 오류를 잡아내는 것이다. 오류 메시지는 내 코드에 대한 컴퓨터의 응답이다. 코드 중 컴퓨터가 이해할 수 없는 부분을 상세히 알려주면서 고쳐달라고 말하는 것이다.

프로그래밍도 사람이 하는 것이라 오류가 없을 수 없다. 우스갯소리로, 개발자는 코딩을 끝내고 처음 실행했는데 오류가 없으면 오히려 불안해하기도 한다. 그만큼 디버깅은 자연스러운 과정이다. 버그가 생기는 것을 실패라고 받아들이기 보다는, 필수 과정이라 생각하고 익숙해지는 것이 필요하다. 다행히 사람과 달리 컴퓨터는 속이는 경우가 없으니, 오류 메시지를 철썩 같이 믿고 차근차근 살펴보면 되겠다.

예제를 따라하는 것을 마치고 직접 프로그램을 만들기 시작하면, 곳곳에서 내뿜는 오류 메시지에 당황하게 된다. 오류 메시지는 매우 장황해 보이지만, 언어에 상관 없이 대부분 비슷한 형식을 취하고 있다.

  • 오류가 발생한 이유를 한두 문장으로 설명한 뒤,
  • 발생한 지점(파일명과 함께 몇 번째 줄)을 알려준다.

메시지의 대부분은 발생한 지점을 나열하는 부분인데, 보통 처음 발생한 지점부터 단계를 올라가며 파일 경로를 나열한다. 그러니 오류 메시지가 뜨면, 위에서부터 차근차근 파일 경로를 따라가다가, 본인이 작성한 파일 경로를 찾아본다. 그리고 실제 코드 내용을 찬찬히 살펴본다. 그 뒤 오류 설명 문구를 참고하여 디버깅을 해 보자.


제가 실제로 프로그래밍을 배우며 경험한 바를 정리한 글입니다.

맘 속에 자연스레 자리잡은 호기심은 소중합니다.

그것이 단지 호기심만으로 그치지 않게, 작게나마 보탬이 되길 바랍니다.

Show your support

Clapping shows how much you appreciated Joon Kim’s story.