23
창창창 창창 , Software 창창창창 2011 창 5 창 25 창 창창창

창의와 열정, 소프트웨어 엔지니어

Embed Size (px)

DESCRIPTION

CS 학부 졸업준비생을 위한 특강 발표 자료 (2011.5.25 명지대 용인캠퍼스)

Citation preview

Page 1: 창의와 열정, 소프트웨어 엔지니어

창의와 열정 ,Software 엔지니어2011 년 5 월 25 일윤경구

Page 2: 창의와 열정, 소프트웨어 엔지니어

차례

1. Software 는 지식 노동2. 두뇌 구조와 지식 노동3. 좋은 엔지니어4. 당부참고 : SW R&D Survival Guide

2/18

Page 3: 창의와 열정, 소프트웨어 엔지니어

3

SOFTWARE 는 지식 노동

Page 4: 창의와 열정, 소프트웨어 엔지니어

Software 주도 Smart 혁명 4/18

Page 5: 창의와 열정, 소프트웨어 엔지니어

SW 가 HW 를 리드

• Hardware• 차별 한계 : 시장 경쟁 심화 , 기술 차별성

약화• 기술발전 방향의 변화가 많지 않음

• Software• 무궁무진한 창의가 발현되고 적용 가능• SW 의 진화 방향이 매우 다양

5/18

Page 6: 창의와 열정, 소프트웨어 엔지니어

지식 노동의 산물 SW

• SW 가 인간의 삶 요소에 침투하는 시점 ( 무한대의 경우의 수 )• 구글이 주도한 클라우드 기반의

Machine Learning 이 응용 분야를 확대 . 점점 가치있는 정보를 만들어 . 클라우드가 인간의 뇌를 특정 영역에서는 훨씬 능가하는 거대한 인공지능화• 터미네이터의 스카이넷

6/18

Page 7: 창의와 열정, 소프트웨어 엔지니어

지식 노동의 요소

•전문지식 ( 숙련 )• 기본 지식 외에 분석 능력 , 통찰 능력의

결합 필요로 하는 지식 노동•창의• 즉자적으로 추론되지 않는 아이디어를

동력으로 하는 지식 노동• 한계를 두지 않는 생각이 중요

7/18

Page 8: 창의와 열정, 소프트웨어 엔지니어

8

두뇌 구조와 지식 노동

Page 9: 창의와 열정, 소프트웨어 엔지니어

좌뇌와 우뇌의 비대칭

• 좌뇌• 직렬처리 방식• 논리성• 자아 인지• 몸의 오른쪽에 연결

• 우뇌• 병렬처리 방식• 몸의 왼쪽에 연결

9/18

Page 10: 창의와 열정, 소프트웨어 엔지니어

지식 노동의 개선 방법

• 전문지식 ( 숙련 ) 의 향상• 순차적 논리성 , 귀납과 연역을 교차한

지적 추상화 능력을 끊임없이 발전시켜야

• 창의의 향상• 생각을 막지 말고 끝없이 의문을 던져야

• 핵심은 집중 , 생각의 몰입

10/18

Page 11: 창의와 열정, 소프트웨어 엔지니어

11

좋은 SW 엔지니어

Page 12: 창의와 열정, 소프트웨어 엔지니어

코딩 능력 향상법

• 탑다운 코딩• 소설을 쓰듯 논리적으로 탑다운 코딩• 코딩 완료하기 전에는 컴파일하지 말라• 논리 장악력이 떨어진다• 비논리적인 코딩은 우연에 의존하는 것 . 발전이 없음

• 배치로 개인 업무 관리• 지식 노동은 인터럽트를 최소화하고 생각의 연속성 필요• 컨텍스트 스위칭이 되기 때문 .

• 순차적으로 집중해서 코딩하고 완성되면 컴파일해서 에러 고치고 , 디버깅하라 .

• 모든 논리에 단위 테스트를 작성하는 습관을 들여라 .• 의심나는 논리는 손으로 (작은 코드 작성하여 ) 검증 .

12/18

Page 13: 창의와 열정, 소프트웨어 엔지니어

아키텍처 능력 향상법

• 숙련이 필요• 시스템 아키텍처를 잘 이해하는 사람들과

함께 해야 빠르고 제대로 배울 수 있다 .

• 지적 추상화 능력• 핵심 아키텍처 혹은 이슈를 논리적으로

추상화해낼 수 있는 훈련이 반복적으로 필요

13/18

Page 14: 창의와 열정, 소프트웨어 엔지니어

14

당부

Page 15: 창의와 열정, 소프트웨어 엔지니어

