Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
JS의 경험
유성민
2015.07.06
유성민
2011~
JS 이론과 원리 공부
2013~
JS 학습내용 종합/발표
2015~
api.core.js, api.script.js, api.dom.js, api.flicking.js, api.popup.js 등
라...
유성민
WEB(HTML5)을 좋아합니다. (나는 누구인가)
- 중학교 시절 싸이월드의 커스터마이징된 스크롤바 무작정 따라하기, 도전 3일 밤샘
- 즐기는 것을 스스로 증명해보고자 HTML, CSS 관련 아르바이트등 실무...
유성민
그리고…
JS 본격적인 입문은 첫 직장 입사 후 시작
유성민
JS 개인 프로젝트 시작의 목적
원천기술의 내재화
(네이버 렙스 참고, 서비스에서의 핵심기능은 내재화가 필요, 현시점에 어렵다면 라이
브러리를 활용하여 우선 서비스에 개발/적용하고, 동시에 핵심 기능 설계/개발을...
유성민
스스로 가졌던 목표 (라이브러리 작업)
개발자의 학습 시간을 최소화 해야 한다.
개인적으로 사용할 목적이 강한 것은 공유하지 않는다. (다른 개발자를 고생시킨다)
유성민
최초 개발 순서
설계 (경험우선 설계) ->
단순개발 (설계도에 따른 기능분리, 속도 생각안함) ->
기능별 인스턴스화 (상속이 아닌 연결개념 접근) ->
불필요코드점검 (속도 개선 아님) ->
html5 기술요...
유성민
자학과 도전이 무한반복 (현재진행형)
유성민
그렇게 JS와 함께 시간을 보내며, 개인적으로 얻은 것
유성민
자바스크립트는 직접 실행해봐야 한다.
(렌더링엔진 및 버전에 따라 성능 및 출력이 다름)
JS에서 가장 휼륭한 자료는 원리(저자의 개인적인 판단이 아닌, 스팩상의 정확한 내용)만
간단하게 설명하고, 직접 실행하여...
유성민
왜 JS 라이브러리는 개발 5년차 이하 해당시 공개하지 말라고 하는지 알겠다.
기능 구현은 구글링을 통하던지, 책(학습)을 통하던지 모두 가능하다.
어려움은 설계에서 마주한다. 얼마나 확정성이 강하고, 견고하고,...
유성민
그렇기에 자바스크립트는 설계가 가장 어려웠다.
관련 서적(한국어)이 없음 (패턴을 말하는 것이 아님)
MVC 패턴을 적용하기 어려운 언어 (닌자책 참고설명)
언어의 기본을 최대한 지킨다.
(다른 사람이 내코드를 ...
유성민
네이밍이 힘들다 (특히 설계가 정형화되어 있지 않다면 더더욱)
오픈소스(라이브러리)의 경우 변수명 가독성을 최대한 끌어올려야 한다는
고민이 있었음
다른 개발자의 학습을 최소화해야 한다는 고민
(의미없는 변수명으로...
유성민
JS에서의 무분별한 함부(메소드) 분리는 좋지 않다.
그럼 언제 하느냐.
함수(메소드)내부 if문으로 긴 코드들이 나누어 졌을 때 하는 것이 좋다.
즉, 무의미한 실행컨텍스트 환경 생성의 최소화를 하는 것에 목적...
유성민
제어문을 하나 줄이고 코드 복잡도가 크게 증가한다면,
그것은 줄이지 않는 것이 좋다.
또는 다른 방법을 찾는 것이 좋다.
(개발의 일순위는 가독성이다)
유성민
JS 코드의 기본을 지켜야 한다. (핵심)
놀랍게 코드가 줄어드는데, 가독성이 올라가더라
(코드의 라인수를 최소화시켜 가독성을 올리는 이야기가 아니다.)
github 에 올라온 인지도가 높은 오픈소스를 보면,
코...
유성민
가장 좋은 라이브러리는 너무 많은 기능을 지원하는 것이 아니라,
기본 기능에 충실한 것이다. (기본이 충실하면 가공이 쉽다)
100% 라이브러리와 동일한 환경(서비스)은 없기 때문
즉, 기본적이고 핵심기능(라이브...
유성민
재미있는 사실
게임관련 개발자(SK 플래닛, 플래닛G)의 자료를 참고했다.
개발자라면 그 이유를 알고 있을 것이다.
개발에 있어 알고리즘은 게임코드에서 얻을 수 있었다.
게임은 빠른속도와 높은 정확도, 신뢰도가 ...
유성민
혼자서는 어렵다.
풀스택개발을 못한다는 이야기가 아니다
서버, DB, UI 등 각 전문적인 파트가 있었으면 하는 아쉬움이 가장 컸다.
(그 분야만큼의 전문성이 높은 사람)
그러면서 각자 담당 파트에서 전문성을 높...
유성민
즉, JS(크게는 프론트엔드)를 좋아하는 것, 즐기는 것은 현실과 달랐다.
JS를 그 누구보다 가장 잘하는 것은 아니다.
일주일 뒤 코드를 보면, 엉망인 곳이 많다.
그러나 기분이 좋다. 그 기간 동안 발전했다는...
유성민
다시 시간이 지나..
적었던 생각들 중에 잘 못 생각하고 있었던 것을
발견할지 모른다.
그러나..
그것보다 두려운 것은 지금까지의 생각들이
시간이 지나도 발전하지 않고, 그것들을 발견하지 못할 만큼
현재에 머물러...
감사합니다.
(급마무리)
Upcoming SlideShare
Loading in …5
×

유성민 JS경험

454 views

Published on

https://github.com/make-story/ui

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

유성민 JS경험

  1. 1. JS의 경험 유성민 2015.07.06
  2. 2. 유성민 2011~ JS 이론과 원리 공부 2013~ JS 학습내용 종합/발표 2015~ api.core.js, api.script.js, api.dom.js, api.flicking.js, api.popup.js 등 라이브러리 개발 https://github.com/make-story/ui
  3. 3. 유성민 WEB(HTML5)을 좋아합니다. (나는 누구인가) - 중학교 시절 싸이월드의 커스터마이징된 스크롤바 무작정 따라하기, 도전 3일 밤샘 - 즐기는 것을 스스로 증명해보고자 HTML, CSS 관련 아르바이트등 실무환경에 도전 (홀로 상경, LG CNS, SKT) - HTML5의 등장 HTML5 학습 -> 대부분 기능은 JS -> JS 에서 CSS3 구조와 표현의 분리가 필요 -> JS는 HTML5에 있어 선행되어야할 학습이라는 것을 인지함
  4. 4. 유성민 그리고… JS 본격적인 입문은 첫 직장 입사 후 시작
  5. 5. 유성민 JS 개인 프로젝트 시작의 목적 원천기술의 내재화 (네이버 렙스 참고, 서비스에서의 핵심기능은 내재화가 필요, 현시점에 어렵다면 라이 브러리를 활용하여 우선 서비스에 개발/적용하고, 동시에 핵심 기능 설계/개발을 진행 하여, 점진적으로 핵심이 내재화되는 것을 고려해야 한다고 생각함) 자바스크립트의 크로스브라우징 문제 리스팅과 트러블슈팅방법을 알기 위함 (어떤기능들이 크로스브라우징 구현에 문제가 되는가에 대한 해답) 모두가 공유할 수 있는 최적의 패턴을 찾는 것 (연구개발) jQuery 종속적인 개발패턴에서 분리 (‘IE8의 수명이 얼마 남지 않았다. 미래지향적으로 작업하기 위해 다시 네이티브 JS로 돌아가자는 주장' 글 참고) 기능을 모듈별로 분리시켜, 해당 기능이 필요로 할 때 인덱싱하여 사용하기 위함. (이후 모듈단위 리펙토링)
  6. 6. 유성민 스스로 가졌던 목표 (라이브러리 작업) 개발자의 학습 시간을 최소화 해야 한다. 개인적으로 사용할 목적이 강한 것은 공유하지 않는다. (다른 개발자를 고생시킨다)
  7. 7. 유성민 최초 개발 순서 설계 (경험우선 설계) -> 단순개발 (설계도에 따른 기능분리, 속도 생각안함) -> 기능별 인스턴스화 (상속이 아닌 연결개념 접근) -> 불필요코드점검 (속도 개선 아님) -> html5 기술요소적용 (속도 개선 생각) -> 리펙토링
  8. 8. 유성민 자학과 도전이 무한반복 (현재진행형)
  9. 9. 유성민 그렇게 JS와 함께 시간을 보내며, 개인적으로 얻은 것
  10. 10. 유성민 자바스크립트는 직접 실행해봐야 한다. (렌더링엔진 및 버전에 따라 성능 및 출력이 다름) JS에서 가장 휼륭한 자료는 원리(저자의 개인적인 판단이 아닌, 스팩상의 정확한 내용)만 간단하게 설명하고, 직접 실행하여 결과를 얻도록 가이드하는 자료라고 본다. JS는 각 벤더사, 버전, 스팩별로 코드의 실행 결과가 예상과 다를 수 있으므로, 저자의 단정된 정보로 학습자의 혼란을 가중시킬 수 있기 때문이다.
  11. 11. 유성민 왜 JS 라이브러리는 개발 5년차 이하 해당시 공개하지 말라고 하는지 알겠다. 기능 구현은 구글링을 통하던지, 책(학습)을 통하던지 모두 가능하다. 어려움은 설계에서 마주한다. 얼마나 확정성이 강하고, 견고하고, 단순하게 설계할 수 있는지 고민이 필요했다. JS는 크로스브라우저의 어려움이 있어 자칫 코드의 복잡도가 무한 상승할 수 있다. 그럴 경우 유지보수 및 트러블슈팅은 시간에 비례하여 동일하게 상승할 수 있는 것이다. 확장이 가능하도록 기능을 무조건 분리시키는 것은 다른 개발자들에게 어려움을 줄 수 있다. JS는 기본적인 코드를 활용하여, 가장 단순하면서도 최상의 설계를 가지는 것이 기능 구현 보다 더 우선되어야 한다. 기능상의 보완은 최상의 설계에서 더욱 슈팅이 쉬워지기 때문인 것이다. 미숙한 설계가 적용된 공개 라이브러리의 우려
  12. 12. 유성민 그렇기에 자바스크립트는 설계가 가장 어려웠다. 관련 서적(한국어)이 없음 (패턴을 말하는 것이 아님) MVC 패턴을 적용하기 어려운 언어 (닌자책 참고설명) 언어의 기본을 최대한 지킨다. (다른 사람이 내코드를 봤을 때 읽을 수 있는 것, 내가 시간이 지났을 때 쉽게 파 악할 수 있는 것) 여러사람이 같이 작업했을 경우 내 코드가 코딩컨벤션에서 벗어나면 안된다.
  13. 13. 유성민 네이밍이 힘들다 (특히 설계가 정형화되어 있지 않다면 더더욱) 오픈소스(라이브러리)의 경우 변수명 가독성을 최대한 끌어올려야 한다는 고민이 있었음 다른 개발자의 학습을 최소화해야 한다는 고민 (의미없는 변수명으로 생각하게 만들지 말자)
  14. 14. 유성민 JS에서의 무분별한 함부(메소드) 분리는 좋지 않다. 그럼 언제 하느냐. 함수(메소드)내부 if문으로 긴 코드들이 나누어 졌을 때 하는 것이 좋다. 즉, 무의미한 실행컨텍스트 환경 생성의 최소화를 하는 것에 목적을 두면 된다.
  15. 15. 유성민 제어문을 하나 줄이고 코드 복잡도가 크게 증가한다면, 그것은 줄이지 않는 것이 좋다. 또는 다른 방법을 찾는 것이 좋다. (개발의 일순위는 가독성이다)
  16. 16. 유성민 JS 코드의 기본을 지켜야 한다. (핵심) 놀랍게 코드가 줄어드는데, 가독성이 올라가더라 (코드의 라인수를 최소화시켜 가독성을 올리는 이야기가 아니다.) github 에 올라온 인지도가 높은 오픈소스를 보면, 코드가 기본(언어의 기본 또는 기초적인 패턴에 따른 코딩)에 따라 단순화 되어 있다. (underscore.js 참고) 긴코드나 문법을 짧게 줄이는 기법이 아닌 JS기본문법에 충실하면서 자연스럽게 가독성을 높이는 코드 코드에 의미 없는 겉멋을 주지 말자 코드가 복잡해지고 파편화가 심하다는 것은 알고리즘, 즉 설계의 보완이 필요하다는 의미가 될 수 있다고 생각한다. 코드의 버전관리가 필요하다는 것이다. (오픈소스나 협업에서 패턴을 쓰는 이유이다, 코드상의 도전을 오픈소스나 협업에서 하지 말아라. 충분히 스스로 검증을 한 후 적용하라) 결국 버전관리가 쉬운(미래관점) 코드를 작성하려면 경험(오픈소스)이 필요하다.
  17. 17. 유성민 가장 좋은 라이브러리는 너무 많은 기능을 지원하는 것이 아니라, 기본 기능에 충실한 것이다. (기본이 충실하면 가공이 쉽다) 100% 라이브러리와 동일한 환경(서비스)은 없기 때문 즉, 기본적이고 핵심기능(라이브러리)을 만들고, 그것을 사용하는 개발자가 가공(개발자의 페이지, 라이브러리 콜백개념)하여 서비스에 맞도록 재생산 될 수 있도록 도움을 주는 것
  18. 18. 유성민 재미있는 사실 게임관련 개발자(SK 플래닛, 플래닛G)의 자료를 참고했다. 개발자라면 그 이유를 알고 있을 것이다. 개발에 있어 알고리즘은 게임코드에서 얻을 수 있었다. 게임은 빠른속도와 높은 정확도, 신뢰도가 요구되기 때문이다.
  19. 19. 유성민 혼자서는 어렵다. 풀스택개발을 못한다는 이야기가 아니다 서버, DB, UI 등 각 전문적인 파트가 있었으면 하는 아쉬움이 가장 컸다. (그 분야만큼의 전문성이 높은 사람) 그러면서 각자 담당 파트에서 전문성을 높이는 것과 그것이 서로 잘 연결 된다면 작업 능률도 같이 올라가지 않을까 생각해보았다
  20. 20. 유성민 즉, JS(크게는 프론트엔드)를 좋아하는 것, 즐기는 것은 현실과 달랐다. JS를 그 누구보다 가장 잘하는 것은 아니다. 일주일 뒤 코드를 보면, 엉망인 곳이 많다. 그러나 기분이 좋다. 그 기간 동안 발전했다는 말이 될 수 있기 때문이다. (리펙토링이 필요한 부분을 발견했다는 것은 더 효율적인 코드를 그 사이에 학습 했거나 보았다는 것) 즉, 누구보다 가장 잘하는 분야가 아닌 이 분야만큼은 멈추지 않고 계속 발전하는 개발자가 되고 싶었던 것이다. (마음가짐)
  21. 21. 유성민 다시 시간이 지나.. 적었던 생각들 중에 잘 못 생각하고 있었던 것을 발견할지 모른다. 그러나.. 그것보다 두려운 것은 지금까지의 생각들이 시간이 지나도 발전하지 않고, 그것들을 발견하지 못할 만큼 현재에 머물러 있으면 어쩌나, 그 부분이 더 두렵다.
  22. 22. 감사합니다. (급마무리)

×