2016년 9월 21일 수요일

개발자가 갖추어야 할 9가지 기술

우연히 유투브에서 보게된 박종천님의 강연을 정리해 보았다.
개발자로서 여러모로 공감되고 동의하는 내용이 많다.

개발자가 갖추어야 할 9가지 기술 요약..

Hard Skills
1. Basic Knowledge(C++, OS)
2. Understanding for product
3. Development Cycle

1-5 years of development
  - Associate Software Engineer
  - Software Engineer

1. Basic Knowledge(C++, OS)
* Learn from school, workplace by yourself
- Mathmatics, Physics
- Programming language(C++, C#, Python)
- Algorithm, Data Structure, Design Patterns
- Graphics, Database, Networking, AI
- Game Engines(Unity)
- OS(Windows, Mac, iOS, Android)
- Tools(Source control, Visual Studio)

* 참고서적
C++ Coding Standards(코딩의 정석)

2. Understanding for product
* Product Analysis
* Power of Blizzard
- Everyone loves game
* Three types of restaurants
- Going for profit
- Try to make customer happy
- Love cooking

* 참고서적
Why Software SUCKS...(소프트웨어, 누가 이렇게 개떡같이 만든거야)

3. Development Cycle
* Requirements & Analysus
* Design & Modeling
* Implementation
* Test/Release
* Feedback/Update

* 참고서적
How Google Tests Software(구글은 소프트웨어를 어떻게 테스트하는가 : 구글의 테스팅 문화와 기법에 관한 인사이드 스토리)

Soft Skills
4. Project Management
5. Team Management
6. Process(Agile, Zero-Bug)

6-10 years of development
- Software Engineer
- Senior Software Engineer

* 참고서적
Debugging the Development Process

4. Project Management
* Why, What, How
* Triple Constraints
- Cost(Resource)
- Time(Schedule)
- Scope(Quality)

5. Team Management
* Forming, Stroming, Norming, Performing
- Trust & Knowledge
- Style : What, Why, How, What if ?
* Roles around the Team
- Product owner
- Producer, Artists, Designers, Engineers
(Artists   : Customer Attractor - 제품을 이쁘게 만들어 주는 사람,
Producer  : Helper - 의사소통 도와주는 사람,
Designers : Success Maker - 제품을 재미있게 기획하는 사람,
Engineers : Failure Preventer - 최선을 다해서 중간만큼 한다)
- Engineering Team Lead
(Project lead, Technical lead, People Manager)
* Clear role definition. Proper delegation

* 참고도서 : Teach What You Know

6. Process
* Better way to do it, Optimal way
- Detect failure, Prevent failure
* Project Management Process
- Waterfall, Agile/Scrum
* Development Process
- Development Cycles, Code Review
- The Joel Test: 12 Steps
( 1. Do you use source control  ?
 2. Can you make a build in one step ?
 3. Do you make daily builds ?
 4. Do you have a bug database ?
 5. Do you fix bugs before writing new code ?
 6. Do you have an up-to-date schedule ?
 7. Do you have a spec ?
 8. Do programmers have quiet working conditions ?
 9. Do you use the best tools money can buy ?
10. Do you have testers ?
11. Do new candidates write code during their interview ?
12. Do you do hallway usability testing ? )
* Your Own Evolving Process
* Project Management Maturity Model
1. Initial = Common Language
2. Repeatable = Common Process
3. Defined = Sigular Methdology
4. Managed = Benchmarking
5. Optimized = Continuous Improvement

* Process & People

* 참고도서 : HARD CODE

Business Skills
7. HR System
8. Business Management
9. Vision/Goals/Culture

* 10+ years of development
- Lead Software Engineer
- Technical Director, VP of Technology, CTO, CEO

7. HR System
* Hiring
* Performance Reviews
- Example : Software Engineer
. Productivity
. Professionalism(Reliability)
. Teamwork(Communication)
. Knowledge
. Functionality(No Defect)
. Implementation(Good Code)
. Design & Architecture

* Titles(Engineering)
* Rewards
* Education
- Example : Leaerning & Development
. Books, Conferences
. Internal seminars, EDGs
. College Programs, Tuition
. Side projects, Mentoring
. Individual Development Plan
. Studio Summit, Lunch Groups
. Internal mobility(Hiring cross-teams)
* Benefits

** 좋은 팀원을 만드는 방법
Attract(매력을 가지고 사람들을 오게 만들고) - Develop(훈련시키고 발전시킴) - Engage(융합시키는 과정)
** 개발자는 자신감을 키우기 위해 실력을 키워야 합니다.

8. Business Management
* Leading People, Manage Business
* Making money
  a certain way
  doing things you are comfortable doing
  and contrubuting to society
* ROI(Return over Investment)
* Capability, Strategy, Tactics, Finance, Economics, Marketing, Sales, CS, Operations, Change
* Balanced Scorecard
- Financial Perspective
- Customer Perspective
- Internal Process Perspective
- Learning and Growth Perspective
* Customer
- The company's customers
- The leadership
- The employees

9. Vision, Goals, and Culture
* Vision and Goals for the company
* Vision and Goals for the team
* Vision and Goals for you

* Example : Blizzard Mission Statement
"Dedicated to creating the most epic entertainment experiences...ever."

* Example : Blizzard Core Values
- Gameplay first
- Commit to quality
- Play nice; Play fair
- Embrace your inner geek
- Every voice matters
- Think globally
- Lead responsibly
- Learn & grow

** 정리
Hard Skills : Learn by Studying
* Basic Knowledge
* Understanding for product
* Development Cycle
Soft Skills : Learn by Experience
* Project Management
* Team Management
* Process
Business Skill : Learn from People
* HR system
* Business Management
* Vision/Goals/Culture

Sample Q&A
* Hard Skills
- What to study : Everything
- Growth : Performance review, Endless curiosity
* Soft Skills
- Successfule Developer : Talent, Practice, Chance
- How is it working in Blizzard : Experts & Collaborations
- Good Developer : Three stages(A, A+, B)
. 처음에는 팀장이 시키는대로 output을 만들어야 한다. -> A
. 신뢰관계가 형성된 이후 -> A+, B
* Business Skills
- How to learn business : Simulation & Communication
- Attitude to become CEO : Responsible for everything
* Base Skills
- Smart, Diligent, Good Will
- Communication Skill : Listen more, Win Less
        . 10번중에 8번 지고 2번만 이기면 됩니다.

** I don't divide the world into the weak and the strong, or the successes and the failures,
   those who make it or those who don't. I divide the world into learners and non-learners.
  - Benjamin R.Barber

댓글 없음:

댓글 쓰기