기업가 정신 Entrepreneurship

• 창업 바람이 있지만 좀더 많은 것을 제대로 배울 수 있는 환경을 택하라 .

• 너무 일찍 창업하면 돈과 영업은 알지 몰라도 기술은 배울 기회가 없다 .• 학교에서 배운 것은 ( 특히 SW 는 ) 기업에서는 출발점도

안되는 경우가 대부분이다 .

• 판단을 기업가의 입장에서 하는 습관을 가지면 기업 환경의 결정들을 이해하는 데 도움이 된다 . ( 내가 사장이라면 ?)• 관리자로 성장하거나 창업하는 데 도움이 된다 .

15/18

Page 16: 창의와 열정, 소프트웨어 엔지니어

엔지니어의 자세

• 끊임없이 평생을 배워야 한다 . ( 지식 노동의 특성 )• 끊임없이 “왜”라는 질문을 던지며 생각의

수준을 높여가야 한다 .• 자기 머리로 이해하고 생각하지 못하면 지식

노동에서 가장 단순한 반복 노동밖에 하지 못한다 .

• 배우는 것을 , 도전하는 것을 두려워하지 말라 .

16/18

Page 17: 창의와 열정, 소프트웨어 엔지니어

결어

• SW 엔지니어는 자부심이 필요• 전문지식의 숙련도와 통찰력을 높이고 창의적 지식 노동의

비중을 높이려면 엄청난 도전과 노력이 필요 .• 단순 노동자보단 지식 노동자를 선택하길

• 기업에는 항상 기술을 주도하고 발전시키는 부류와 불평 , 불만에 급급해 자기 발전을 못하는 부류가 자석의 양극처럼 존재• 어느 극쪽으로 자신의 존재를 위치시킬 것인가 ?• 지금 당장의 기업을 볼 것이 아니라 자신의 발전을 중시하라 .

• 더 나은 엔지니어가 되려면 자료구조 , 알고리즘 나아가 확률 통계 등 수학 기반을 잃지 않도록 노력하길

17/18

Page 18: 창의와 열정, 소프트웨어 엔지니어

참고 : 연구원 SURVIVAL GUIDE ( 비공식 )

Page 19: 창의와 열정, 소프트웨어 엔지니어

발표 능력 = 사고 능력 = Software 능력= 추상화 능력 + 수학적 기반

명확한 개념

추상화

아키텍처 능력

정확한 이해

Page 20: 창의와 열정, 소프트웨어 엔지니어

Metaphor ( 은유 )

• 적절한 Metaphor ( 은유 )

• 구체적인 상을 머리속에 그려야• 좋은 비유는 연역을 쉽게 하며 창의의 중요한 동력이 된다

• 정확한 이해의 전제• 엄밀한 개념 구분• 각 개념들의 metaphor 들이 잘 짜여져 살아있는 것처럼 느껴질 때

비로소 개인의 view 에서 정확한 이해에 가까이 간 것• 발표는 개인의 개념적 이미지들에 대한 집단적 공유 및 검증 과정• 설명할 수 없다면 이해한 것이 아니다

Page 21: 창의와 열정, 소프트웨어 엔지니어

Terminology ( 용어 )

• Self-Explanatory Terms• 소집단에서만 사용되는 독특한 은어나 , 내부에서 편의적으로 사용하기 위해 원래 의미를 변형한 용어 사용 금지

• 보편적인 용어를 사용하여 표현할 수 있어야 (보통명사화 )• 충분한 감성적 이해를 수반하지 않을 경우

외래어 / 영어 / 전문어 등 “좋은 단어” 사용 금지

Page 22: 창의와 열정, 소프트웨어 엔지니어

논리적 추상화

• 분석에 기반한 추상화• 세부 내용에 의해 뒷받침되어야 (bottom-up)• 개념 구체화 과정1. 선험적 직관에 의한 가설 / 개념 설정2. 세부 사실에 의한 가설 / 개념 검증3. 가설 / 개념의 재설정 및 검증 반복

• 논리 전개는 top-down• 논리 전개 즉 , 발표는 추상화 기반에서 top-down• 내용이 많으면 적절히 분류 분할하여 명확하게 전달할 수

있는 단위로 축소하여 재구성

Page 23: 창의와 열정, 소프트웨어 엔지니어

아키텍처 능력

• Software 의 각 논리적 역할에 기반한 구성• 각 모듈 , 라이브러리를 Role 에 기반하여

개념 분류 및 추상화• Role 기반 분류는 Objected Orientation 원칙과도 부합

• System View 와 논리 역할 View 는 구분해서 접근