올해 개발자 대표 커뮤니티, 스택오버플로우에서 157개국에 있는 개발자 2만 6천여명을 대상으로 가장 인기있는 기술을 조사한 결과, 자바스크립트가 54.4% 라는 압도적인 1위를 차지했습니다.
자바스크립트가 이렇게 많은 사랑을 받기 시작한 이유는 무엇일까요? 필자는 낮은 진입장벽과 범용성, 이 2가지가 자바스크립트의 가장 큰 강점이라고 생각합니다.
프로그래밍 언어는 크게 low level (저레벨), high level (고레벨) 두 가지로 나눠서 살펴볼 수 있습니다. 쉽게 이해하자면 저레벨 언어는 C 나 어셈블리처럼 컴퓨터에 익숙한 언어라고 생각하면 됩니다. 반대로 고레벨 언어는 인간 친화적인 언어로 대표적으로 JavaScript, Python 등이 있습니다.
자바스크립트는 다른 저레벨 언어에 비해 사람이 이해하기 쉽도록 문장(?)이 구성되어 있어 처음 개발언어를 공부할 때 진입장벽이 낮은 편입니다. 물론 다른 개발 언어와는 다르게 고유의 색깔(?)을 가지고 있다는 단점이 있지만, 러닝 커브가 상대적으로 짧아 빠른 시간 안에 많은 내용들을 습득할 수 있습니다.
물론 여기에서 얘기하는 낮은 진입장벽이란 개발 용어에 대한 기초 지식이 있다는 전제입니다.
웹기술이 급속도록 발전하면서 과거에는 브라우저 영역에만 한정되어 기능을 발휘했던 자바스크립트가 이제는 Mobile App, Server-Side, IoT 등 다양한 영역에까지 활약하기 시작했습니다. 과거에는 모바일 앱을 개발하기 위해서는 Java 나 Objective-C 언어를 배워 안드로이드, iOS 앱을 따로 만들어야 했다면 지금은 자바스크립트 언어 하나를 가지고 안드로이드, iOS 앱 개발을 할 수 있게 되었습니다.
서버 개발 또한 자바스크립트 구현이 가능하게 되었습니다. 이전에는 PHP, Python 등 별도의 서버쪽 언어를 공부했어야 했는데 지금은 자바스크립트 언어로 만들어져 있는 Node.js 를 사용하여 프론트-엔드 개발자도 조금만 노력을 하면 백-엔드 영역으로 본인의 개발 영역을 전보다는 쉽게 넓힐 수 있게 되었습니다.
필자는 비전공자 출신 기발자입니다. 여기에서 기발자는 기획자와 개발자의 합성어를 의미합니다. 경영학을 전공했으며 대학생 직업 멘토링 서비스 <가리고리>의 대표로 서비스 기획 및 운영을 맡았으며 이후 디지털 광고 회사에서 광고 AE 로 근무하였습니다.
IT 서비스 및 디지털 광고를 기획하면서 개발에 대한 강한 매력을 느끼게 되었고 2014년 10월, 회사를 퇴사한 후 지금까지 독학으로 공부하면서 HTML, CSS, MEAN, Wordpress, JavaScript 등 웹 기술에 필요한 다양한 프레임워크와 라이브러리를 공부하고 있습니다.
현재는 비전공자를 대상으로 HTML & CSS 강의를 진행하고 있으며, 취미로 매주 수요일 저녁 10시 아프리카TV에서 JavaScript & MEAN STACK 스터디 방송을 하고 있습니다.
기획 외에는 개발의 "개"자도 몰랐던 필자는 HTML, CSS, jQuery 를 가지고 웹 사이트를 만드는 공부를 시작했습니다. 이후 공부에 어느정도 성과를 보이자 바로 자바스크립트 영역에 발을 딛게 되었습니다. 처음에는 HTML, CSS를 공부했을 때처럼 자바스크립트 가볍게 생각을 하고 자신만만했습니다.
하지만 시간이 지나면서 어려운 개발 용어의 등장과 이해할 수 없는 외계어식의 표현으로 인해서 점점 자신감을 잃어갔습니다. 예를들어 대부분 개발 서적에서는 다음과 같이 변수와 함수에 대한 정의를 내리고 있습니다.
변수는 값과 연관된 이름으로서, 이를 통해 데이터를 저장하고 조작할 수 있다. 함수는 JavaScript에서 기본적인 빌딩 블록 중의 하나이다. 함수는 작업을 수행하거나 값을 계산하는 문장의 집합과 같다. 함수를 사용하기 위해서는 함수를 호출하고자 하는 범위 어딘가에 함수를 정의해야만다.
.....이 정도는 꾸역꾸역 코드를 타이핑해가면서 어느정도 개념을 잡아가기 시작했지만 이후 실행 컨텍스트라는 것을 만났을 때 깊을 좌절감을 맛보게 되었습니다.
실행 컨텍스트는 스크립트가 실행되면서 생성되거나(Global Context) 되게 되다. 각각의 활동 컨텍스트(Active Context)들은 생성된 순서대로 Stack 메모리에 삽입되게 되고, Stack의 FILO 원리대로 현재 실행중인 Context는 Stack의 최상위에 위치하게 된다. 각각의 Context는 언제나 1개의 변수 환경(Variable Environment), 1개의 Lexical Environment, 그리고 1개의 ThisBinding 속성, 총 3개의 부분으로 구성되 있다. 그리고 3 속성 모두 Object 형식으로 저장된다.
..........그리고 결국 2015년 6월, 자바스크립트에게 K.O 패배를 당하면서 첫 슬럼프가 맞이하게 되었습니다.
이렇듯 비전공자가 처음 개발 공부를 할 때 가장 힘들어하는 부분은 언어가 아닌 바로 개발 용어에 부분입니다. 국내에 있는 대부분의 개발 서적들은 기개발자를 대상으로 출판하는 경우가 많아 비전공자의 경우 공부를 하기 위해 책을 샀지만 책에 나열된 단어를 이해하기 위해서 다시 구글링을 해야하는 웃픈 상황이 발생하곤 합니다.
2016년, 해가 바뀐 후 필자는 다시 자바스크립트에 재도전하게 되었습니다. 기초 개념부터 하나하나 그림을 그리거나 도식화를 만들어 보면서 작년에는 난해했었던 개발 용어들을 더디지만 천천히 극복해 나가고 있습니다. 여기에 대한 증거는 기발자의 유튜브 방송국 에서 확인할 수 있습니다. ^-^
“그림으로 배우는 자바스크립트” 는 변수와 함수, 상속, 클래스와 같은 어려운 개발 용어를 자바스크립트라는 언어를 기반으로 비전공자가 이해하기 쉽도록 그림이나 도식화를 사용하여 설명할 예정입니다. 이 글을 통해서 개발 공부에 어려움을 겪고 있는 분들, 이제 개발 공부를 막 시작하고 있는 초급자 분들에게 도움이 되었으면 하는 바램입니다.