통합 검색어 입력폼

코딩의 함정

조회수 2017. 8. 13. 18:28 수정
번역beta Translated by kaka i
번역중 Now in translation
글자크기 설정 파란원을 좌우로 움직이시면 글자크기가 변경 됩니다.

이 글자크기로 변경됩니다.

(예시) 다양한 분야의 재밌고 유익한 콘텐츠를 카카오 플랫폼 곳곳에서 발견하고, 공감하고, 공유해보세요.

당신이 배운 코딩은 사용하지 못할 수 있다.

많은 사람들이 지금 내가 이 블로그 글을 쓰는 시점에도 코딩을 배우겠다고 여러 기관을 들락날락하고 코드 아카데미, 생활코딩을 살펴보고 있으며 내가 어떤 코딩을 배울 수 있을지에 대해 고민한다. 비싼 수강료까지 지불해가면서 코딩을 배우려고 하고 있다. 그들이 들인 시간 모두를 존중하며 이 글을 작성한다.



당신이 배운 코딩은 사용하지 못할 수 있다


요 근래 HTML / CSS / JavaScript를 비전문가에게 가르치는 기관이 많아지고 꽤 많은 코딩 교육 사이트에서 개발 관련된 지식을 전파하면서 많이 하는 이야기가 "이것만 배우면 본인이 상상하는 걸 마음껏 펼쳐낼 수 있다"인데, 아쉽게도 그건 사실이 아닐 수 있다. 본


인이 생각하는 것보다 개발자들은 더 많은 일을 한다. 대표적으로 나는 현재 프론트엔드 개발자로 아래 목록의 일을 한다.

  • 디자이너에게 전달받은 디자인을 베이스로 HTML/CSS를 구현한다.
  • 인터렉션이 필요한 영역이 있다면 JavaScript로 인터렉션을 구현한다.
  • HTML을 의미에 맞게 활용하고 CSS를 잘 사용하여 장애인이 웹을 사용할 수 있게 한다. (웹 접근성)
  • CSS에 불필요한 코드가 없도록 코드를 최적화하고, 필요하다면 모듈화 등을 진행한다.
  • Build 과정에서 필요한 건 없는지 체크한 뒤 필요하다면 자동화 툴을 만든다.
  • 성능 최적화 작업을 진행한다. 이 작업에서는 브라우저가 어떻게 페이지를 보여주는지 등도 고려한다.
  • 필요로 한다면 jQuery 등의 라이브러리를 활용하고, 필요로 하는 플러그인이 있다면 활용한다.
  • 각 기능을 개발할 때마다 테스트를 진행하여 코드에 이슈는 없는지 체크한다.
  • 백엔드 개발자가 개발할 때 필요로 하는 부분이 있다면 해당 부분도 개발한다.
  • status가 바뀜에 따라 UI가 바뀌는 부분이 있는지 체크한다.
  • 오래된 브라우저(IE 7, 8, 9, 안드로이드 구버전 등)를 대응한다
  • 모바일에 대응해야 한다면 모바일도 대응한다.
  • 모바일에 최적화된 UX를 제공하여 사용자가 사이트를 편하게 사용할 수 있도록 한다. (이는 디자이너가 해야 하는 일이자 개발자가 해야 하는 일이기도 하다)
  • 버전 관리를 효율적으로 하여 이후에 개발을 시작하는 개발자가 혼란을 겪지 않게 한다.

위에서 나열한 일은 모두 내가 실제로 하고 있는 일이며 앞으로도 해나갈 일이다. 사용하지 않는 레거시 코드는 점진적으로 줄여나가는 게 당연하고, 기능은 당연히 잘 구현해야 하며 내가 아닌 다른 개발자가 작업하더라도 코드를 잘 이해할 수 있게 코딩을 해야 한다. 이는 개발자로서 필요로 하는 일이다.


나는 그동안 많은 사람들을 가르치면서 많은 이야기를 들었다. 직접 개발하기 위해 배우는 건 아니고 커뮤니케이션을 잘하기 위해서 배우는 거다, 직접 내가 기능을 구현할 수 있다면 그렇게 해보고 싶다 등의 다양한 의견을 들어왔다. 하지만 일부는 쉽게 배울 수 있다는 관점에서 개발을 시작한다. 무언가 새로운 걸 공부한다는 건 절대 쉽지 않다. 그건 프론트엔드든 백엔드든 모두 마찬가지다.


