SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
손코딩뇌컴파일눈디버깅
하광성
kwangswei@gmail.com
2014.04
AWARDS
하광성 (kwangswei@gmail.com)
daumkakao 멀티미디어처리파트(2014.10~ 현재)
LG전자 CTO SW Platfrom(연) (2011.02 ~ 2014.09)
2008 삼성소프트웨어멤버십 18기
2011 일등SW신입과정 사전 테스트 전체 1등.
2011 일등SW신입과정 6기(우수자과정) 프로젝트 최우수팀.
2012 SW Coding Expert
2012 Intensive C(Advanced) 과정 실습강사
2012 SW College 우수강사
2013 손코딩뇌컴파일눈디버깅 커뮤니티 리더
사전 설문조사
Q) 전산 혹은 컴퓨터 공학과 졸업자??
Q) 정보올림피아드/ACM ICPI/TopCoder 등 대
회 참가 경험자??
Q) Coding Interview 유경험자??
Q) C++ / JAVA / PYTHON 외…?
손코딩뇌컴파일눈디버깅
손으로 코딩하고,
머리로 컴파일하고,
눈으로 디버깅한다?
손코딩뇌컴파일눈디버깅
‘Problem Solving’
역량 함양을 위한
의도적 수련
Problem Solving
Algorithm?
그거 몰라도 현업하는데 문제 없어.
아마도 하루 중 대부분의 시간을....
http://awesomegeekblog.blogspot.kr/2013/11/the-software-developers-fallacy.html
"개발" 보다 "디버깅" 에 더 많은 시간을 쓰고 있다!
"디버깅" == "problem solving"
TDD, Code-review, unit-test 등 이와 같은 문제를 개선하기 위한 방법론이나 프로세스들은 많지만,
근본적으로는 SW Engineer가 꼼꼼하게 문제를 정의하고, 발생 가능한 문제를 예측하고, 깔끔하게 작성해야..!!
Problem Solving
우리가 수학을 배우는 이유.
미적분 몰라도 먹고 사는데 지장 없어요.
계산기 있잖아요.
-> 수학공부를 통해 길러지는 사고력, 논리력, 응용력
Problem Solving 을 통해 키워지는 역량
타인의 코드를 읽고 이해하는 능력
문제를 정의하고 추상화 하는 능력
예외 상황이나 오류를 찾아내는 능력
기본 코딩 스킬
Google, Microsoft, Apple, Yahoo, Facebook, Amazon, Netflix 등등 수많은 기업의
Interview Process
그들이 평가하는 것
문제를 잘 이해하는가? 필요한 조건 및 가정을 잘 도출하는 가?
어떤 과정을 통해 문제를 접근하고 풀어나가는가?
그 과정에서 의사소통을 잘 하는가?
깔끔하게 코딩을 잘 하는가?
자신의 풀이에서 버그나 예외 상황은 없는 지 검증하고 디버깅을 잘 하는가?
그들의 인터뷰 목표
“잘하는 사람을 놓치더라도 자질이 부족한 엔지니어를 채용하는 일은 없도록 하
자”
위와 같은 역량이 뛰어난 엔지니어들만이 보유하고 있는 스킬이라는 것이 아니라
모든 SW Engineer가 기본적으로 갖춰야 하는 역량이라고 본다는 의미!
참고
http://www.quora.com/TopCoder/Why-are-programmers-in-the-software-engineering-job-interviews-
tested-on-skills-similar-to-a-Topcoder-contest-irrespective-of-the-fact-that-the-skills-required-in-the-
industry-are-entirely-different
국내 동향
Coding Interview
쿠팡, LG 전자, Daumkakao, ESTSoft…..
LG전자
Coding Interview 도입
Code Jam 통해 일정 비율 선발
Coding Expert 선발
Daumkakao 멀티미디어처리파트
지원자의 역량, 필요한 스킬에 따라 직접 문제를 만들어서,
3차례에 걸쳐 코딩, 시스템디자인, 관련 전공 지식을 심층 면접
의도적 수련
Do you remember this old joke?
A young man is on the subway, carrying a guitar case.
He’s a member of a band that is performing a concert at Carnegie Hall;
and he’s running late.
He knows that the performance hall is close, but he doesn’t know the direction.
So he stops an old man on the street and asks:
“Excuse me sir, but how do I get to Carnegie Hall?”
The old man looks at the lad with his guitar case and says:
“Practice son, Practice.”
All professionals practice
프로 운동선수들은 자기 시간 중 20%를 시합에, 80%를 훈련에 투자한다.
한 조사에 의하면 대부분의 직장인들은 자기 시간의 99%를 일에,
1%를 자기계발에 투자 한다.
운동선수로 치자면 거의 연습도 하지 않고, 시합에 임하는 것과 마찬가지다.
-혼다 나오유키, [레버리지 씽킹]
Programmers??
Write code. Lots of code.
끗?
(그나마 코드라도 많이 짜면 다행.. ㅠ.ㅠ)
아마도 이렇게??
백문(百聞)이 불여일Run(不如一Run)
1만 시간 법칙에 대한 오해
http://agile.egloos.com/4834009
당신이 지금까지 걸은 시간을 합하면 1만 시간을 훌쩍 넘는다.
당신은 당신을 "걷기 마스터" 라고 부르는가?
당신은 지금껏 적어도 20년 넘게 숨을 쉬어왔다.
당신의 "폐활량"은 박태환 만큼 될까?
"버티는 시간이 아니라, 의도적 수련의 시간이 중요!"
Do Practice!
손코딩뇌컴파일눈디버깅
코딩 전 꼼꼼하게 검토하는 습관
+
생각을 있는 그대로 코드로 풀어내는 연습
Kent Beck once said
“I’m not a great programmer,
I’m just a good programmer with great habits.”
오늘의 Practice!
(밑줄은 산출물)
코딩에 들어가기 전
문제를 풀기 위해 필요한 가정 도출
테스트 케이스
알고리즘 서술
코딩
서술한 알고리즘을 그대로 동작하는 코드로 옮기기
코딩 후
테스트 + 디버깅하기
시간/공간 복잡도 계산해보기
개선점 찾아보기
오늘의 Practice!
Coding Session #1 (1hr)
시간/공간 복잡도의 제한이 없다고 가정하고 합시다.
그 외 필요한 가정은 쉬운 방향으로 세우고 시작합시다.
5분 자기소개
5분 가정도출
10분 솔루션 찾기 + 테스트 선정
30분 코딩 + 디버깅
10분 Code Review
그라운드 룰
Communication
머리 속에서 혼자 하지 말고 말로 표현하여 서로 토론하고 검증하기
Question
좋은 질문은 좋은 답을 이끌어낸다.
Focusing
자신의 생각은 잠시 내려놓고 현재 논의 중인 내용에 집중하기.
Done is better than perfect
Small step
Time keeper
오늘의 문제
Triple sum
숫자 리스트가 주어졌다고 하자.
리스트 내의 3개의 수를 골라 합이 0이 되는 경우의 수
를 반환하는 함수를 작성하라.
문제 이해하기
필요한 가정
시간 / 공간 복잡도 제한은?
숫자의 범위는? 0도 포함인가?
숫자 리스트의 크기는 어느정도인가?
순서가 중요한가?
숫자는 중복이 가능한가?
오늘의 Practice!
Coding Session #2 (1hr)
5분 자기소개
15분 솔루션 찾기 + 테스트 선정
30분 코딩 + 디버깅
10분 Code Review
예상 답안
예상 답안은 참석자에 한해 별도로 드리겠습니다
kwangswei@gmail.com
Retrospective
각자 포스트 잇에 작성 (5min)
놀란 점, 배운 점, 실천할 것 각 1가지씩.
조별로 공유 (5min)
전체 공유(10min)
자유 토론(10min)
손코딩뇌컴파일눈디버깅 모임
“코딩 기술은 정확한 프로그램을 작성하는 데 있어 작은 한 부분에 지나지 않는다. 작업의 대부분은...(중략)...문제 정의, 알고리즘
디자인, 데이터 구조의 선택이다. 이 작업들을 잘 해낼 수 있다면, 정확한 코드의 구현은 쉬운 것이 보통이다." - 생각하는 프로그래
밍
"제가 생각하는 바람직한 소프트웨어 엔지니어가 갖추어야 할 역량은 programming skill, domain knowledge, communication skill 입니
다." - LG전자 소프트웨어플랫폼 연구소장(전)
Online Coding study or Coding Interview 를 앞두고 계신 분. or 기타…
kwangswei@gmail.com
linkedin : kwangsung ha
그동안의 모임 Editorial 보기 (http://kwangswei.tistory.com)
개요 http://kwangswei.tistory.com/421 2회 http://kwangswei.tistory.com/422
3회 http://kwangswei.tistory.com/423 4회 http://kwangswei.tistory.com/424
5회 http://kwangswei.tistory.com/425 6회 http://kwangswei.tistory.com/426
7회 http://kwangswei.tistory.com/427 8회 http://kwangswei.tistory.com/428
참고자료
Books
Cracking the coding interview
The coding dojo handbook
알고리즘 문제 해결 전략
Algorithm Judge or Competitions
http://topcoder.com/tc
http://codeforces.com
http://algospot.com
Coding interview
http://www.careercup.com
http://www.glassdoor.com/index.html
http://oj.leetcode.com
Q&A
Feedback
(http://goo.gl/NhcpYJ)

Más contenido relacionado

La actualidad más candente

프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요Chris Ohk
 
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.Yongho Ha
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
GCGC- CGCII 서버 엔진에 적용된 기술 (5) - Executor with Exception
GCGC- CGCII 서버 엔진에 적용된 기술 (5) - Executor with ExceptionGCGC- CGCII 서버 엔진에 적용된 기술 (5) - Executor with Exception
GCGC- CGCII 서버 엔진에 적용된 기술 (5) - Executor with Exception상현 조
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)Yongho Ha
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)Jay Park
 
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게Seongyun Byeon
 
