저도 프로그래밍을 할 수 있을까요?
브런치를 시작하고 한 20~30분 정도가 제게 연락을 주셨습니다. 프로그래밍으로 돈을 벌지도 못하고, 직업이라고 하기에도 애매한 제가 답할 질문이 맞나 싶긴합니다. 그래서 답이라기보단 제 생각을 조금 적어보고자 합니다.
외국어를 배울 때 문법부터 배우는 사람이 잘할까요? 저는 원어민처럼 말하고 싶습니다. 공부를 하기보다 즐겁게 이야기하고 싶습니다. 마찬가지로 저는 컴퓨터 사이언스에 대해 잘은 모릅니다. 하지만 말하는 법은 알고 있습니다. 보통 프로그래밍을 배운다 하면 토익 공부처럼 생각하시는 분들이 있습니다. 책을 사고, 공부하고, 이해하고, 그 다음 무언가 만든다. 그런데 실제론 그렇지 않습니다. 굳이 책을 살 필요도, 공부할 필요도 없이 그저 따라하다보면 알게 되어있습니다.
저는 개발을 할 때 '보는걸' 먼저 생각합니다. '여기에 버튼이 있어야겠다.'하고요.
그럼 버튼이 작동되는 모든 코드를 먼저 짜는게 아닙니다. 그냥 모양부터 만들어보는거죠.
예를 들어 현재 시간을 보여주고 싶으면, 현재 시간을 담당하는 부분을 추가해줍니다. 현재 시간을 계산하는건 나중에 하면 되니까요. 제가 제작하는 확장 프로그램에선 이렇게 모양을 다뤄주는 부분의 파일에 이런식으로 적으면 됩니다.
div는 division를 뜻하는데 공간을 정해줄 때 씁니다. 이런식으로 어떤 공간에 13:25라는 숫자를 적어두고, 이쯤이 좋겠구나 두는겁니다. 만약에 버튼을 만들고 싶다면? div대신에 button을 적어줍니다.
이렇게 만들면 아주 간단한 모양이 나타날겁니다. 아직 꾸미진 않았으니까요. 여기까지 보시다보면 코딩이라는거에 변수 선언이라던지, 자료형 같은 어려워보이는 부분은 1도 없습니다. 그럼 간단히 꾸며볼까요? 이 파일과 함께 연결될 스타일시트(.css)를 만들어줍니다. 스타일시트에 위치를 정해주거나, 색을 바꿔주거나, 폰트를 바꿔주면 모양이 바뀌게 됩니다.
예를 들면 이런식이죠.
처음 보시는 분들은 어려워보일 수 있지만 간단합니다.
<button>의 스타일을 정해주는 겁니다. 배경색은 파랑으로, 글자는 보라색으로 해달라는거죠. 여기까지 여러분이 많이 보셨을 var, console.log(), function() {}, for문이나 if문은 하나도 없습니다.
그럼 이제 모양은 꾸몄으니 기능이 있어야겠죠?
기능을 한번 만들어봅시다. 필요한 기능은 현재시간을 보는겁니다. 대강의 순서를 짜봅시다.
현재시간을 가져오는건 이렇게 하면 됩니다.
여기서 var은 변수를 만드는 명령입니다. 변수라는건 무엇이던 담을 수 있는 상자와 같습니다.
저는 time이라는 변수에 현재 시간을 가져오는 명령 new Date()를 썼습니다.
이렇게 되면 time은 현재 시간을 담은 상자가 되었습니다.
Date()라는 친구는 여러 기능이 있습니다. 그 중에서 우리가 보고 싶은건 현재 시간입니다.
하나하나 보면 time이라는 상자에서 몇시인지 알려달라는 명령(getHours())을 해서 hour라는 상자에 넣었습니다. 마찬가지 방법으로 분을 넣어봅시다.
이렇게 하면 시간과 분을 각각 hour, minute라는 변수(상자)에 넣었습니다.
이로써 개발목표 1번(현재 시간을 컴퓨터에서 가져와야됩니다.)을 완성했습니다.
간단하죠?
이 값을 위에 만든 <div>에 넣으면 성공이네요. 어떻게 넣을 수 있을까요?
먼저 <div>에 이름이 있어야 값을 넣어줄 수 있을겁니다.
이렇게 아이디를 넣어줍니다. 그러면 컴퓨터가 어디에 값을 넣어줄지 알 수 있습니다.
아직 값을 넣는 명령을 안했네요.
'time-div'라는 친구도 상자에 넣어주어야 됩니다. 이 과정이 계속 반복되는데 변수 선언이라고 표현합니다.
어려워보이나요? 한 번 한글로 해석해봅시다.
여기서 문서는 <div>를 적어둔 파일을 뜻합니다.
'거기에서 'time-div'라는 아이디를 가진 놈은 앞으로 timer라고 부른다.'라는 뜻입니다.
timer라는 친구에게 값을 넣어줍시다.
여러분이 innerText를 써보지 않아도 이해하실수 있을겁니다. timer라는 친구 안에 텍스트를 바꾸라는 뜻이죠.
이렇게 개발은 진행할 수 있습니다. 안드로이드건 아이폰에 들어갈 앱을 만들건 게임을 만들건 비슷하죠. 물론 인공지능을 개발할 때처럼 겉으로 보이는 부분은 거의 없는 분야도 있긴 합니다. 하지만 처음하시는 분이 인공지능을 개발하진 않겠죠?
그럼 C언어부터 배우면 되나요?
대부분 C언어부터 배우시려고 합니다. 하지만 별로 추천드리고 싶지 않습니다. 여러분이 만들고 싶은건 대부분 C로 안만듭니다. 여러분은 보통 3개 중 하나를 원하실 겁니다.
안드로이드 : 자바, 코틀린, C# 등
iOS : Object-C, 스위프트 등
HTML, 자바스크립트, CSS 등
유니티, C#, C++ 등
그 어떤 항목에도 C언어는 없습니다. 보통 기본기의 개념으로 C를 배우게 되는데 저는 C를 통해 기본기를 배울 필요가 없다고 봅니다. C는 배우시면 아시겠지만 다른 언어에서는 쓰이지 않는 스킬들이 뒤로갈수록 많아집니다. 그 뿐 아니라 일단 어렵습니다. 처음 하시는 분들이 배우시기엔 C언어보단 파이썬이나 자바를 권하고 싶습니다.
파이썬을 간단히 설명하면 배우기 쉽고, 이해하기 쉬운 언어로 평가받고 있습니다. 게다가 요즘 핫이슈인 인공지능과 신경망 등에 가장 많이 사용되는 언어입니다. 또한 C언어를 기반으로 하기 때문에 파이썬을 하시고 C언어를 배우는것도 나쁘지 않습니다.
배운다기보단 만듭시다!
어떤 언어가 되었던 배우는건 좋습니다. 그러나 프로그래밍은 그 어떤 언어보다 쓰지 않으면 늘지 않는 언어입니다. 여러분이 어떤 언어를 배우는것보단 간단한 프로젝트를 짜서 직접 만들어보면서 배우는게 가장 좋습니다. 어플리케이션에 관심이 많으시면 그냥 만들어보세요. 생각보다 어렵지 않습니다. 온라인에는 여러 동영상 강의가 처음부터 끝까지 만드는 걸 알려줍니다.
개인적으로 도움을 받은 이 영상 목록도 좋고, 온라인에는 엄청난 자료가 산처럼 쌓여있습니다.
코드카데미 : 직접 코드를 치면서 문제를 풀어나가고, 테스트해볼 수 있습니다.
생활코딩 : 한국에서 가장 유명한 강좌일겁니다. 넓은 분야에 대한 좋은 내용들과 깔끔한 설명을 해주십니다.
티아카데미 : 최근 트렌드에 맞는 강좌가 많습니다.
놀부블로그 : 개발에 도움이 되는 여러 번역글들을 모아두었습니다.
프로그래머스 : 요즘 나온 사이트로 좋은 내용이 많습니다.
코드스쿨 : 영어를 잘 하시고, 소액으로 강좌를 듣고 싶으신 분들에게 좋습니다.
코세라 : 전세계에서 가장 유명한 교육 사이트입니다. 당연히 프로그래밍 교육도 있습니다.
모든 서비스는 어느정도 금액이 필요하지만 무료로도 시도해볼만한건 많습니다.
워드프레스가 설치된걸 구매할 수도 있지만 직접 서버에 설치해봅시다. 아마존 EC2를 조사해서 워드프레스라는 전세계에서 가장 유명한 설치형 블로그를 설치해봅니다. 블로그라고 생각하지 말고 커스텀 웹사이트라고 생각해도 됩니다. 찾아보시면 엄청난 자료들과 테마들, 플러그인들만해도 구현할 수 있는게 다양합니다.
제가 에어데스크를 만드는건 아시죠? 확장 프로그램은 웹 브라우저에서 쓰이는 간단한 프로그램입니다. 간단한 코드로 다양한 기능을 구현할수도 있고, 재미삼아 웃긴 기능을 만들어도 됩니다. 버튼을 눌러 모든 글씨를 빨간색으로 바꾼다던지, 현재 있는 페이지의 글자수를 계산해준다던지 하는거죠.
모바일 어플리케이션을 만드는건 사실 엄청 쉽습니다. 잘 만들고, 상품으로 하기엔 어렵지만 여러분이 지식이 1도 없다고 해도 만들수 있을만큼 쉽습니다. 가이드를 따라서 프로그램을 설치하고(안드로이드 스튜디오 같은) 기본으로 제공되는 프로그램을 설치해서 여러분의 스마트폰으로 열어보세요. 간단한 버튼도 추가하고, 할 수 있다면 복잡한 기능들도 만들어볼 수 있습니다.
게임 만드는건 수많은 방법이 있습니다. 제 다른 글에서 자세히 적어두었는데 그 글을 참고해서 힌트를 발견하실 수 있을 겁니다. 프로그래밍 실력도 늘리고 싶고, 여러 명이 쓸 수 있는 게임을 만드시고 싶으시다면 아무래도 유니티가 가장 적합해 보입니다.
수 많은 좋은 오픈소스들은 개인 클라우드에 설치해서 써도 되는 게 많습니다. github나 stackoverflow를 돌아다니면서 발견한 좋은 소스들 중 수정해보고 싶거나 여러분이 쓰고 싶은걸 찾아 직접 설치해보세요. 그 전에 서버가 필요할텐데 로컬에다가 해도 좋고, 클라우드에 올려 친구들과 사용해보는 것도 좋습니다.
이정도면 충분히 답이 되었을까요? 우리가 해볼만한 수많은 소스들과 자료들과 저렴한 서비스가 세상에 너무도 많습니다. 직접 해보면 생각보다 더 쉽다는걸 발견하실겁니다.