그럼 당신이 코딩을 배우기 전에 고려해야 할 건 어떤 게 있을까?



개발은 생각보다 분야가 넓다


아래는 2015년까지의 github(개발자들이 소스를 공유하고 그 소스를 다 함께 개선해나가는 사이트, 다른 목적도 있다) 언어 트렌드다.

출처: http://github.com
github.com의 인기 언어 트렌드 2015년 판

2015년 기준이다.

1위. 자바스크립트
2위. 자바
3위. 루비
4위. PHP
5위. 파이썬
6위. CSS
7위. C++
8위. C#
9위. C
10위. HTML

개발 언어는 정말 다양하다. 당신이 하나의 웹사이트를 만들 때에 어떤 언어를 사용하느냐에 따라서 그 사이트를 아주 빠르게 구현할 수도 있고, 혹은 아주 느리게 구현할 수도 있다. Front-End만 공부한다면 데이터 등을 다루는 부분이 조금 약해질 수 있으며, Back-End만 공부한다면 페이지 상에서 보이는 UI 관련된 내용을 다루기가 힘들어질 수 있다.


그래서 난 만약 당신이 개발을 공부할 마음이 있다면, 본인의 관심사에 맞게 개발을 공부하길 바란다. 본인이 앱 디자이너인데 웹 환경을 배우면 도움은 되겠지만 본인이 원하는 도움이 아닌 그저 잔가지의 지식으로 남을 수 있다. 그리고 실제로 저렇게 배우는 사람이 너무 많다.

  • 앱 관련 : iOS나 안드로이드에 대해서 공부하자. 다행히 앱 개발 관련 내용들은 각 제조사에서 보내주는 가이드라인이 꽤 훌륭하게 제시되어있다.
  • 안드로이드 개발 트레이닝 : http://developer.android.com/training/index.html
  • Swift 개발 트레이닝 : Learn Swift
  • 웹 관련 : UI에 직접적으로 관련이 있는 내용이라면 HTML, CSS를 배워라. 만약 인터렉션과 관련된 내용도 하고 싶다면 JS를 배우되, 나는 디자이너가 인터렉션 관련 내용을 배우는 게 실제로 인터렉션을 구현하기 위함이 아닌, 인터렉션을 보여주기 위해서 배우는 경우가 더 많을 거라 생각하기 때문에 JS를 직접적으로 배우는 것보다는 FramerJS의 사용법을 배우는 걸 조금 더 권장한다. 구현은 개발자가 해줄 거다. 그런 게 아니라 실제로 개발해야 한다면 당연히 JS를 공부해야 한다. 
  • 생활코딩 : opentutorials.org
  • 코드 아카데미 : codecademy.com
  • 패스트캠퍼스 : HTML & CSS 첫걸음 CAMP
  • Framer : framerjs.com/

위에서 말한 게 정답은 아니다. 대표적으로 백엔드 관련된 걸 공부하고 싶다면 루비나 파이썬 혹은 자바를 공부할 수 있으며, 서버 관련해서는 nodeJS, Apache 등을 공부할 수도 있다. 여러분들이 어떤 걸 배울지는 본인의 자유이다.


그리고 앱을 개발하기 위해 React Native라는 기술을 써서 웹 기반 앱을 구현할 수도 있다. 여러분들이 어떤 걸 더 배우느냐는 여러분의 자유다. 하지만 더 많은 걸 배우기 위해서는 기반 지식이 반드시 필요하다. 기반 지식을 탄탄히 하고서 더 많은 걸 배울지에 대해 고민해보자.



끝으로


요즘 개발에 관심이 많은 사람들이 급격히 많아졌다는 생각이 든다. 비전공자를 대상으로 개발을 가르쳐주는 교육은 나날이 늘어가고 있고, 그런 활동도 점점 늘어나고 있다. 지금은 코딩을 배우기 좋은 시대고 시기이다.


하지만 그런 교육이나 운동이 꾸준히 이어지고 발전해 나가려면, 수업을 듣는 사람이 더 열심히 해야 할 필요가 있다. 본인이 원하는 니즈에 맞는 걸 공부하면 공부한 내용을 바탕으로 실무에서 개발자와 커뮤니케이션을 더 잘하게 될 수 있을 것이다. 정 답답하면 직접 필드에서 뛰는 등, 다양한 일을 할 수 있을 것이다. 코딩을 배워라. 다만 제대로 배워라.


원문: 조은의 브런치


이 콘텐츠에 대해 어떻게 생각하시나요?