객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)Seung-June Lee
 
Multithread & shared_ptr
Multithread & shared_ptrMultithread & shared_ptr
Multithread & shared_ptr내훈 정
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵Javajigi Jaesung
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들MinGeun Park
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기Seungjae Lee
 
인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례Hyung Lee
 

La actualidad más candente (20)

프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요
 
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
GCGC- CGCII 서버 엔진에 적용된 기술 (5) - Executor with Exception
GCGC- CGCII 서버 엔진에 적용된 기술 (5) - Executor with ExceptionGCGC- CGCII 서버 엔진에 적용된 기술 (5) - Executor with Exception
GCGC- CGCII 서버 엔진에 적용된 기술 (5) - Executor with Exception
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
 
200531 jandi
200531 jandi200531 jandi
200531 jandi
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게성장을 좋아하는 사람이, 성장하고 싶은 사람에게
성장을 좋아하는 사람이, 성장하고 싶은 사람에게
 
객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)
 
Multithread & shared_ptr
Multithread & shared_ptrMultithread & shared_ptr
Multithread & shared_ptr
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례
 

Similar a 손코딩뇌컴파일눈디버깅을 소개합니다.

PS향유회 세미나 - PS는 개발자 취업에 도움이 될까?
PS향유회 세미나 - PS는 개발자 취업에 도움이 될까? PS향유회 세미나 - PS는 개발자 취업에 도움이 될까?
PS향유회 세미나 - PS는 개발자 취업에 도움이 될까? SesangCho
 
