Tuần này mình sẽ review một cuốn sách khá hay dành cho các project manager có tựa là “The Mythical Man-Month”. Cuốn sách này lần đầu xuất bản 1975, tính ra cũng được 45 năm. Tuy đã viết từ lâu như vậy nhưng hầu hết những kinh nghiệm, quan sát và kết luận vẫn còn đúng cho ngành phát triển phần mềm hiện nay.
Brooks là một cây đa cây đề trong ngành phần mềm và thời điểm viết sách này (1975) là ông đang quản lý team phần mềm tại IBM. Cá nhân mình lập trình hơn 15 năm và quản lý nhiều dự án thì thấy những tư tưởng của tác giả đến nay vẫn dùng được. Sách viết từ 1975 nên tiếng Anh thời đó đọc tra từ điển cũng đuối vì có nhiều từ, mẫu câu đã cũ hoặc khá hàn lâm, đọc cũng nhức não mới hiểu nổi ý nghĩa.
Sách gồm 17 chương, trong đó có 4 chương mới được viết thêm vào 1995 nhân kỷ niệm 20 năm xuất bản. Sách này chình là khởi nguồn cho định luật Brooks cũng khá nổi tiếng là “Adding manpower to a late software project makes it later” (Đưa thêm người vào 1 dự án đang trễ, sẽ chỉ khiến nó càng trễ hơn).
Sách bao gồm những bài luận ngắn, riêng lẻ về các đề tài xoay quanh việc quản lý dự án phần mềm như về tài nguyên hệ thống, phần cứng, đội nhóm, nhân sự, dự án, tài liệu nội bộ, manual cho người dùng, sự thay đổi trong cấu trúc tổ chức, cũng như những khó khăn trong xây dựng phần mềm mà sẽ không có phương pháp triệt để nào giải quyết dứt điểm.
Chương mình thích hơn hết là Chương 2 (The Mythical Man-Month, cũng là tựa sách luôn) và chương 16 (No Silver Bullet – Essence and Accident in Software Engineering). Chương 2 là khởi nguồn cho định lý Brooks, liên quan đến việc phân tích sự liên hệ giữa nhân sự và thời gian (Man-month) và chỉ ra những trường hợp nào thì việc tăng người mới hiệu quả và cũng giải thích tại sao không hiệu quả trong những trường hợp khác. Chương 16 bàn về khó khăn khi triển khai cũng đưa ra nhiều góc nhìn và quan điểm khiến cho việc phát triển phần mềm sẽ luôn gặp khó khăn bởi có nhiều vấn đề là không thể thay đổi hay có giải pháp tối ưu để giải quyết.
Ngoài hai chương này ra, thì các chương khác bàn về documentation, manual cũng rất hay. Có hai khái niệm khác được đề cập và đến nay thấy hữu ích là “Conceptual Integrity” (yêu cầu cho thiết kế hệ thống) và “Second-System Effect” (các bạn startup sẽ thấy chương này hữu dụng vì nó chỉ ra hiệu ứng second-system, khiến cho việc bạn xây dựng những hệ thống quá phức tạp, ảnh hưởng đến thời gian release dự án bởi vì bạn…quá giỏi giang trước đó – thành công của First system).
Bên dưới là nội dung tóm lượt của Chapter 2 (The Mythical Man-Month) mình copy ra đây để các bạn lấy ý tưởng.
2. The Mythical Man-Month
2.1 More programming projects have gone awry for lack of calendar time than for all other causes combined.
2.2 Good cooking takes time; some tasks cannot be hurried without spoiling the result.
2.3 All programmers are optimists: “All will go well.”
2.4 Because the programmer builds with pure thought-stuff, we expect few difficulties in implementation.
2.5 But our ideas themselves are faulty, so we have bugs.
2.6 Our estimating techniques, built around cost-accounting, confuse effort and progress. The man-month is a fallacious and dangerous myth, for it implies that men and months are interchangeable.
2.7 Partitioning a task among multiple people occasions extra communication effort-training and intercommunication.
2.8 My rule of thumb is 1/3 of the schedule for design, 1/6 for coding, 1/4 for component testing, and 1/4 for system testing.
2.9 As a discipline, we lack estimating data.
2.10 Because we are uncertain about our scheduling estimates, we often lack the courage to defend them stubbornly against management and customer pressure.
2.11 Brooks’s Law: Adding manpower to a late software project makes it later.
2.12 Adding people to a software project increases the total effort necessary in three ways: the work and disruption of repartitioning itself, training the new people, and added intercommunication.
Sách có thể mua trên Amazon. Chúc mọi người một tuần vui vẻ.
Có nhu cầu guessbox thì pm mình nhé