SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
김태곤
FE로 취업하기 전에
알았으면 좋았을 것들
Hard Skills and Soft Skills
...누구세요?
2002년부터 개발자, 2006년부터 프론
트엔드 개발 / 네이버 다니면서 에디터
와 프레임워크도 만들고 XE라는 오픈
소스도 하고 / Fancy와 Automattic이
라는 기업에서 10년째 리모트로 일하
고 있고 / 강연과 번역도 틈틈이 하며
프론트엔드 업계를 오랫동안 떠돌고
있는 개발자입니다.
능력 = Hard Skills + Soft Skills
시간 위를 걷는 프로그래밍
Programming over time
좋은 코드의 조건1:
테스트가 용이할 것
1 const button = document.getElementById( 'button' );
2 button.addEventListener(
3 'click',
4 () => {
5 fetch( '/api/user-info' )
6 .then( ( response ) => response.json() )
7 .then( ( json ) => {
8 const panel = document.getElementById( 'panel' );
9 panel.innerText = `User: ${ json.userName }`;
10 } );
11 },
12 false
13 );
1 const button = document.getElementById( 'button' );
2 button.addEventListener(
3 'click',
4 () => {
5 fetch( '/api/user-info' )
6 .then( ( response ) => response.json() )
7 .then( ( json ) => {
8 const panel = document.getElementById( 'panel' );
9 panel.innerText = `User: ${ json.userName }`;
10 } );
11 },
12 false
13 );
() => {
fetch( '/api/user-info' )
.then( ( response ) => response.json() )
.then( ( json ) => {
const panel = document.getElementById( 'panel' );
panel.innerText = `User: ${ json.userName }`;
} );
},
const button = document.getElementById( 'button' );
button.addEventListener(
'click',
false
);
const button = document.getElementById( 'button' );
button.addEventListener('click', () => fetchUserInfo(displayUserInfo), false);
function fetchUserInfo(callback) {
fetch( '/api/user-info' )
.then( ( response ) => response.json() )
.then( callback );
}
function displayUserInfo(json) {
const panel = document.getElementById( 'panel' );
panel.innerText = `User: ${ json.userName }`;
}
좋은 코드의 조건2:
읽기 쉬울 것
안 좋은 함수 이름: processData, clear, reset
추천하는 이름: normalizeResponseData, splitBookDataByCategory
(단, form.reset과 같이 컨텍스트가 주어진 형태라면 괜찮음)
window.addEventListener('DOMContentLoaded', () => {
const 버튼 = document.getElementById( 'button' );
버튼.addEventListener('click', () => 사용자정보_가져오기(사용자정보표시), false);
function 사용자정보_가져오기(콜백함수) {
fetch( '/api/user-info' )
.then( ( response ) => response.json() )
.then( 콜백함수 );
}
function 사용자정보표시(json) {
const 패널 = document.getElementById( 'panel' );
패널.innerText = `User: ${ json.userName }`;
}
});
window.addEventListener("DOMContentLoaded",(()=>{function e(e)
{document.getElementById("panel").innerText=`User: ${e.userName}`}
document.getElementById("button").addEventListener("click",(()=>{return
window.addEventListener('DOMContentLoaded', () => {
const 버튼 = document.getElementById( 'button' );
버튼.addEventListener('click', () => 사용자정보_가져오기(사용자정보표시), false);
function 사용자정보_가져오기(콜백함수) {
fetch( '/api/user-info' )
.then( ( response ) => response.json() )
.then( 콜백함수 );
}
function 사용자정보표시(json) {
const 패널 = document.getElementById( 'panel' );
패널.innerText = `User: ${ json.userName }`;
}
});
window.addEventListener("DOMContentLoaded",(()=>{function e(e)
{document.getElementById("panel").innerText=`User: ${e.userName}`}
document.getElementById("button").addEventListener("click",(()=>{return
n=e,void fetch("/api/user-info").then((e=>e.json())).then(n);var n}),!
1)}));
테스트 코드는
가능한 부분부터 작성하자.
한 커밋에는 한 가지 문제만.
추적 가능하게 유지해주세요
실험은 한 번에 하나씩만.
고생 = (학습+프로젝트) x 2
나만의 학습 루틴을 만들어두자.
어차피 평생 공부해야 합니다.
대체로, 옳은 기술은 없다.
상황에 따른 선택이 있을 뿐.
프론트엔드 개발자는
절반쯤은 UX 전문가가 되어야 한다.
코드 너머에 사용자 있어요
풀스택 엔지니어링 지식은 익히되
풀스택 엔지니어를 지향하지는 말자.
하나 잘하기도 점점 더 어려워지고 있다.
전문 분야를 가지자.
'안 된다'는 말은 그만.
시간과 돈을 앞세우자
거절의 3단계
숙고 / 대안 제시 / 이득
이직은 늘 준비하는 것
이직할 때 볼 것: 커리어, 연봉, 워라벨
커리어 = 시간 + 스토리
성과급/복지보다는 연봉
가능하다면, 자신의 기술이
메인으로 사용되는 회사로 가는 게 좋다.
뱀의 머리보다는 용의 꼬리가 낫다.
하드캐리할 자신 있으면 예외
호인과 호구는 다르다
니 컴퓨터 안 고쳐줘요
독서하듯 코드를 읽자
많이 읽어야 잘 쓸 수 있다
문제는 시스템으로 예방하자
Linter, Formatter, TypeScript, SCM...
Repeat Yourself
좋은 반복도 있다
Divide and Conquer
작게 나누어 정복하라
질문에도 기술이 있다
구글의 15분 규칙
출처: Reddit r/MachineLearning
시간은 금이다.
시간은 돈 주고 사라는 뜻
너무 열심히 안 살아도 된다.
전문가 얘기 너무 많이 듣지 말자.
내 문제는 내가 제일 잘 안다
감사합니다.
더 궁금한 부분이 있다면 아래로!
taegon.kim / @taggon

Weitere ähnliche Inhalte

Was ist angesagt?

이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.Kris Jeong
 
Grails Connecting to MySQL
Grails Connecting to MySQLGrails Connecting to MySQL
Grails Connecting to MySQLashishkirpan
 
The virtual DOM and how react uses it internally
The virtual DOM and how react uses it internallyThe virtual DOM and how react uses it internally
The virtual DOM and how react uses it internallyClóvis Neto
 
Java database connectivity with MYSQL
Java database connectivity with MYSQLJava database connectivity with MYSQL
Java database connectivity with MYSQLAdil Mehmoood
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Jin wook
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]MongoDB
 
Using Xcore with Xtext
Using Xcore with XtextUsing Xcore with Xtext
Using Xcore with XtextHolger Schill
 
Pipeline oriented programming
Pipeline oriented programmingPipeline oriented programming
Pipeline oriented programmingScott Wlaschin
 
Clean Code: Chapter 3 Function
Clean Code: Chapter 3 FunctionClean Code: Chapter 3 Function
Clean Code: Chapter 3 FunctionKent Huang
 
Application package
Application packageApplication package
Application packageJAYAARC
 
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...GreeceJS
 
LinkedList vs Arraylist- an in depth look at java.util.LinkedList
LinkedList vs Arraylist- an in depth look at java.util.LinkedListLinkedList vs Arraylist- an in depth look at java.util.LinkedList
LinkedList vs Arraylist- an in depth look at java.util.LinkedListMarcus Biel
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EEInes Ouaz
 
Exception handling
Exception handlingException handling
Exception handlingAnna Pietras
 
Thirteen ways of looking at a turtle
Thirteen ways of looking at a turtleThirteen ways of looking at a turtle
Thirteen ways of looking at a turtleScott Wlaschin
 

Was ist angesagt? (20)

Java persistence api 2.1
Java persistence api 2.1Java persistence api 2.1
Java persistence api 2.1
 
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.
 
Fetch API Talk
Fetch API TalkFetch API Talk
Fetch API Talk
 
Grails Connecting to MySQL
Grails Connecting to MySQLGrails Connecting to MySQL
Grails Connecting to MySQL
 
MongodB Internals
MongodB InternalsMongodB Internals
MongodB Internals
 
The virtual DOM and how react uses it internally
The virtual DOM and how react uses it internallyThe virtual DOM and how react uses it internally
The virtual DOM and how react uses it internally
 
Java database connectivity with MYSQL
Java database connectivity with MYSQLJava database connectivity with MYSQL
Java database connectivity with MYSQL
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
Using Xcore with Xtext
Using Xcore with XtextUsing Xcore with Xtext
Using Xcore with Xtext
 
Pipeline oriented programming
Pipeline oriented programmingPipeline oriented programming
Pipeline oriented programming
 
Clean Code: Chapter 3 Function
Clean Code: Chapter 3 FunctionClean Code: Chapter 3 Function
Clean Code: Chapter 3 Function
 
Application package
Application packageApplication package
Application package
 
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
 
LinkedList vs Arraylist- an in depth look at java.util.LinkedList
LinkedList vs Arraylist- an in depth look at java.util.LinkedListLinkedList vs Arraylist- an in depth look at java.util.LinkedList
LinkedList vs Arraylist- an in depth look at java.util.LinkedList
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Exception handling
Exception handlingException handling
Exception handling
 
Thirteen ways of looking at a turtle
Thirteen ways of looking at a turtleThirteen ways of looking at a turtle
Thirteen ways of looking at a turtle
 

Ähnlich wie FE로 취업 전에 알았으면 좋았을 것들

챗봇 시작해보기
챗봇 시작해보기챗봇 시작해보기
챗봇 시작해보기성일 한
 
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613KTH, 케이티하이텔
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기우영 주
 
Android 기초강좌 애플리캐이션 구조
Android 기초강좌 애플리캐이션 구조Android 기초강좌 애플리캐이션 구조
Android 기초강좌 애플리캐이션 구조Sangon Lee
 
Html5&css 3장
Html5&css 3장Html5&css 3장
Html5&css 3장홍준 김
 
chatbot-seminar-1806
chatbot-seminar-1806chatbot-seminar-1806
chatbot-seminar-1806juneyoungdev
 
Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Circulus
 
Mobile UX for Windows Mobile
Mobile UX for Windows MobileMobile UX for Windows Mobile
Mobile UX for Windows MobileSeo Jinho
 
안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트병한 유
 
자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기Jeado Ko
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011Esun Kim
 
Virtual dom to render
Virtual dom to renderVirtual dom to render
Virtual dom to renderKelly Woo
 
Vue.js 기초 실습.pptx
Vue.js 기초 실습.pptxVue.js 기초 실습.pptx
Vue.js 기초 실습.pptxwonyong hwang
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는Taegon Kim
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
D3 네이버소셜앱스 어떻게 만들어야 하나
D3 네이버소셜앱스 어떻게 만들어야 하나D3 네이버소셜앱스 어떻게 만들어야 하나
D3 네이버소셜앱스 어떻게 만들어야 하나NAVER D2
 
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSStartup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSCirculus
 

Ähnlich wie FE로 취업 전에 알았으면 좋았을 것들 (20)

챗봇 시작해보기
챗봇 시작해보기챗봇 시작해보기
챗봇 시작해보기
 
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_5차_데이터분석_조범석_20120613
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기
 
Android 기초강좌 애플리캐이션 구조
Android 기초강좌 애플리캐이션 구조Android 기초강좌 애플리캐이션 구조
Android 기초강좌 애플리캐이션 구조
 
Html5&css 3장
Html5&css 3장Html5&css 3장
Html5&css 3장
 
chatbot-seminar-1806
chatbot-seminar-1806chatbot-seminar-1806
chatbot-seminar-1806
 
Hacosa j query 8th
Hacosa j query 8thHacosa j query 8th
Hacosa j query 8th
 
Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신
 
Mobile UX for Windows Mobile
Mobile UX for Windows MobileMobile UX for Windows Mobile
Mobile UX for Windows Mobile
 
안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
 
Swt J Face 2/3
Swt J Face 2/3Swt J Face 2/3
Swt J Face 2/3
 
Virtual dom to render
Virtual dom to renderVirtual dom to render
Virtual dom to render
 
Vue.js 기초 실습.pptx
Vue.js 기초 실습.pptxVue.js 기초 실습.pptx
Vue.js 기초 실습.pptx
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
D3 네이버소셜앱스 어떻게 만들어야 하나
D3 네이버소셜앱스 어떻게 만들어야 하나D3 네이버소셜앱스 어떻게 만들어야 하나
D3 네이버소셜앱스 어떻게 만들어야 하나
 
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSStartup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JS
 

Mehr von Taegon Kim

Universal Rendering
Universal RenderingUniversal Rendering
Universal RenderingTaegon Kim
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기Taegon Kim
 
React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작Taegon Kim
 
패스트캠퍼스 프론트엔드 강의 오리엔테이션
패스트캠퍼스 프론트엔드 강의 오리엔테이션패스트캠퍼스 프론트엔드 강의 오리엔테이션
패스트캠퍼스 프론트엔드 강의 오리엔테이션Taegon Kim
 
오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5Taegon Kim
 
Fiddler: 웹 디버깅 프록시
Fiddler: 웹 디버깅 프록시Fiddler: 웹 디버깅 프록시
Fiddler: 웹 디버깅 프록시Taegon Kim
 
진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술Taegon Kim
 
XpressEngine : 보드에서 CMS로
XpressEngine : 보드에서 CMS로XpressEngine : 보드에서 CMS로
XpressEngine : 보드에서 CMS로Taegon Kim
 

Mehr von Taegon Kim (9)

Universal Rendering
Universal RenderingUniversal Rendering
Universal Rendering
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기
 
React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작
 
패스트캠퍼스 프론트엔드 강의 오리엔테이션
패스트캠퍼스 프론트엔드 강의 오리엔테이션패스트캠퍼스 프론트엔드 강의 오리엔테이션
패스트캠퍼스 프론트엔드 강의 오리엔테이션
 
오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5오늘 당장 시작하는 HTML5
오늘 당장 시작하는 HTML5
 
Fiddler: 웹 디버깅 프록시
Fiddler: 웹 디버깅 프록시Fiddler: 웹 디버깅 프록시
Fiddler: 웹 디버깅 프록시
 
진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술
 
XpressEngine : 보드에서 CMS로
XpressEngine : 보드에서 CMS로XpressEngine : 보드에서 CMS로
XpressEngine : 보드에서 CMS로
 
jQuery Trend
jQuery TrendjQuery Trend
jQuery Trend
 

FE로 취업 전에 알았으면 좋았을 것들