Learning Unit Testing with Pair Programming
Learning Unit Testing with Pair ProgrammingLearning Unit Testing with Pair Programming
Learning Unit Testing with Pair ProgrammingJongchan Kim
 
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824AWSKRUG - AWS한국사용자모임
 
개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기Donghyun Cho
 
해외에서 일하며 Ver 2
해외에서 일하며 Ver 2해외에서 일하며 Ver 2
해외에서 일하며 Ver 2Hakhyun Kim
 
코딩테트2205-kucc-220508145530-8015b5d7.pdf
코딩테트2205-kucc-220508145530-8015b5d7.pdf코딩테트2205-kucc-220508145530-8015b5d7.pdf
코딩테트2205-kucc-220508145530-8015b5d7.pdfssuser597fbd
 
임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드태현 임
 
Introduce Myself & Advice for New Employee
Introduce Myself & Advice for New EmployeeIntroduce Myself & Advice for New Employee
Introduce Myself & Advice for New Employeerryusoo
 
애자일 도입과 사례 공유
애자일 도입과 사례 공유애자일 도입과 사례 공유
애자일 도입과 사례 공유agilekorea
 
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발Jaehoon Oh
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...Kay Kim
 
사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서Kim kyoung-song
 
SW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project KeynoteSW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project Keynote진수 한
 
