프로그래머로 사는법

13
프로그래머로 사는 법 2015.02.25 김연수

Transcript of 프로그래머로 사는법

Page 1: 프로그래머로 사는법

프로그래머로 사는 법

2015.02.25

김연수

Page 2: 프로그래머로 사는법

당신은 몇년차?

IBM DW - 당신은 몇년차?

직원을 뽑을때 예측력이 높은것은?

0

0.2

0.4

0.6

경력 연차 학력 관심사 작업 샘플

테스트

IQ와 같은 지능

테스트

구조화된

인터뷰(직무

분석을 토대로)

상관성

상관성

이 상관성은 수치로 1에서 -1 사이의 값이 되는데, 0이면 상관성이 없고, 0.5가 넘으면 강한 효과, 0.2이하는 약한 상관성이라 말한다. 경력 처음 몇 년 동안에는 연차의 상관성이 꽤 높으나, 예컨대 5년차와 10년차의 연차차이는 실력에 있어 큰 의미가 없다.

Page 3: 프로그래머로 사는법

경력을 말아먹는법 대인 관계 문제

•남을 화나게 하는 사람 / 남을 헐뜯는 사람

•대책 없이 불평만 하는 투덜이

•새로운 것에만 집착하는 사람

•의사 결정에 문제가 있는 사람

팀 문제

•팀워크에 문제가 있는 사람

•남의 공로를 인정하지 않는 사람

생산성 문제

•버그 투성이 코드를 만드는 사람 / 생산성이 낮은 사람 / 일정을 자꾸 놓치는 사람

•우선순위를 구분하지 못하는 사람

성장 문제

•기술 역량이 감퇴하는 사람

•자기 PR에만 열중하는 사람 / 엉뚱한 쪽으로 자기 PR 하는 사람

•중요하지 않은 역할에 매여있는 사람

그러나 정말 중요한 것은 기록에 남을만한 업적이다. 생산성과 혁신성, 팀 플레이어로서의 협동심, 중요한 일을 해내는 능력 등을 제대로 보여줄 수 있는 경력을 쌓는다면 다른 자잘한 오류는 전부 용서받고 잊히게 마련이다.

Page 4: 프로그래머로 사는법

필수역량 성장역량

업무역량

업무 외 역

성장을 위한

기술 역량

필수역량

•톱날 갈기

•시간 마련

성장역량

•요건 계획, 소프트웨어 설계, 프로그래밍, 디버깅, 소프

트웨어 공학, 운영체제 등 기술적인 역량

업무역량

•의사소통, 강연 능력, 조직 예절, 협상력, 멘토링, 채

용, 관리, 리더십 등

업무 외 역량

Page 5: 프로그래머로 사는법

필수역량 시간 사분면(출처 : 성공하는 사람들의 7가지 습관, 스티븐 코비)

중 요 성

긴급성

급하고 중요함

(불 끄기)

급하지만 중요하지 않음

(업무를 방해하는 일)

급하지도 않고 중요하지도 않음 (시간 낭비)

중요하지만 급하지 않음

(알차게 보내는 시간)

성장을 위한 활동, 톱날을 가는 시간 자기 경력을 확장하고 잠재력을 키우는 시간

Page 6: 프로그래머로 사는법

성장을 위한 기술 역량

•핵심 언어

•운영체제

•객체지향 설계

•GUI 프로그래밍

•메모리 관리

•자료구조와 알고리즘

•데이터베이스

•웹 프로그래밍

•스크립트 언어 (자신만의 도구를 만들거나 빠른 프로토타입을 만든다)

•하드웨어

기본기

•코딩

•QA

•전략 계획

개발역량

Page 7: 프로그래머로 사는법

시간관리

시간 관리

영향력의 원

과 관심의 원

목표 중심

과제 중심

[목표 중심] 몇 달에서 몇 년에 걸친 거시적인 수준에서 목표를 달성하기 위한 핵심 성공 요인에 초점을 맞추는 방법 [과제 중심] 며칠 또는 몇 주 안에 해야 할 과제들을 이해하고, 매일 그 우선순위를 설정하는 식의 관리 방법 위 두 전략을 적절히 활용해야 한다 [영향력의 원과 관심의 원] 어려운 결정을 내리느라 제대로 행동하지 못하는 일은 없어야 한다. 결정하는 데 필요한 시간을 미리 정해두고 적정선 내에서 그 시간 계획을 따르도록 하자. 내가 영향을 끼칠 수 있는 부분에만 초점을 맞추면 시간을 더 잘 활용하고 자기 영향력을 확대하고 일상에서 긍정적인 감정을 더 많이 느낄 수 있다, 그러면 영향력도 점점 커진다.

Page 8: 프로그래머로 사는법

