2018년 4월 21일 한빛미디어 사옥에서 진행된 Hello Coding 프로그래밍 토크쇼 진행 내용을 정리한 문서입니다.
무단 복사, 수정 및 배포를 금지합니다.
‘김포프’의 Hello Coding 프로그래밍 토크쇼
한빛미디어 신청 공지 : https://bit.ly/2HnwEtO
진행 순서
14:00 - 15:00 프로그래밍을 해야 하는 이유 : 실제 세상은 알고리즘에 의해 돈다
-
포프가 바라보는 바람직한 코딩 입문 방식
-
코딩 입문 후 나뉘어지는 프로그래머의 세 방향
15:20 - 16:20 프로그래밍 생생 토크 + 자유로운 질의응답
-
다른 직업인으로써의 생활코딩
-
자유로운 질의 응답
발표자 소개
발표자 소개 : 김포프
-
1990년대 부터 게임개발을 했지만 이제 대체 주력이 뭔지 모르겠는 인간
-
베스트셀러 안 될 책은 안 쓰는 인간( 예외 : 문학집 )
-
아주 간단 최근 경력
-
2016 - : 실리콘 밸리 소재 블록체인 기업 Gluwa Inc의 CTO
-
2005 - : 렌더링 엔지니어 / 아키텍트( 캡콤, EA, 렐릭, 아이도스 등 )
-
2016 - 2018 : 캐나다 BCIT 대학 컴퓨터공학과 교수
-
2014 - 2016 :미국 전자상거래 2위 기업 Staples의 리드 엔지니어
-
아마존이 90%이상 차지하고 있어서 2위라 해도 영향력이 적음
-
저자, 번역자, 마이크로소프트 MVP, 유튜브 방송인( 포프TV )등
-
더 자세한건 링크드인 popekim(링크)
-
학력
-
조지아공대 컴퓨터공학과 석사
-
BCIT 컴퓨터공학과 수석졸업
-
연세대학교 법학과 박사
-
출시게임 ( 중 일부 )
-
마인크래프트( 닌텐도스위치, PC, XBOX one )
-
헤일로5 : 포지( windows 10, dX12 )
오늘의 강연 주제
-
프로그래밍을 해야 하는 이유
-
바람직한 프로그래밍 입문 방식
-
입문 후 나뉘는 프로그래머의 세 방향
-
다른 직업인으로서의 생활코딩
Part 1.
세상은 알고리즘에 의해 돈다
-
The Secret Rules of Modern Living: Algorithms (2015)
최대공약수
-
15와 20의 최대공약수?
-
21과 28의 최대공약수?
-
123987과 128370의 최대공약수?
-
유클리드 호제법
-
영어로 쓰면 ‘유클리드의 알고리즘’
예를 들어 화장실에 타일을 깔 때 필요한 타일의 수 계산을 할 때..
-
1. 시작은 36 * 24 크기
-
2. 시작은 짧은면의 정사각형을 만들어서 끼워 넣는다
-
24*24를 채워 넣는다
-
더 이상 24 사이즈가 들어가지 않는다
-
3. 남은 짧은 크기(12와 24 중 12)를 기준으로 정사각형을 만들어서 채워 넣는다
-
1 ~ 3 과정 반복
-
이 과정이 알고리즘이다
일상생활에서의 알고리즘
-
예
-
키 순서대로 줄 세우기
-
라면 끓이기
-
자동차 우회전 하기
-
등 매우 많음
-
알고리즘의 또 다른 이름
-
프로세스
-
매뉴얼
실제 시연 : 키 작은 -> 키 큰 순서대로 정렬하기
-
가장 작은 사람을 가장 앞에 두고 그다음으로 작은 사람을 차례대로 배치
→ 일반적인 방법 -
앞뒤 사람을 비교해서 서로 키를 비교하고 서로 자리 교체
→ 컴퓨터에서 작동하는 방법 -
다시 두 번째부터 앞뒤로 키 크기 비교&교체
-
세 번째부터 ...
-
네 번째부터 ...
-
반복…
-
이 과정은 알고리즘!
자동차 우회전
-
우회전 하기 전 신호를 본다, 좌우를 살핀다, 좌우 깜빡이를 켠다 …
-
단계가 많을 뿐 이것도 알고리즘
프로세스, 매뉴얼이라는 명칭도 호칭만 다를 뿐 알고리즘과 같은 용어
-
어떤 결과를 얻기 위해 반복이 되는 것 = 알고리즘
알고리즘
-
알고리즘(프로세스) 만들기
-
쉽지 않음
-
천재의 영역이라 불리기도 함
-
알고리즘 따라하기
-
누구나 쉽게 따라할 수 있는 반복적인 단계들
-
따르기만 하면 언제나 안전하고 정확한 결과가 나옴
-
따르는 데 걸리는 시간은 빠를 수도 느릴 수도 있음
알고리즘을 효율적으로 만드는건 쉽지 않다. 하지만 만드는 것은 누구나 할 수 있다.(결과가 나온다)
Q. 왜 알고리즘을 공대책에서만 봤을까? 왜 컴퓨터로만 생각 했을까?
-
컴퓨터는 단순한 작업을 빠르게 처리하는 기계였기 때문에 알고리즘을 컴퓨터에서만 봤음
컴퓨터와 알고리즘
-
컴퓨터는 절차가 잘 정의된 반복작업에 최적화된 기계
-
사람보다 엄청난 효율을 자랑
-
컴퓨터의 등장 이후 사람이 손수 해왔던 작업들을 컴퓨터가 대체
여러자리 곱셈 연산의 경우 특정한 규칙을 갖고 실행한다
-
가장 마지막 자리수 부터 곱셈
-
컴퓨터는 이 작업을 빠르게 처리할 뿐
컴퓨터가 좋아지면 사람의 작업을 대체 할까?
-
사실도 있고 거짓도 있다
-
예 : 개표작업
-
개표를 기계가 대체하면서 개표작업을 하던 사람은 사라졌다
-
하지만 다른 영역의 직업이 생겨났다
-
사람의 임금이 컴퓨터의 비용보다 비쌀 때(사람의 임금 > 컴퓨터 비용) 컴퓨터가 사람의 일을 대체하게 된다
-
컴퓨터가 사람의 일을 대체하면 사람의 삶의 질은 올라간다
프로그래밍의 일상생활화
-
컴퓨터는 시간이 흐를수록 빨라진다
-
어차피 할거면 편하게 하자(효율성 높게 일하자)
-
회사에서 사람을 짜를 때 ?
-
내가 작업하는 효율이 좋다면(돈 값을 한다면) 짤리지 않는다
엑셀 숙련도 테스트
-
a. 나는 엑셀에 값을 입력할 수 있다
-
b. 나는 엑셀에 입력된 값을 순서대로 정렬할 수 있다
-
c. 나는 엑셀의 한 컬럼에 입력된 값들의 총합을 구할 수 있다
-
d. 나는 엑셀에 들어간 값을 차트로 그릴 수 있다
-
e. 나는 엑셀로 3D 도형을 그릴 수 있다
-
하지만 80년대 후반에는??
아래로 갈수록(a → e) 할 수 있다고 하는 응답자의 비율이 점점 줄어든다
옛날에는 고급 능력이었던 것들이 요즘에는 누구나 할 수 있는 것이 됐다
-
프로그래밍도 지금은 어렵지만 나중에는 누구나 할 수 있는 것이 될 것이다
엑셀 숙련도
-
이와 같은 것들이 간단한 형태의 프로그래밍
-
그러나 엑셀이란 프로그램을 만든 사람이 존재 : 전문 프로그래머
-
우린 전문 프로그래머가 만들어 준 틀 안에서 프로그래밍을 할 뿐
-
하지만 전문 프로그래머가 만들어 준 틀이 없다면?
누군가 만들어준게 없다면?
-
만들어서 해야한다.
-
만들어 줄 사람이 없다면?
-
느리게 수작업을 해야한다
-
만들어서 한다면?
-
빠르게 작업을 처리하고 놀면 된다
생활 속의 코딩
-
사진 싹싹이
-
빈 MP3 폴더 지우기
-
유튜브 썸네일 만들기
-
헬로코딩 삽화 처리
‘사진 싹싹이’
-
교대를 다니던 지인이 사진 찍는것을 좋아함
-
이경배 님
-
한 폴더에 찍은 사진이 수천장이 있었으나 정렬 할 수 없었음
-
직접 만듬
-
날짜별 정리 등등..
-
사진 파일 이름에 일정한 규칙이 있음을 파악하고 이것을 이용함
-
이 도구가 만들어지기 전에는 수작업으로 정리했다
빈 MP3 폴더 지우기
-
기본 기능으로 정렬은 가능했음
-
하지만 빈 폴더를 지워주지는 않음
-
포프님 본인이 직접 원하는 기능을 만듬
유튜브 썸네일 만들기
-
포토샵으로 수작업 해서 만든것보다는 빨라서 쓴다
-
기능이 불편하긴 하지만 나만 쓰면 되는거니까...
헬로코딩 삽화 처리
-
2도 인쇄 양식
-
색을 두 번 찍어야 하므로 두 번 인쇄하는 과정을 거침
-
출판사에서 원하는 것은 Adobe Illustrator를 써서 만들어줘야 함
-
서로 사용하는 툴과 기준이 다르다
-
나름대로 만들어서 전달했지만 잘 처리가 안됐다
-
포토샵에서 스크립트를 만들어서 처리함
-
이미지의 영역을 추출해서 색상 체크를 통해 원하는 결과물 제작
게임을 만들 때 수백명의 플레이어 캐릭터를 만들 때, 선글라스를 그려넣어야 하는 상황
-
몸은 수정이 필요 없으므로 캐릭터 위의 얼굴 부분을 제외하고 몸만 만들어 둔다
-
얼굴 부분의 이미지를 가지고 와서 선글라스를 그려주는 코드를 작성함
-
전문 프로그래머가 아니라 디자이너 중 한 명이 직접 만듬
생활 속의 코딩(어릴적 친구들)
-
포프보다 나았던 프로그래머들
-
친구1 - 물리학자
-
친구2 - 증권업체 근무 중
어릴 때 프로그래밍을 잘 못했음
-
어릴때 같은 반에서 2명이 프로그래밍을 잘 했음
-
그중 한 명인 S 모씨..
-
프로그래밍을 매우 잘 했음
-
컴퓨터 공학과를 가지 않음
-
경제학과 졸업, 증권업체로 감
-
알고리즘 트레이딩 하고 있음
-
다른 한명인 K 모씨..
-
어릴적 게임을 만들 때 스승같은 존재
-
물리학과로 감
가까운 미래의 프로그래밍
-
모든 사람이 프로그래밍을 배우는 세상
-
전문 프로그래머가 만든 틀 외의 생활코딩이 가능
-
프로그래밍을 할 줄 아는 사람은 셋으로 나뉠 것
-
전문 프로그래머 - 엔지니어급
-
전문 프로그래머 - 코드 몽키급
-
프로그래밍 할 줄 아는 타 직장인
예전에는 엔지니어급의 사람들이 프로그래밍을 했다(Excel 같은 프로그램 제작)
코드 몽키급 프로그래머는 어떻게 해야 할 것인가..?
-
두 번째 시간에 이야기 할 주제
졸업 후 전공과 연관 있는 직장에 간 사람의 통계
-
약 50% 전
Part 2.
올바른 입문법
기존의 프로그래밍 입문법이 잘못 되었다고 생각해서 책을 쓰게 됨
베스트셀러 못 만들 책이면 쓰고 싶지 않다
-
예전부터 이런 류의 책을 쓰고 싶었다
요렇게
(Hello Coding 책 이미지)
-
프로그래밍 입문의 정석
-
뭔말이 더 필요? -_-
-
이걸로 강연 끝!
올바른 프로그래밍 입문법
-
핵심: 컴퓨터가 이해할 수 있는 명령 내리기
-
어떤 명령? 알.고.리.즘.
-
언어는 거들 뿐
-
실수를 줄일 수 있는 언어
-
도구가 좋은 언어
-
그냥 강사가 잘 아는 언어는 의미가 없음
프로그래밍 언어는 종교전쟁
-
언어는 중요하지 않다
-
프로그래밍의 원리를 이해할 수 있게 공부 하면 된다
‘파이선은 입문용 언어로 좋지 않다’고 생각한다
-
??? : 왜 입문용 언어로 좋은가요?
-
쉽다
-
그리고 그 외에는요…?
-
…
-
파이선은 들여쓰기를 탭, 띄어쓰기로 들여넣기 할 때 구분을 한다
-
초보자는 이것을 파악하지 못한다
-
눈으로 봤을 때 띄워쓰기, 탭을 어떻게 구분할까??
-
못한다
-
파이선은 문제가 있을 때 오류를 보여주지 않는다
-
불친절한 언어
그렇다면 왜 파이선이 입문용 언어로 사용되고 있을까?
-
교수님들 본인에게 익숙한 언어라서
-
교수들이 노력하지 않아서 다른 언어는 사용할 줄 모른다
Hello Coding 책을 C#으로 쓴 이유
-
실수를 줄일 수 있다
-
들여쓰기로 인한 문제가 없다
-
코드가 잘못 됐을 때 오류를 보여준다
-
도구가 좋다
-
기능을 제안해주기도 한다
-
Visual Studio에서 해당 기능 지원
-
글쓴이 한마디 : Visual Studio와 비슷한 개발 도구인 Visual Studio Code에서도 이와 같은 기능이 있음.
-
강사가 잘 아는 언어는 의미가 없음
-
포프님이 잘 쓰는 언어는 C++
-
하지만 책은 C# 으로 씀
-
언어는 거들 뿐..
논리력 학습법과도 구분할 것
-
생활 속에서도 가능한 학습
-
삶은 알고리즘이니까…
스크래치가 좋은 언어다?
과학상자, 전기회로 만들기..
-
어릴때는 이해하고 만드는 것이 아니다
-
그냥 이리저리 꽂다 보면 소리가 나고 움직인다
-
그냥 이것 자체가 좋을 뿐.
-
프로그래밍과는 다르다
-
논리력 학습, 프로세스를 따르는 법을 배우는 것에는 도움이 되기도 한다
라면 끓이기
-
다시 생활 알고리즘을 보자
-
좀더 자잘한 단계로 나눠서
(라면 조리법 사진)
-
물 600ml를 끓인 후 면과 건더기를 넣고 5분간 더 끓입니다.
-
불을 끄고 물을 5숟가락 정도를 남기고 따라 버립니다
-
면에 볶음해물스프와 볶음고추조미유를 넣고 중간불로 30초 볶는다
-
컴퓨터는 생각보다 똑똑하지 않다
-
물 500ml를 냄비에 넣는다
-
냄비를 불위에 넣고 끓인다
-
가끔씩 물이 끓는지 확인한다
-
물이 끓지 않았으면 3번을 반복
-
면과 야채건더기를 넣는다
-
5분 뒤 불을 끄고 물 5숟가락을 남기고 버린다
-
스프와 조미유를 넣고 30초 동안 볶는다
-
검정색 글씨 : 단순 명령
-
빨간색 글씨 : 조건문
-
파란색 글씨 : 반복
언어능력이 부족한 사람이 프로그래밍도 잘 못한다
-
언어 능력이 부족하면 다른사람들과 협업이 잘 안된다
프로그래밍은 명령, 조건, 반복이 전부다!
-
효율적인 방법을 위해 복잡한 내용도 있다
-
하지만 프로그래밍 입문 과정에서는 알 필요 없다
프로그래밍의 기초
-
Operation: AddNoodle();
-
조건
if (water.IsBoiling())
{
AddNoodle();
}
-
반복
while (water.IsBoiling() == false)
{
}
혼자서 쓰는거라면 대충 짜도 된다
동료와 같이 프로그래밍을 효율성을 고려해야 하므로 복잡한 내용을 필요로한다
-
입문 단계에서는 복잡한 것을 공부할 필요가 없다
그래서 어떻게 입문하라고요?
-
많은 사람들이 입문 전에는 세 부류중 어떤 프로그래머가 될 지 모름
-
농구공 던져 보기 전에 NBA에서 뛴다는 꿈을 꾸나요?
-
어느 스포츠나 입문 과정은 동일
-
사실 무엇을 배우던 입문 과정은 동일
-
유독 프로그래밍 교육에서는 이런 당연한 사실을 무시해 왔음
잘 하려면 계속 연습해봐야한다
학문적으로 접근하지 말고 흥미를 이끌어내야한다
바로 그 책
(Hello Coding 책 이미지)
-
포프가 초딩 때 입문한 방법 그대로
-
따라하며 간단한 코딩을 해 본다
-
프로그래밍의 기초(조건, 반복)만
-
C# 언어의 모두를 다루지 않음
-
어? 숫자야구 게임도 만드네?
-
기초만 써도 숫자야구게임이 나옴
-
다른 고급 기법과의 관계도 소개
-
전문 프로그래머를 꿈꾸는 사람의 흥미유발
-
온라인 문제풀이 및 강의 준비 중(광고)
입문 후 진로
세 부류
발표자료와 같은 이미지가 아님. 비슷한 모양의 그래프 이미지일 뿐..
-
세로 축 Ability(능력)
-
가로 축 TIme(시간)
-
어느 분야든 시작점은 같지만 최후에는 세 부류로 나뉨
-
시작했다가 흥미를 잃고 포기(가장 아래 그래프. y = 1 의 그래프 모양과 비슷)
-
시작했다가 어느정도 선에서 멈춤(중간 그래프. y = n 의 그래프 모양과 비슷)
-
생활코딩 하는 사람
-
가즈아!(가장 위의 그래프. y = n2 그래프 모양과 비슷)
-
전문 개발자
-
요즘 세상은 중간 그래프에 있는데도 괜찮다고 느낌
-
30대 후반 - 40대 초반에 이것이 잘못된 것을 느낌
-
이미 늦음..
1. 생활코딩
-
프로그래머를 업으로 삼지 않음
-
다른 일을 하면서 필요에 따라 기존의 프로그램을 실행
-
필요한 프로그램이 없을 경우 간단한 1회성 코딩
-
예: 헬로코딩 삽화 작업
-
프로그래밍은 내 직업의 효율을 올릴 수 있는 훌륭한 툴
-
MS Word 없이 보고서를 쓰나요?
-
굳이 전문 프로그래머가 되지 않아도 충분히 성공 가능
-
일반 프로그래머보다 덜 불쌍(?)할 수도 있음
부작용 이야기 하나..
-
전산화가 되면 문서 출력을 덜 할 것이다
-
현실은 그렇지 않았다
생활코더가 더 배울 것들
-
골 밑에서 50% 확률로 슛을 넣을 수 있을 정도의 실력 쌓기
-
다른 프로그래밍 언어 기본서적 공부
-
내게 필요한 자잘한프로그램 만들기
-
사진 싹싹이
-
빈 폴더 지우기
-
어차피 나 혼자 쓸 프로그램이니 돌기만 하면 됨
-
효율성은 뭔 상관?
-
스트레스가 적다!
2. 전문 프로그래머 - 코드몽키급
-
프로그래머를 업으로 삼음
-
엔지니어급 프로그래머가 정해준 알고리즘을 프로그래밍 언어로 작성
-
일반 직장인과 다를 바가 없음
-
스타벅스의 바리스타 같은 존재
-
머신러닝이 대체할 거라고 하는 프로그래머 직군이 여기
-
야근 등의 처우 문제 이야기가 나오는 프로그래머 직군도 여기
-
하지만 누구나 시작은 여기서 함
‘프로세스만 잘 따라해도 일을 잘 한다’ 는 이야기를 듣는 사람이 여기
-
스타벅스의 바리스타 같은 존재
-
매뉴얼대로 만든다
-
어느정도 맛도 괜찮게 나온다
-
집에서 커피 믹스를 타먹어도 어느정도 만족하는 맛이 나온다
-
매뉴얼을 잘 다루는 것은 길어도 1-2달… 교체가능한 부품일 뿐
시작은 같다
-
시간이 흐를수록 차이가 많이 난다
코드몽키가 더 배울 것들
-
골 밑에서 80% 확률로 슛을 넣을 수 있을 정도의 실력 쌓기
-
누군가 설계도를 주면 제품을 조립해 줄수 있어야 한다
-
생활코더가 배운 것들 모두
-
기초 알고리즘 및 데이터 구조 공부
-
프로그래밍 실행 속도(CPU에 한정)에 대한 고민
-
정렬 기능을 실행하는데 3천년이 걸리면 안된다...
-
협업이 가능한 코딩 스타일(가독성 등)
-
내가 만든 코드를 다른 사람이 보고 이해를 할 수 있게…
-
버그 고치는 실력 늘리기
3. 전문 프로그래머 - 엔지니어 급
-
Top 1% 프로그래머
-
뜬구름 잡는 요구를 받더라도 제품을 설계 가능
-
여타 직장인과 매우 다름
-
자기 삶의 주인이 될 수 있는 위치
-
생활습관 자체에서 최적화된 알고리즘이 보임
-
한국에서도 매우 처우가 좋은 프로그래머 직군
-
머신러닝이 대체하기 어려운 프로그래머 직군
정말 클라이언트가 원하는 것을 파악하고 해결할 줄 아는 능력
-
커뮤니케이션이 중요함
누가 대체하기 쉬울까?
-
조립공장에서 일하는 근로자
-
일반적인 프로그래머
-
능력 좋은 프로그래머
-
영화 ‘매트릭스’의 매트릭스 설계자
엔지니어가 더 배워야 할 것
-
골 밑에서 80% 확률로 슛을 넣되 부상을 당하지 않을 실력 쌓기
-
코드몽키가 배운 것 전부
-
컴퓨터와 일심동체(하드웨어의 이해)
-
순수 CPU외에 운영체제, 메모리 작동방식에 따른 성능에 대한 이해
-
Managed 언어 하나와 Unmanaged 언어 하나의 완벽한 이해
-
생활습관의 엔지니어화 = 일을 즐겨야 한다
-
인간에 대한 이해
-
실수가 어려운 설계를 만들 수 있는가?(실수가 적게 발생하도록 만들 수 있는가)
현재 교육 및 업계의 잘못된 트렌드
-
모두를 위한 교육
-
프로그래밍 교육의 하향 평준화
-
교수진 품질의 저하
-
다수결이 최고다
-
눈가리고 아웅하기
-
밥그릇 지키기
-
현실을 깨달았을 땐 너무 늦음
예전에는 프로그래밍 과목에서 탈락률이 높았다
-
하지만 요즘에는 탈락률이 낮다
-
하향 평준화…
교수진 품질의 저하
-
잘 하는 사람들은 교수를 하지 않는다
-
연봉이 훨씬 적은데 뭐하러 교수를 하겠는가?
-
실제로 개발을 안해본 사람이 교수를 하기도 함
그렇다면 엔지니어 공부는 어디서?
1. 좋은 대학교
-
좋은 학교일 수록 취업전문학교화가 덜 되어있음
-
물론 여전히 수준미달 교수들이 꽤 있음
-
수업을 들을 때 하드웨어 관련 과목을 많이 들을 것
-
운영체제
-
C/C++ 언어
-
컴퓨터 구조
-
알고리즘 등
-
실패한 창업을 시도할 좋은 기회
-
2년제 또는 단기 학원을 나온다면 회사 다닐 동안 더 노력해야 함
학원에서는 하드웨어에 대해서는 가르치지 않는다
-
실무에서 이 부분에 대해서 보완해야 할 때 모르고 있다면 할 수가 없다
-
공부를 꼭 해야 한다
실패한 창업을 시도할 좋은 기회
-
본인이 스스로 무언가를 만들면서 경험을 할 수 있다
2년제 또는 단기 학원을 나온다면 회사다닐동안 보완을 해야..
-
하드웨어 관련 과목!!
-
컴퓨터의 작동 원리에 대한 깊은 이해
2. 좋은 직장
-
대충 돌기만 하는 1회성 제품을 만드는 회사는 빨리 떠날 것
-
외주보다는 자체 제품을 만드는 회사를 선호
-
정부의 지원 및 수주를 받는 회사도 의심할만 함
-
야근을 강요하지 않는 회사를 찾을 것
-
이런 회사에 가지 못하고 모든 회사가 똑같다는 변명을 한다면
-
평생 코드몽키
-
다른 업종 가도 똑같은 대우를 받음
-
허나 이런 거짓말을 하며 자기 위안을 하는 사람이 많다
-
그로 인해 피해보는 후임자들은 생각치 않은 채
대충 돌기만 하는 1회성 제품을 만드는 곳은 품질을 따지지 않는다
-
도움이 안된다
내 시간을 챙길 수 있는 회사를 찾아야 한다
-
자기발전을 위해 시간을 낼 수 있어야 한다
3. 사이드 프로젝트
-
회사에서 배우는 것은 한계가 있음
-
새로운 것을 해볼 기회가 적음
-
1만 시간 법칙의 문제도
-
10,000 / 20시간 / 50주 = 10년
-
사이드 프로젝트를 할 때는 새로운 기술들을 시도해보자
-
친절하지 않은 많은 기술을 접하며 컴퓨터가 생각하는 방식에 익숙해짐.
포프tv
-
시작은 작은 것을 목표로 시작했다
-
꾸준함이 좋은 재료..
4. 더 나은 교육기관(광고)
-
현재 열심히 개발 중인 학원
-
엔지니어를 키우는 엘리트 교육이 목표(학점 80-90% 이상만 졸업 가능)
-
시작은 온라인, 하지만
-
멍때리며 따라한 뒤 ‘아~ 난 이제 이거 알아’라는 잘못된 자기만족을 지양
-
컴퓨터 공학과 수준의 교육(과제, 실습, 기말고사까지 있음)
-
교양과목을 빼고 1.5-2년 정도가 목표
-
최신 기술을 이용한 동기 및 승부욕 부여
-
빨라야 올해 말 공개(Proof of Concept University : https://www.pocu.academy)
-
홈페이지 접속이 안됨..
영상을 보고 멍때리는 교육 지양
-
Udacity 등 이 문제가 해결된 곳이 있음
실시간 질문 기능
-
수업을 상시 여는게 아니라 스케줄에 따라 진행
-
정기적인 시간에 질문/답변 받을 수 있게
과제, 실습 자동 채점
-
제출을 하면 자동 체크!
-
코드 스타일, 기능 체크, 카피 체크
-
기능을 다 돌리고도 0점이 나오기도 함
-
무제한 제출 가능
-
처음엔 50%대 점수 → 마지막엔 90%대 점수까지 상승
-
“우리는 빌드봇에게 배웠다!”
기말 시험
-
웹캠으로 방을 전체 스캔
-
얼굴 스캔
-
신분 확인
-
시험지 프린트
-
시험지에 응답하는 동안 영상처리로 이상 유무 체크
-
이상이 있을 경우(컨닝 의심 반응이 있을 경우) 교수가 체크
관련 포프 TV 에피소드들
-
생활습관을 고쳐야 좋은 엔지니어가 된다
-
A급 B급 인재
-
개발경력 3년이면
-
코드몽키의 미래
-
스터디 절대로 하지마라
-
야근과 자기발전 1,2
-
야근에 대해 말해보자
-
라이프스타일과 야근
-
수재는 천재를 이길 수 있다
정리
-
세상은 원래부터 알고리즘에 의해 돈다
-
컴퓨터는 세상을 빠르고 효율적으로 돌려준다
-
남이 만든 프로그래밍을 돌리기만 하는 시대는 끝났다
-
프로그래머가 아니더라도 프로그래밍을 이용할 곳은 많다
-
프로그래머가 직업이라고 다 편하게 살지 못한다
-
프로그래머가 직업이라면 컴퓨터와 훌륭한 부부생활을 하자
Q&A
Q. 프로그래머가 되기 위해 한 구체적인 노력
-
프로그래머가 되려고 노력했다기 보다는 프로그래밍이 재미있었다
-
유치원 생 때 우연히 프로그래밍을 배웠다
-
배운 것으로 쓸데없고 잡다한 것들을 만들었다
-
어느 친구 : “게임을 만들어보자”
-
게임이 재미있었고 만들고 싶었다
-
친구들에게 도움이 되었으면..
-
그림을 못그리니까 코딩을..
-
일단 만들자!
-
만들기 위해 한 다양한 노력들
-
커서 전문적으로 직장을 가지고 일할 때
-
남들보다 못한다고 생각했다
-
가상의 경쟁자를 만들었다
-
가상의 경쟁자를 이길 수 있도록 목표로 세우고 노력함
-
예) 6개월 뒤에 선임 개발자 A를 따라잡자
-
단기적인 성과보다는 장기적인 성과를 목표로 함
-
무엇이든 꾸준히 하는 습관을 들이자
Q. 프로그램을 어떻게 짜야 할 지 모르겠습니다. 어떻게 해야 할까요?
-
알고리즘의 생활화
-
생활해서 무엇을 할 때 단계를 나눠서 생각하려는 노력을 한다
-
친구들과 토이 프로젝트를 만들어서 진행해본다
-
복잡한 프로젝트일 필요는 없다
-
예) “똥 피하기 게임을 만들어보자!”
-
온라인에 질문을 올려도 답변이 달리지 않을 수도 있다
-
너무 뻔한 질문을 올려서 그럴수도 있다
Q. 웹 프로그래머는 해외에서 어느정도 경쟁력이 있나요?
-
예전에 웹 디자인 하던 사람들이 자바스크립트를 배워서 웹 개발자라고 하는 부류(프론트엔드)
-
웹 서버쪽을 다루는 부류(백엔드)
-
프론트엔드를 만드는 사람들은 백엔드를 만들던 사람들이었다
-
단순 프론트엔드 코딩 기술로는 경쟁력이 없다
-
캐나다는 연 8만불이상이 안되면 이민이 어렵다
-
이 이상 연봉을 받을 수 있는 사람이 되어야 한다
-
모바일프로그래밍
-
요즘의 웹 프론트엔드와 같은 양상
-
예전엔 인기 있는 파트였지만 금방 식었다
-
요즘은 모바일, 웹 작업을 외주를 준다
-
비용이 싸기 때문
-
본인이 이 분야에 뛰어들었을 때 경쟁력이 있는가?
-
경쟁력을 갖출 수 있는 실력이 있어야 한다
Q. 프로그래밍을 잘 하려면 수학을 잘 알아야 한다는 이야기를 듣습니다. 수학의 어떤 부분을 잘 알아야 할까요?
-
수학의 논리적 사고력을 중요하게 본다
-
필수
-
증명
-
명제
-
대학에 진학 후 이산수학
-
본인이 어떤 분야로 나가느냐에 따라 조금씩 다르다
-
통계, 확률 : 통계 분야
-
삼각법, 도형 등 : 게임 분야
-
3D, 벡터, 행렬 : 물리 분야
Q. 회사에서 음주를 선호하는 분위기가 있는 경우가 있으셨나요?
-
포프님 회사에서 술 마시는 것은 업무와 분리되어 있다
-
회사에 따라 키보드로 자부심을 내세우는 곳이 있다
-
내가 좋아하진 않지만 주위에 맞춰서 묻어갈 것인지, 싫다고 말하고 왕따 분위기를 거치고 원하는대로 지낼지 선택
-
본인이 싫어하는데 맞출 필요는 없음
-
상대방 기분이 상하지 않는 선에서 적절히 둘러대기
-
그럼에도 불구하고 왕따를 시키는 곳은 오래 있을 필요가 없다
Q. Intermediate의 기준이 무엇인지?
-
포프 TV에서 말하는 Intermediate는 북미 기준
-
주니어와 시니어의 사이
-
Junior
-
해야 할 일들을 하나씩 지정해줘야 함
-
코드를 보고 확인을 해줘야 함
-
Intermediate
-
“라면을 만들거야. 니가 적절히 만들어서 가지고 와”
-
만들어 온 결과물을 검토를 받는다
-
완벽하지 않을 수 있지만 자기만의 시스템을 책임지는 사람
-
Senior
-
프로그램 하나 전체를 디자인 할 수 있다
-
프로그램 전체를 볼 수 있는 사람
-
회사에서 일 잘하는 사람은 인터넷 서핑하면서 노는 모습을 봐도 지적을 받지 않는다
-
지적을 받는다면 일을 못하는 사람인 것
Q. 포프님과 술 한잔 하려면 어떤 방법이 있을까요?
Q. 프로그래밍 알고리즘을 짤 때 사고력 훈련을 어떻게 해야 할까요?
-
알고리즘을 직접 만들 필요는 없다
-
‘Hello Coding 알고리즘’ 책과 같은 쉬운 책을 따라서 공부하는 것도 방법
-
온라인 커뮤니티
-
예) 생활코딩(링크)
-
필요한 것은 물어물어 만들면 된다
Q. 1) 좋은 코드의 특징 2) 요즘 관심갖고 계신 신기술(블록체인, 머신러닝 등)이 궁금합니다
-
좋은코드 → 읽기 쉬운 코드
-
예외처리 코드가 들어가면 읽기가 어려워짐
-
자바에서는 모든 기능을 함수로 만드는 것을 선호
-
함수에 버그가 있을 경우 해당 버그를 고쳤을 때 미칠 수 있는 영향에 대한 고민.
-
자바의 기본 관점 : “누군가 함수를 만들면 해당 함수는 버그가 없다”
-
잘못된 생각
-
다른사람이 내 코드를 보더라도 이해가 쉽게 되어야 하도록 짜야 한다
-
신기술
-
신기술을 쫓아서 보지는 않는다
-
요즘 보고 있는건 블록체인의 플랫폼화에 대한 가능성
-
개인화 된 코인을 빠르게 생성 가능
Q. 기초 지식이 부족하다고 생각합니다. ‘기초 지식, 이건 알아야 한다!’ 하는게 있을까요? 추천 부탁드립니다.
Q. 게임서버를 공부하고 있습니다. 지인이 말하길 ‘서버를 하려면 C++을 버려야 한다. 자바가 C++ 보다 서버에 최적화 되어있다’라고 합니다. 이 말이 맞는지 궁금합니다
-
헤일로(HALO)
-
C++
-
“C++이 자바보다 최소 3배가 빠르다”
-
C++로 짠 코드를 컴파일하면 컴파일 시간이 꽤 걸린다
-
경우에 따라 1시간 걸리기도 함
-
컴퓨터가 코드를 최적화 하는 시간
-
자바는 컴파일 하는 시간이 거의 없음
-
자바 코드를 실행하면 실시간으로 컴파일 하는 것과 같음
-
실행전에 최적화 하는것보다 실시간으로 하는게 빠를 수가 있는가? 아니다
-
C++이 더 좋다
-
자바로 짜는 것보다 C++로 웹서버를 만드는게 더 오래걸린다
-
지인이 말한 것이 이 부분을 말한듯 하다
-
C++은 메모리를 직접 건드리기 때문
-
요즘 게임서버는 C#으로 많이 만든다
Q. 캐나다 이주 계획을 목표로 하고 있습니다. BCIT를 입학하기 위해 준비해야 할 것들에 대한 팁이 있을까요?
-
캐나다의 경우 2년제 대학을 졸업하면 3년짜리 워킹비자를 발급해 줌
-
3년동안 일하는 동안 경력이 쌓이고 영주권 획득이 가능하다
-
‘시간 절약’이 관건
-
캐나다에 도착해서 영어 시험을 준비하는 것은 늦다
-
영어 점수를 미리 따고 입학서까지 미리 받아둘 것
-
2년 동안 듣는 학점이 128학점(과거엔 140학점)
-
고등학교 때 공부하는 것을 생각하면 충분히 할 수 있다
-
학교 다니는 동안 다른 것을 안한다는 생각을 해야 한다
Q. 특성화고 졸업 예정자입니다. 회사에서 기획 분야의 능력도 요구하는 곳이 많습니다. 개발을 얼마나 하고 기획 분야로 넘어가는 게 좋을까요?
-
기획을 하게 되는 분의 대부분
-
처음엔 게임을 만들고 싶어함
-
프로그래밍은 어려워
-
아트는 어려워
-
기획은 할만할 것 같아!
-
처음엔 QA로 시작하다가 흐름을 읽을 줄 알게되면 기획으로 넘어가는 경우도 있음
-
어떤 분야를 가든 좋은 사람들이 많은 곳을 가는 것을 추천
-
게임 기획자는 수치를 잘 다룰줄 알아야 한다고 생각한다
Q. 실리콘 밸리에서 요즘 각광받고 있는 분야가 어떤 것인지 궁금합니다.
-
실리콘 밸리는 매출이 올라도 각광받지 못함
-
투자자들이 원하는 것은 ‘매출’이 아님
-
성장하고 있음을 보여줘야 함
-
유저 수, 매출, 재방문 고객 수 등
-
KPI : (링크)
-
트렌드를 잘 보려면? ‘구글 트렌드(링크)’를 이용하면 어떨지…
-
비지니스의 두 분류
-
벤처비즈니스
-
돈 받아서 exit 하는 것(고속성장)
-
꾸준히 돈 버는 것
-
뉴스 같은 곳에 나오지 않음
Q. 마이크로소프트 MVP 활동 계기, 혜택이 궁금합니다
-
마이크로소프트 MVP
-
특정 기술 분야에서 커뮤니티에 기여를 많이 하는 사람을 뽑아서 주는 상
-
기존 MVP의 추천을 받아야 함
-
작년에 어떤 활동을 했는지 제출 후 검토를 받음
-
첫 계기
-
게임 만들 때 컨퍼런스에 3년 연속 발표
-
C++ MVP로 갔다가 개발 MVP로 바뀜
-
현재는 포프TV 활동으로 MVP 기록 유지 중
-
혜택
-
마이크로소프트 소프트웨어 무료 지원
-
Visual Studio Ultimate 무료 지원
-
Azure Credit 지원
-
마이크로소프트 파트너사 툴 이용 지원
-
JetBrain
Q. 특성화고를 다니며 게임 포트폴리오를 3개정도 만들었습니다. 하지만 기업 담당자분들은 아키텍처 등 깊이 있는 지식을 원하시는 것 같습니다. 이런 것들을 공부하는게 좋을까요?
-
배틀쉽, 3D 비행슈팅게임 …
-
충분하다
-
면접을 통과하는 단계
-
1. 인사부
-
한 번에 수백장의 이력서가 옴
-
뭔가를 만들어 본 경험이 있다면 통과율은 충분히 높음
-
2. 면접
-
코딩 테스트
-
정렬 알고리즘 코드를 작성할 수 있는가
-
문자열을 거꾸로 뒤집을 수 있는가
-
알고리즘 공부를 했다면 다 할수 있는 것들…
-
객체지향에 대해서 얼마나 잘 알고 있는가
-
언어에 대한 깊은 이해
Q. 직접 회사를 운영하고 있습니다. 회사 운영을 위한 프로세스, 가이드를 만드는데 이것도 알고리즘의 일환이라고 생각합니다. 이런 가이드를 작성하는 사람이 고려해야 할 우선순위가 궁금합니다.
-
프로세스가 모든 것을 완성시켜주지는 않는다
-
시스템을 악용하는 사람이 많아지면 엉망이 된다
-
예) 휴가를 사용하는 경우
-
참고
-
영상 - 규칙을 지키는 놈만 손해다?
https://www.youtube.com/watch?v=Dos6h0J5ro0 -
블로그 포스팅 - 시스템 악용과 팀
https://kblog.popekim.com/2013/12/system-breaker-and-team.html -
휴가를 2년치 모아서 회사가 바쁠 때 휴가를 가는 사람이 있다
-
이 사람을 제재하는 것이 맞지만 실질적으로 어렵다
-
피해를 보는 사람은 원래 잘 지키는 사람들
-
악용하는 사람 : 3일 휴가 + 병가 + 3일 휴가 ..
-
글루와(Gluwa)
-
독재자가 최고다
-
독재자가 제대로 된 기준을 가진 사람이 있는 사람이라면 올바른 판단을 내릴 수 있다
-
프로세스는 단순한 것이 좋다
-
프로세스가 없을 때 실수가 많이 발생할 수 있다면 프로세스를 만드는 것이 좋다
-
프로세스는 실수를 줄이기 위해 있는 것
-
프로세스를 악용하는 사람이 있을 때
-
프로세스를 고칠 것이 아니라 사람대 사람으로 해결 할 것
-
사장이 나쁜 사람이 될 수록 직원들은 행복함
Q. 회사에서 다른 사람들이 기능을 만들어 달라고 할 때 요구사항이 불분명한 경우가 있습니다. 이럴 때 커뮤니케이션 방법이 궁금합니다
-
사람들은 본인이 원하는 것이 무엇인지 정확히 모른다
-
본인이 만들어 달라고 한대로 만들어 줬지만 ‘이게 아닌데…’라고 하는 경우도 있다
-
상대방이 무엇을 원하는지 알아볼게 아니라, 어떤 점이 불편한지 파악하는 것이 우선
-
이것을 왜 해야 하는가?
-
예) 파일을 1000번 복사해야하는데 이게 귀찮으신가요?
-
파악이 끝나면 상대방이 뭐라고 하든 무시하고 일단 나만의 방식대로 만든다
-
그 결과물을 가지고 상대방에게 보여주고 피드백을 받아서 수정한다
Q. 1) 코드몽키에서 엔지니어로 올라갈 때 버그를 많이 찾아야 된다고 하셨는데, 취업 전 디버깅 연습할 수 있는 방법 2)컴퓨터 공학 기초 지식 공부의 우선순위가 궁금합니다
-
디버깅을 할 때 단순 로그를 찍어서 하는 사람
-
코드가 길어지면 디버깅을 못한다(잘못된 방법)
-
IDE에서 제공하는 디버깅 기능을 활용하는 사람
-
중단점을 설정해서 디버깅을 한다
-
코드가 길어지더라도 문제가 없다
-
코드의 길이는 문제가 안된다
-
디자인 패턴
-
사람들이 많이 쓰는 것들 정형화한 것
-
일부러 공부 할 필요 없다
-
기본적인 알고리즘 공부를 해라
-
예) 문자열 뒤집기
-
코딩 면접은 기본기에 대해서 묻는다
-
기본기가 중요!
-
기본기 없이 화려한 공부만 하는 것은 잘못된 방법
Q. 성격이 급해서 기능 개발을 할 때 회사 코딩 스타일을 무시하고 구현 후 회사 스타일에 맞춰서 수정하는 편입니다. 이렇게 개발하는게 맞는 방법인지 궁금합니다
-
잘못됐다
-
본인이 잘 만들었고 고치면 된다고 생각한다
-
코드를 수정하는 과정에서 놓치는 경우가 발생할 수 있다
-
사람이기에 분명 실수를 하게 된다
-
이런 실수가 반복되면 문제가 있는 사람이라고 생각하게 된다
-
처음부터 코딩스타일을 따르는게 어렵다고 생각한다면?
-
처음엔 습득기간이 길어질 수 있다. 하지만 이게 맞는 길..
-
이직할 때마다 회사의 코딩스타일이 달라진다
-
회사 스타일에 맞게 빠르게 적응해야 한다
-
스타일에 빠르게 적응하는 사람이 일 잘하는 사람이 된다
-
본인 스타일대로 작업을 하다가 다른사람과 같이 일해야 할 경우가 생길 수 있다
-
같이 일하는 사람이 이 상황을 해결해줄수는 없다
'외부 세미나 & 특강 > 개발' 카테고리의 다른 글
한빛네트워크 제3회 혼공능력시험 이벤트 (0) | 2021.12.26 |
---|---|
180324 책프협의 책노리 (0) | 2021.02.18 |
KCD2020 -내가 태국에서 일하는 방법 (0) | 2020.12.17 |
[데이터야놀자 2020] 오픈소스기여:코드로 세상에 기여하는 또다른 방법 (0) | 2020.12.10 |
NAVER 핀포인트(Pinpoint) cloud로 시작하는 애플리케이션 성능 모니터링 (0) | 2020.12.08 |