어쩌다로봇
어쩌다로봇어쩌다로봇
어쩌다로봇민건 주
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법SangIn Choung
 
WTM2018 그것이 알고싶다 어쩌다 10년... 지그재그 손연미, 백서영
WTM2018 그것이 알고싶다 어쩌다 10년... 지그재그 손연미, 백서영WTM2018 그것이 알고싶다 어쩌다 10년... 지그재그 손연미, 백서영
WTM2018 그것이 알고싶다 어쩌다 10년... 지그재그 손연미, 백서영ZIGZAG
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기Ahreum Kim
 
Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정Aree Oh
 
0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdf0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdfWonJongOh1
 

Similar a 손코딩뇌컴파일눈디버깅을 소개합니다. (20)

PS향유회 세미나 - PS는 개발자 취업에 도움이 될까?
PS향유회 세미나 - PS는 개발자 취업에 도움이 될까? PS향유회 세미나 - PS는 개발자 취업에 도움이 될까?
PS향유회 세미나 - PS는 개발자 취업에 도움이 될까?
 
Learning Unit Testing with Pair Programming
Learning Unit Testing with Pair ProgrammingLearning Unit Testing with Pair Programming
Learning Unit Testing with Pair Programming
 
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
 
개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기
 
해외에서 일하며 Ver 2
해외에서 일하며 Ver 2해외에서 일하며 Ver 2
해외에서 일하며 Ver 2
 
코딩테트2205-kucc-220508145530-8015b5d7.pdf
코딩테트2205-kucc-220508145530-8015b5d7.pdf코딩테트2205-kucc-220508145530-8015b5d7.pdf
코딩테트2205-kucc-220508145530-8015b5d7.pdf
 
임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드
 
Introduce Myself & Advice for New Employee
Introduce Myself & Advice for New EmployeeIntroduce Myself & Advice for New Employee
Introduce Myself & Advice for New Employee
 
애자일 도입과 사례 공유
애자일 도입과 사례 공유애자일 도입과 사례 공유
애자일 도입과 사례 공유
 
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
 
사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서
 
SW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project KeynoteSW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project Keynote
 
어쩌다로봇
어쩌다로봇어쩌다로봇
어쩌다로봇
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
 
WTM2018 그것이 알고싶다 어쩌다 10년... 지그재그 손연미, 백서영
WTM2018 그것이 알고싶다 어쩌다 10년... 지그재그 손연미, 백서영WTM2018 그것이 알고싶다 어쩌다 10년... 지그재그 손연미, 백서영
WTM2018 그것이 알고싶다 어쩌다 10년... 지그재그 손연미, 백서영
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
 
Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정
 
0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdf0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdf
 