시간관리 일만 해야하나? 하루에 어느정도까지 시간을 낭비해도 될까?

소프트웨어 개발이나 설계는 정신적으로 매우 강도 높은 일이기 때문에 9~10시간씩 연속으로 효율적으로 일할 수 있는 사람은 거의 없다. 효율적으로 일하기 위해서는 창의적이고 분석적인 절차를 정리할 수 있도록 정신적인 휴식이 필요하다. 그리고 인맥을 구축하는 일도 중요한 일이다. 사람들과 긍정적인 관계를 형성하는건 전체적으로 도움이 된다. 단, 주의할 것은 하루에 75분을(점심시간을 비롯한 다른 휴식시간도 포함) 넘기지 않고, 남들한테 다 보이게 대놓고 놀지 않아야 한다.

Page 9: 프로그래머로 사는법

의도적 수련

당신이 제자리 걸음인 이유 : 지루하거나 불안하거나

몰입, 최고의 나를 만나다

자신이 업무 시간 중에 불안감이나 지루함을 느끼는 때가 하루 중 대부분이라면, 자신은 실력이 도무지 늘지 않는 환경에 있는 겁니다.

제자리 걸음에서 벗어나는 방법

a1. 실력낮추기

a2. 난이도 높히기

b2. 실력 높히기

b1. 난이도 낮추기

현재 지루함을 느끼고 있는 경우

현재 불안함을 느끼고 있는 경우

Page 10: 프로그래머로 사는법

개인성격 개인 성격은 매우 중요하다

왜? 프로그래밍 작업은 어느 누구도 여러분이 무엇을 작업하고 있는지 알수 없기 때문에 본질적으로 관리가 불가능하다.

결국 중요한 건 자신이다. CODE COMPLETE 2/E - 개인성격

Page 11: 프로그래머로 사는법

개인성격 지성과 겸손

•어느 누구도 컴퓨터를 프로그래밍할 수 있을 만큼 똑똑하지는 않다.

•두뇌는 작업을 따라 갈 수 없다, 두뇌의 부담을 줄여야 한다. (시스템 분해, 루틴을 짧게, 도메인 관점, 디테일한 규약 사용)

호기심

•유효한 기술적인 정보는 계속해서 변한다. 변화를 따라갈 만큼의 호기심은 매우 중요하다.

지적인 정직함

•실수를 기꺼이 인정하는 것

의사소통과 협동

창의성과 훈련

게으름

•재미없는 작업이 신경쓰이지 않도록 빨리 처리하는 것

•재미없는 작업을 다시 수행할 필요가 없도록 툴을 작성하는 것

습관

필요한 특성

Page 12: 프로그래머로 사는법

개인성격 인내력

•대부분 소프트웨어 개발에서의 인내력은 거의 도움이 안되는 고집으로 비춰진다.

•잠재의식이 문제를 해결할 수 있도록, 기존과 다른 접근 방법을 생각해 본다, 컴퓨터 문제와의 결투는 아무런 도움이 되지 않는

다.

경험

•소프트웨어 개발에선 기초지식 조차도 급변한다. 오래된 사고 습관이나 오래된 기술을 떨쳐버릴 수 없다면, 그러한 경험이 차

라리 없느니만 못할 수 있다.

별난 프로그래밍

•프로그래밍 기백에 대한 이러한 찬사는 순전히 거짓말이며 거의 틀림없이 실패할 것이다.

•밤을 꼬박 새면서 프로그래밍을 했다는 것이 세상에서 가장 훌륭한 프로그래머라고 느낄 수 있게끔 해줄 수는 있으나, 나중에

영광의 순간을 즐기는 동안 만들어진 결함을 해결하느라 여러 주를 보내게 될것이다.

•프로그래밍에 흥분해야 한다. 그러나 흥분이 유능함을 대체할 순 없다.

생각만큼 중요하지 않은 특성

Page 13: 프로그래머로 사는법

균형의 기술

스스로 결정하라

•소프트웨어 개발 분야는 일이 모든 시간을 잡아먹을 만한 위력을 갖고 있다.

•일과 개인의 시간을 어떻게 구분할지 스스로 결정을 내리는게 중요하다.

일은 나를 규정짓지 않는다

•일이 나의 일부분이며 상당부분을 차지할 순 있으나 나란 인간을 정의하진 않는다

흥미로워야 한다

•내가 하는 일에 흥미를 느끼고 그 일이 중요하다고 느낄 때 스스로 만족 할 수 있다.

일과 삶 사이의 균형은 각자 다르니 개인이 생각하는 이상을 적고 현실과 비교하여 어떻게 시간을 조정할지 고민해 보아야 한다.

경력은 수십 년에 걸쳐 쌓아간다. 일이 아무리 재밌어도 일과 삶 사이의 균형은 당연히 필요하다.