problem solving skills (for it engineers)

26
Problem Solving Skills (for IT Engineers) Nguyễn Vũ Hưng 2017/02/15

Upload: vu-hung-nguyen

Post on 29-Jan-2018

148 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Problem Solving Skills (for IT Engineers)

Problem Solving Skills (for IT Engineers)

Nguyễn Vũ Hưng2017/02/15

Page 2: Problem Solving Skills (for IT Engineers)

Mục đích 1. Giải thích về kỹ năng “giải quyết vấn đề" (problem solving)2. Nêu ra một số ví dụ thực hành3. Một số sai lầm hay gặp

Page 3: Problem Solving Skills (for IT Engineers)

Đối tượng1. Kỹ sư 2. Kỹ sư công nghệ thông tin3. Bất kỳ ai

Page 4: Problem Solving Skills (for IT Engineers)

Cách áp dụng kiến thức này 1. Đọc2. Đọc lại3. Thực hành các ví dụ4. Tự suy ngẫm cho mình

Page 5: Problem Solving Skills (for IT Engineers)

Các bước giải quyết vấn đề (cơ bản) 1. Defining the problem / Xác định vấn đề 2. Generating alternatives / Xem xét các giải pháp 3. Evaluating and selecting alternatives / Đánh giá và chọn giải pháp 4. Implementing solutions / Thực thi giải pháp

Page 6: Problem Solving Skills (for IT Engineers)

Một vụ án mạng kỳ lạ 1. Có thể estimate được thời gian tìm ra thủ phạm của một vụ án kỳ lạ không?

a. Ít chứng cứ b. Không biết ngày mai điều gì xảy rac. Không biết điều gì xảy ra?

2. Đây là một bài toán phức tạp

Page 7: Problem Solving Skills (for IT Engineers)

Fix (easy) bugs 1. Lên kế hoạch2. Và làm thôi3. Easy (dễ)

a. Hoàn toàn biết cách làmb. Không có rủi ro

Page 8: Problem Solving Skills (for IT Engineers)

Implement (easy) features 1. (Implement hiểu đơn giản là “lập trình")2. Thực thi chức năng DỄ3. DỄ

a. Không có rủi rob. Hiểu hết cách làm c. Lên kế hoạch

4. Và làm thôi (theo quy trình)a. Phân tích, thiết kếb. Lập trìnhc. Kiểm thửd. Deploye. ...

Page 9: Problem Solving Skills (for IT Engineers)

Fix (difficult) bugs 1. KHÔNG lên kế hoạch (được)2. KHÔNG commit trước được deadline3. Nhiều rủi ro4. “Fixing a Difficult Bug is Like Catching a Fish”5. Các bước tiến hành6. Cấp trên/đối tác vẫn cần deadline

a. Giải thích sao?b. Xử lý sao?c. Commit sao?d. (Xem slide sau)

Page 10: Problem Solving Skills (for IT Engineers)

Fix (difficult) bugs Step 1: Enter the bug in your case tracking systemStep 2: Google the error messageStep 3: Identify the immediate line of code where the bug occursStep 4: Identify the line of code where the bug actually occursStep 5: Identify the species of bugStep 6: Use the process of eliminationStep 7: Log everything and analyze the logsStep 9: Look at the correlationsStep 10: Bring-in outside help

Page 11: Problem Solving Skills (for IT Engineers)

Step 1: Enter the bug in your case tracking systemStep 2: Google the error messageStep 3: Identify the immediate line of code where the bug occursStep 4: Identify the line of code where the bug actually occursStep 5: Identify the species of bugStep 6: Use the process of eliminationStep 7: Log everything and analyze the logsStep 9: Look at the correlationsStep 10: Bring-in outside help

Bài học/cảm nghĩ của bạn là gì?

Page 12: Problem Solving Skills (for IT Engineers)

Fix (Difficult) Bugs 1. vKHÔNG lên kế hoạch (được)2. KHÔNG commit trước được deadline3. Nhiều rủi ro4. “Fixing a Difficult Bug is Like Catching a Fish”5. Các bước tiến hành

So, how long will it take to fix this bug?

An hour maybe? Two tops? I’ll get right on it!

Well, how long will it take to catch a fish?

Page 13: Problem Solving Skills (for IT Engineers)

Heisenbug1. Software bug that seems to disappear or alter its behavior when one attempts

to study it.2. Plan cho việc fix Heisenbug thế nào?

a. Khób. Đừng hứac. Cứ tìm hiểu đid. May thì fix được :) e. Fix được vào một ngày đẹp trời