손코딩뇌컴파일눈디버깅을 소개합니다.

  • 2. AWARDS 하광성 (kwangswei@gmail.com) daumkakao 멀티미디어처리파트(2014.10~ 현재) LG전자 CTO SW Platfrom(연) (2011.02 ~ 2014.09) 2008 삼성소프트웨어멤버십 18기 2011 일등SW신입과정 사전 테스트 전체 1등. 2011 일등SW신입과정 6기(우수자과정) 프로젝트 최우수팀. 2012 SW Coding Expert 2012 Intensive C(Advanced) 과정 실습강사 2012 SW College 우수강사 2013 손코딩뇌컴파일눈디버깅 커뮤니티 리더
  • 3. 사전 설문조사 Q) 전산 혹은 컴퓨터 공학과 졸업자?? Q) 정보올림피아드/ACM ICPI/TopCoder 등 대 회 참가 경험자?? Q) Coding Interview 유경험자?? Q) C++ / JAVA / PYTHON 외…?
  • 6. Problem Solving Algorithm? 그거 몰라도 현업하는데 문제 없어.
  • 7. 아마도 하루 중 대부분의 시간을.... http://awesomegeekblog.blogspot.kr/2013/11/the-software-developers-fallacy.html "개발" 보다 "디버깅" 에 더 많은 시간을 쓰고 있다! "디버깅" == "problem solving" TDD, Code-review, unit-test 등 이와 같은 문제를 개선하기 위한 방법론이나 프로세스들은 많지만, 근본적으로는 SW Engineer가 꼼꼼하게 문제를 정의하고, 발생 가능한 문제를 예측하고, 깔끔하게 작성해야..!!
  • 8. Problem Solving 우리가 수학을 배우는 이유. 미적분 몰라도 먹고 사는데 지장 없어요. 계산기 있잖아요. -> 수학공부를 통해 길러지는 사고력, 논리력, 응용력 Problem Solving 을 통해 키워지는 역량 타인의 코드를 읽고 이해하는 능력 문제를 정의하고 추상화 하는 능력 예외 상황이나 오류를 찾아내는 능력 기본 코딩 스킬
  • 9. Google, Microsoft, Apple, Yahoo, Facebook, Amazon, Netflix 등등 수많은 기업의 Interview Process 그들이 평가하는 것 문제를 잘 이해하는가? 필요한 조건 및 가정을 잘 도출하는 가? 어떤 과정을 통해 문제를 접근하고 풀어나가는가? 그 과정에서 의사소통을 잘 하는가? 깔끔하게 코딩을 잘 하는가? 자신의 풀이에서 버그나 예외 상황은 없는 지 검증하고 디버깅을 잘 하는가? 그들의 인터뷰 목표 “잘하는 사람을 놓치더라도 자질이 부족한 엔지니어를 채용하는 일은 없도록 하 자” 위와 같은 역량이 뛰어난 엔지니어들만이 보유하고 있는 스킬이라는 것이 아니라 모든 SW Engineer가 기본적으로 갖춰야 하는 역량이라고 본다는 의미! 참고 http://www.quora.com/TopCoder/Why-are-programmers-in-the-software-engineering-job-interviews- tested-on-skills-similar-to-a-Topcoder-contest-irrespective-of-the-fact-that-the-skills-required-in-the- industry-are-entirely-different
  • 10. 국내 동향 Coding Interview 쿠팡, LG 전자, Daumkakao, ESTSoft….. LG전자 Coding Interview 도입 Code Jam 통해 일정 비율 선발 Coding Expert 선발 Daumkakao 멀티미디어처리파트 지원자의 역량, 필요한 스킬에 따라 직접 문제를 만들어서, 3차례에 걸쳐 코딩, 시스템디자인, 관련 전공 지식을 심층 면접
  • 11. 의도적 수련 Do you remember this old joke? A young man is on the subway, carrying a guitar case. He’s a member of a band that is performing a concert at Carnegie Hall; and he’s running late. He knows that the performance hall is close, but he doesn’t know the direction. So he stops an old man on the street and asks: “Excuse me sir, but how do I get to Carnegie Hall?” The old man looks at the lad with his guitar case and says: “Practice son, Practice.”
  • 12. All professionals practice 프로 운동선수들은 자기 시간 중 20%를 시합에, 80%를 훈련에 투자한다. 한 조사에 의하면 대부분의 직장인들은 자기 시간의 99%를 일에, 1%를 자기계발에 투자 한다. 운동선수로 치자면 거의 연습도 하지 않고, 시합에 임하는 것과 마찬가지다. -혼다 나오유키, [레버리지 씽킹]
  • 13. Programmers?? Write code. Lots of code. 끗? (그나마 코드라도 많이 짜면 다행.. ㅠ.ㅠ)
  • 15. 1만 시간 법칙에 대한 오해 http://agile.egloos.com/4834009 당신이 지금까지 걸은 시간을 합하면 1만 시간을 훌쩍 넘는다. 당신은 당신을 "걷기 마스터" 라고 부르는가? 당신은 지금껏 적어도 20년 넘게 숨을 쉬어왔다. 당신의 "폐활량"은 박태환 만큼 될까? "버티는 시간이 아니라, 의도적 수련의 시간이 중요!"
  • 16. Do Practice! 손코딩뇌컴파일눈디버깅 코딩 전 꼼꼼하게 검토하는 습관 + 생각을 있는 그대로 코드로 풀어내는 연습 Kent Beck once said “I’m not a great programmer, I’m just a good programmer with great habits.”
  • 17. 오늘의 Practice! (밑줄은 산출물) 코딩에 들어가기 전 문제를 풀기 위해 필요한 가정 도출 테스트 케이스 알고리즘 서술 코딩 서술한 알고리즘을 그대로 동작하는 코드로 옮기기 코딩 후 테스트 + 디버깅하기 시간/공간 복잡도 계산해보기 개선점 찾아보기
  • 18. 오늘의 Practice! Coding Session #1 (1hr) 시간/공간 복잡도의 제한이 없다고 가정하고 합시다. 그 외 필요한 가정은 쉬운 방향으로 세우고 시작합시다. 5분 자기소개 5분 가정도출 10분 솔루션 찾기 + 테스트 선정 30분 코딩 + 디버깅 10분 Code Review
  • 19. 그라운드 룰 Communication 머리 속에서 혼자 하지 말고 말로 표현하여 서로 토론하고 검증하기 Question 좋은 질문은 좋은 답을 이끌어낸다. Focusing 자신의 생각은 잠시 내려놓고 현재 논의 중인 내용에 집중하기. Done is better than perfect Small step Time keeper
  • 20. 오늘의 문제 Triple sum 숫자 리스트가 주어졌다고 하자. 리스트 내의 3개의 수를 골라 합이 0이 되는 경우의 수 를 반환하는 함수를 작성하라.
  • 21. 문제 이해하기 필요한 가정 시간 / 공간 복잡도 제한은? 숫자의 범위는? 0도 포함인가? 숫자 리스트의 크기는 어느정도인가? 순서가 중요한가? 숫자는 중복이 가능한가?
  • 22. 오늘의 Practice! Coding Session #2 (1hr) 5분 자기소개 15분 솔루션 찾기 + 테스트 선정 30분 코딩 + 디버깅 10분 Code Review
  • 23. 예상 답안 예상 답안은 참석자에 한해 별도로 드리겠습니다 kwangswei@gmail.com
  • 24. Retrospective 각자 포스트 잇에 작성 (5min) 놀란 점, 배운 점, 실천할 것 각 1가지씩. 조별로 공유 (5min) 전체 공유(10min) 자유 토론(10min)
  • 25. 손코딩뇌컴파일눈디버깅 모임 “코딩 기술은 정확한 프로그램을 작성하는 데 있어 작은 한 부분에 지나지 않는다. 작업의 대부분은...(중략)...문제 정의, 알고리즘 디자인, 데이터 구조의 선택이다. 이 작업들을 잘 해낼 수 있다면, 정확한 코드의 구현은 쉬운 것이 보통이다." - 생각하는 프로그래 밍 "제가 생각하는 바람직한 소프트웨어 엔지니어가 갖추어야 할 역량은 programming skill, domain knowledge, communication skill 입니 다." - LG전자 소프트웨어플랫폼 연구소장(전) Online Coding study or Coding Interview 를 앞두고 계신 분. or 기타… kwangswei@gmail.com linkedin : kwangsung ha 그동안의 모임 Editorial 보기 (http://kwangswei.tistory.com) 개요 http://kwangswei.tistory.com/421 2회 http://kwangswei.tistory.com/422 3회 http://kwangswei.tistory.com/423 4회 http://kwangswei.tistory.com/424 5회 http://kwangswei.tistory.com/425 6회 http://kwangswei.tistory.com/426 7회 http://kwangswei.tistory.com/427 8회 http://kwangswei.tistory.com/428
  • 26. 참고자료 Books Cracking the coding interview The coding dojo handbook 알고리즘 문제 해결 전략 Algorithm Judge or Competitions http://topcoder.com/tc http://codeforces.com http://algospot.com Coding interview http://www.careercup.com http://www.glassdoor.com/index.html http://oj.leetcode.com