2. 업무 역량과 업무 외 역량
• 업무 역량
• 요건 계획, 소프트웨어 설계, 프로그래밍, 디버깅, 소프트웨어 공학, 운영체제등 학교에서 배우는
기술적인 역량
• 경력 초창기에는 기술과 관련된 업무 역량이 중요
• 업무 외 역량
• 팀워크, 의사소통, 강연 능력, 조직 예절, 협상력, 멘토링, 채용, 관리, 리더십 등
• 위로 올라 갈수록 업무 외 역량이 더 중요해짐
• 자신이 나아갈 방향을 파악하고, 적당한 시간을 투자하여 역량을 계발하는 것이 필요
12년 11월 25일 일요일
3. 성장을 위한 기술 역량
역량 설명
학교에서 배우는 핵심적인 개발 기술, 업계 분위기가 계속해서 달라지기
기본기
때문에 꾸준한 개선이 필요 ( 프로그래밍 언어, 알고리즘 등)
개발 역량 코딩 역량, 품질 보증 역량, 전략 계획 역량으로 나누어짐
영역 전문성 도메인 지식
트레이드크래프트 개발 방법론
12년 11월 25일 일요일
4. 프로그래밍 언어: 잘나가는 언어와 그렇지 않은 언어 88 M A K I N G I T B I G I N S O F T WA R E
higher-level user-friendly languages come and go more frequently over time
than the mainstay languages. Even so, you always need to have one of these
• 프로그래머라면 어떤 언어와 your back pocket for building꾸준히 scripts, and small applications.
in
패러다임이 주목받고 있는지 tools, 관심을 가져야함
Also very significant in the data is the relative use of object-oriented (OO)
languages. Java and C++ are two of the top three languages. PHP includes
• 잘 나가는 언어를 알아내는 방법
OO support as well. If you want to stay current on programming languages,
you really ought to stay abreast of the top five languages shown, know your
way around XML, and keep your OOD/OOP skills up-to-snuff.
• 각 언어가 인터넷에서 거론되는 빈도를 확인하는 방법이 유용
20%
18.8%
18%
16%
Percentage of Total
14% 13.4%
12%
10%
9.1%
8% 7.4%
7.1% 6.7%
6.3%
6%
4% 3.6% 3.4%
3.2% 3.1%
2.6% 2.4%
1.9% 1.7%
2% 1.6% 1.5%
1.2% 1.1% 1.0%
0.8% 0.8% 0.8%
0.3% 0.2%
ptg
0%
Java
C
C++
.NET
PHP
(Visual) Basic
Perl
Python
C#
SQL
Eclipse
JavaScript
HTML
Ruby
XML
Delphi
SAS
PL/SQL
COBOL
Pascal
D
AJAX
J2EE
CSS
Misc. languages
Programming Language
• 현재 패러다임에서 저자의 생각
FIGURE 6.1 Internet frequency of the top 24 programming languages and platforms
• 프로그래밍 언어의 동향을 따라 잡으려면 상위 5개 언어를 주시하면서 XML에도 관심을 기울이고, OOD/OOP 역량도 갖춰야만 한다.
Debugging
12년 11월 25일 일요일 Programming is an absolutely humbling experience because there is just no
5. 디버깅
• 디버깅은 핵심 역량임에도 정규 교육과정에서 다뤄지지 않는다.
• 대부분의 프로그래머는 디버거나 값 추적 기능을 사용
• 문제점을 찾아내기 위한 더 나은 전략
• 디버거를 띄우고 싶은 욕망을 억제하는 방법
• 자기확인형 코드와 계약에 의한 설계
• 코드 점검
12년 11월 25일 일요일
6. 자기확인형 코드와 계약에 의한 설계
• 확인 (Assertion) 사용
• 여러 조건이 정상적인 범위 안에 있는지 확인함으로써 코드 내에서 스스로 테스트 작업을 수행
• 실행 시에 자체 검증이 가능
• 보통 확인은 출시용 코드에서는 돌아가지 않는 매크로로 구현
• 계약에 의한 설계 (Bertrand Meyer)
• 함수의 입력 값과 출력 값이 함수의 해당 규격에 맞는지 점검
• 시작 부분과 마무리 부분에 확인 구분을 많이 집어 넣는 방법은 일관성 있는 프로그램 방식으로
자연스럽게 연결됨
12년 11월 25일 일요일
7. 코드 점검과 코드 검토
• 직접 소스코드를 일일이 검토하게 하는 방식은 결점을 잡아내는데 있어서 가장 효율적
• 설계 검토
• 시스템상의 문제를 제거하는데 있어서 가장 효과적인 절차
• 코딩 문제를 찾아내는 데는 별 위력을 발휘하지 못함
• 코드 검사를 통해 코드상의 결점을 대부분(최대 90%) 제거할 수 있다 - 마이클 페이건
• 코드 검사의 범주
• 검토 담당자 그룹에 의한 형식을 갖춘 코드 검토
• 작성자 외에 추가 한명의 프로그래머에 의한 형식을 갖추지 않은 코드 검토
• 개인에 의한 점검. 본인이 직접 만든 코드의 논리 흐름을 따라가면서 코드를 점검
12년 11월 25일 일요일
8. 생존을 위한 규격, 설계 및 코드 검토
• 업무에 관한 기술 검토
• 제품 규격, 설계 규격, 테스트 계획, 제품용 코드, 테스트용 코드 등.
• 소규모의 검토팀이 투입되어 모든 일을 샅샅이 파헤치면서 문제점을 발견
• 프로그래머에게 곤혹스러운 일이 될 수 있음.
• 기술 검토는 프로그래머 성장의 기반이 될 수 있음
• 프로젝트에서 사소한 것에까지 주의를 기울이는 능력이 급격하게 올라감
• 자신의 선택에 제기될 수 밖에 없는 질문을 대비하게 되므로, 설득력 있는 전문가로 성장할 수 있음
• 검토에 임하는 자세
• 검토에 참가하는 사람은 나보다 더 잘 안다는 마음가짐으로 임하는 자세가 필요
• 카리스마에 억눌리거나, 정치적인 면에 말려서 부당하게 윗 사람에게 휘둘리면 안됨.
12년 11월 25일 일요일
9. tial. Growth activities, the activities that sharpen the saw, generally fall in
quadrant. They are rarely urgent—they can wait a week, a month, or lon
in most cases. But although these tasks aren’t urgent, they define the s
and potential of your career. Spend time in this quadrant as follows:
성장 역량 . Recognize its relative importance to you personally and profession
and develop strategies for spending time here on a regular basis.
. Purge or bypass activities in your schedule that are really in the
unimportant categories. The less time you spend in quadrants 2 an
the more easily you can justify to yourself and others time that yo
• 역량을 구축하고 프로세스를 최적화하는데 있어서 가장 어려운 점은 시간 관리
spend in quadrant 4.
• 업무의 구분 Take a look at Figure 6.2.
• 급하고 중요: 핵심 업무 (중요한 회의등) Urgency
• 급하고 중요하지 않음: 전화 받기 등. Urgent and Important but
important not urgent
(firefighting) (quality time)
Importance
• 중요하지도 않고 급하지도 않음: 시간낭비라고 할 수 있는 일 (웹 서핑 등.)
Urgent but not Not urgent, not
• 중요하지만 급하지 않음: 경력을 확장하고 잠재력을 키우는 일 important important
(distractions) (time wasting)
• 이 업무에 투자한 시간에 따라 승자와 패자가 결정 됨.
FIGURE 6.2 Quadrants of time (From The 7 Habits of Highly Effective People, by
• 성장을 위한 시간 관리 전략 (중요하지만 급하지 않는 일에 시간을 투자하는 방법)
Stephen R. Covey New York: FreePress, 2004, reprinted with permission from
Franklin Covey Co.)
• 개인적인 입장에서, 전문가적인 견지에서 상대적인 중요성을 파악하고 정기적으로 시간을 투자하기 위한 전략을 수립
Individuals and corporations have varying strategies for getting qu
time in quadrant 4, the magical zone of Important but Not Urgent. For s
• 중요하지 않은 범주에 속하는 활동은 적당히 미루거나 생략, 중요성이 낮은 업무에 쓰는 시간을 줄일수록a중요하지만monthly않은
people, it’s a daily event; for others, it’s weekly or 급하지 routine. If yo
일에 쓰는 시간을 더 많이 확보 할수 있음 not finding time in the Important but Not Urgent zone on a regular bas
will definitely lower your career potential. Carpe diem—seize the day.
12년 11월 25일 일요일
10. 조직 최상부의 비업무 역량
• 조직에서 최고위층에 있는 사람들의 공통적인 특징
• 사회적 의식을 가지고 구설수나 정치적인 문제에 휘말리는 일을 피하는 편이다. 전문가로서 적절한 대화를 나누는데 능숙하
다
• 작은 그룹에서든 큰 그룹에서든 글을 통해서든 소통을 잘 할 줄 안다
• 시간을 효율적으로 활용한다
• 조직내에서 인간관계를 잘 맺고 있다
• 중요한 문제를 정력적으로 공략하며, 위기 의식을 가지고 행동한다
• 위기 상황에서도 상대적으로 침착함을 유지하고 문제에 적절하게 대응한다
• 이러한 역량은 학교에서 배울 수 있는건 아니자만, 어떤 전문가에게든 강력한 무기가 될수 있다
• 대부분 타고나는 성격적 특성이지만, 성실한 사람이라면 시간은 걸리겠지만, 이런 역량을 배우고 익히는 것이 가능
12년 11월 25일 일요일
11. 궁극의 비업무 역량: 감성 지능
• 감성지능 (Emotional Intelligence)
• 다양한 상황에 적응하고 성공을 이끌어낼 수 있는 능력에 지대한 영향을 주는 몇가지
비인지적인 정신, 감정적인 역량의 척도
• 일반적인 면에서의 지능과는 별개의 것
• 성공에 미치는 영향도
• IQ: 6%, EI: 27% ~ 45%
• 전문가로 성공하는 기폭제 역할을 할 뿐 아니라 삶 자체가 달라지는 요인이 됨
12년 11월 25일 일요일
12. 요약
• 소프트웨어 전문가로서의 필요 역량
• 기술 역량
• 특정 분야의 전문성
• 비업무 역량
• 전문가로서 성장하기 위한 2가지 비법
• 중요하지만 급하지 않은 일에 시간을 투자
• 시간이 지남에 따라 고위 전문가로서의 적합성을 극정으로 향상해 줄 수 있는 EI를 계발
12년 11월 25일 일요일
13. 생각해 볼 것
• 각자의 생활에서 4가지 업무 분야에 투자하는 시간의 비율은?
• 중요하지만 급하지 않은 일에 얼마나 많은 시간을 투자하고 있는가?
• 주변 사람들 중 EI가 높은 사람은? 그 사람의 행동 패턴은?
• Assertion에 대한 자신의 생각
• 현재 적용하고 있는가?
• 적용했을 때 어떤 이점이 있을거라 생각하는가?
12년 11월 25일 일요일