Page 14: Problem Solving Skills (for IT Engineers)

Estimation + Scheduling/Plan1. Định nghĩa các bước cần để giải quyết vấn đề2. Cho tới khi đạt tới mục tiêu3. Estimate công việc theo các bước đó4. Plan theo những gì đã estimate

Page 15: Problem Solving Skills (for IT Engineers)

Thực hành #1Estimate một dự án có nhiều kỹ thuật khó và mới

Page 16: Problem Solving Skills (for IT Engineers)

Thực hành #2Một sản phẩm chiếu xạ cứ vài trăm ngàn lần chiếu thì bị chiếu quá cường độ dẫn tới chết người.

Cả dự án phân tích để tìm nguyên nhân và cách xử lý.

Với vai trò kỹ sư, lập trình viên, bạn tiếp cận theo cách nào.

Page 17: Problem Solving Skills (for IT Engineers)

Thực hành #3Tên lửa bị nổ khi phóng lên không trung.

Sếp nói “Liệu nguyên nhân nổ có liên quan tới phần mềm không?”

Chúng ta (kỹ sư, lập trình viên, xử lý thế nào)

Page 18: Problem Solving Skills (for IT Engineers)

Thực hành #4Website do chúng ta (kỹ sư, lập trình viên) bị xô lệch một vài pixel ở trên một vài trình duyệt.

Xử lý ra sao?

Page 19: Problem Solving Skills (for IT Engineers)

Thực hành #5Dự án phát triển phần mềm hoàn thành 99%.

Công việc còn lại là fix một số lỗi, yêu cầu thay đổi, có vẻ rất nhỏ.

Hỏi: Bao giờ dự án xong.

Tham khảo:

1. The 99% Complete Syndrome (Triệu chứng 99%)a. The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10

percent of the code accounts for the other 90 percent of the development time.

2. 99% rulea. “The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10

percent of the code accounts for the other 90 percent of the development time.”

Page 20: Problem Solving Skills (for IT Engineers)

Thực hành #6Máy tính không khởi động được.

Xử lý thế nào?

Page 21: Problem Solving Skills (for IT Engineers)

Chủ đề liên quan1. Ra quyết định (decision making)2. Quản trị dự án (Project Management)3. Affinity Diagrams4. Cause-and-Effect Diagram5. Flow Chart6. Swim Lane Diagram 7. Divide and conquer (chia để trị)8. Mindmap9. Cynefin framework

Page 22: Problem Solving Skills (for IT Engineers)

03 kỹ năng quan trọng nhất1. Xác định chính xác bài toán

a. Hỏi cho kỹb. Thu thập đủ thông tin

2. Xác định rõ mục tiêua. Hỏi cho kỹb. Thu thập đủ thông tinc. Khoanh vùng hướng tới mục tiêu (xem 3.)

3. Lựa chọn các phương án4. Đưa ra quyết định ([không] theo hướng nào)5. Feedback và thay đổi

Page 23: Problem Solving Skills (for IT Engineers)

Xác định mục tiêu1. Luôn review/update lại câu hỏi: Mục tiêu là gì?2. Để đạt được mục tiêu, điều kiện hoàn thành (DONE) là gì?3. Break

a. Theo các bướcb. Theo các điều kiện hoàn thànhc. Theo task

4. Điều kiện hoàn thành (DoD) của các bước nhỏ là gì?5. Hoàn thành

a. Cái gì bắt buộc hoàn thành?b. Cái gì là optional?c. Tập trung vào mục tiêu nào?

6. Giảm DoDa. Hoàn thành hết hay một phầnb. Theo thứ tự (ưu tiên), lộ trình nào

Page 24: Problem Solving Skills (for IT Engineers)

Tham khảo 1. http://www.mediate.com/articles/thicks.cfm2. http://asq.org/learn-about-quality/problem-solving/overview/overview.html

Page 25: Problem Solving Skills (for IT Engineers)

Cynefin framework1. Đơn giản2. Phức tạp3. Phức hợp4. Loạn

Page 26: Problem Solving Skills (for IT Engineers)