Tản mạn, The Mythical Man-month

Tản mạn về Man-month Phần 1: Lầy lội

“No one thing seems to cause the difficulty-any particular paw can be pulled away. But the accumulation of simultaneous and interacting factors brings slower and slower motion.”

Coffee Time

Vào một ngày cuối tuần đẹp trời, bạn xách con xe cà tàng đi dạo đường phố để tận hưởng bầu không khí.. oi bức và bụi bặm đặc trưng của Sài Gòn. Nhìn ngó nhìn nghiêng, vô tình bạn thấy được một quán cafe tuyệt đẹp, không cưỡng lại được, liền tấp vào làm ly cafe-đen-đá và nhìn trai, gái qua lại… Cứ như vậy, tuần nào bạn cũng xách con xe ra và đi. Đến 1 hôm, thấy buồn quá, vì ngắm các anh trai xinh, chị gái đẹp mà không có ai bình luận cùng, bèn nhắn tin cho nhóm bạn thân, rủ cuối tuần sau đi cho vui. Bạn chỉ định địa điểm và thời gian gặp mặt rồi đi chung. 8h bạn ra chỗ hẹn mà chưa thấy bóng nào, lắt nhắt từng chút một, đến 11h tụi nó cuối cùng cũng tập hợp đầy đủ, và dắt chúng nó đi ăn trưa.

Đó là cách nói ẩn dụ của Brooks để minh họa cho việc phát triển các hệ thống phần mềm to bự trong thời của ông. Càng to, càng đông thì càng chậm chạp, tốn nhiều chi phí để phát triển và có thể chìm bất cứ lúc nào.

Phân loại các hệ thống

Có thể chia những hệ thống, chương trình phần mềm thành 4 loại, xét từ đơn giản đến phức tạp: Program, Programming Product, Programming System, Programming System Product.

MM_Chapter1.1

Ở đầu kia của thế giới, có 1 tên developer vô danh (chứ không phải vô công) rỗi nghề, rảnh rổi sinh nông nổi thì nghĩ ra các ý tưởng hay hay, rồi từ đó sinh ra code. Lần này hắn viết 1 cái tool để tóm tắt nội dung các trang báo mạng để đọc cho nhanh. Vừa viết vừa debug, fix để nó work trên 1 site trước, 1 hồi thì cái tool chạy ngon lành, đúng mục đích hắn muốn, hắn thử 1 2 site khác, fix vài con bug phát sinh và tuyên bố tool của tao ngon nhất hiện nay, liền publish lên open-source community cho giang hồ xài, và chờ đợi ở hắn là những comment mang tính tích cực và những lượt share khủng.

Sau 1 đêm mất ngủ (dù đã cố gắng ngủ nhưng đầu cứ lâng lâng nên không tài nào nhắm mắt được), 4h sáng mở mắt ra, lên xem tình hình. Có hàng trăm comment và dislike.. What đờ hợi… Chuyện gì đã xảy ra, đầu má, cái tool tao viết 1 ngày mới xong mà tụi bay dám lăng mạ.. Chửi rủa 1 hồi.. hắn bắt đầu bình tĩnh và đọc xem tụi nó nói gì. “Tool xài thế nào?”, “Sao không work trên trang xxxnews.com”, “bug nhiều vkl mà cũng mang publish”, “về học lại cơ sở lập trình đê”, “đọc code méo hiểu mịa gì”… Hắn tối sầm, say sẫm mặt mày và éo hiểu gì… Why why… Tuy nhiên, hắn không phải thằng khờ, ít ra là khi gặp comment chửi rủa, hắn không điên máu chửi lại mà bình tĩnh xem xét mọi vấn đề (trình EQ cao). Bắt đầu với việc comment mã nguồn lại cho đàng hoàng, javadoc hẳn hoi.. đặt tên class, tên biến đẹp đẹp tí (vì lúc đầu viết vội, biến với chả class, ai quan tâm). Sau đó bắt đầu fix mấy page mà mấy thằng kia report, check similar coi root cause ở đâu để fix luôn thể. 3 ngày sau, thấy mọi thứ đã OK nên re-publish lại lần nữa. Hắn đi ngủ vì gà gần gáy rồi..

Lần này hắn ngủ ngon vì méo trông đợi gì nữa, hắn quá mệt mỏi… Trưa sau thức dậy, mở mấy trang chứng khoán, nhà đất ra coi giá rau muống lên xuống thế nào, lúc đó mắt còn lờ mờ, tự dưng hắn thấy tên hắn xuất hiện đầy mặt báo. Éo tin nổi… Các báo đều đưa tin của hắn, nói là giá chứng khoán của họ tụt 50%, doanh thu giảm 99% chỉ sau 1 đêm vì có 1 cái tool nào đó, leak bài của họ về và méo ai thèm quan tâm đến trang báo gốc nữa.

Còn muốn chém tí nữa, mà thôi quay về với chủ đề gốc. Chương trình ban đầu hắn viết được gọi là 1 Program. Nó chạy cục bộ và chỉ phục vụ 1 số mục đích nhất định. Sau khi được publish ra, Program trở thành Programming Product, được mọi người sử dụng với đầy đủ document hướng dẫn sử dụng và cover được càng nhiều yêu cầu và dữ liệu đầu vào càng tốt. Để 1 Program trở thành Programming Product, chi phí sẽ trội lên gấp 3 lần.

Quay trở lại câu chuyện (vì ắt sẽ có nhiều người thắc mắc, tiếp theo sẽ là gì). Hắn phê phê suốt mấy ngày liền, ăn ngủ, thậm chí đi vệ sinh hoặc qwerty cũng đều online để check comment và nhìn những lượt like nhảy nhảy. Theo thống kê, lưu lượng mạng internet toàn cầu trong khoảng thời gian này tăng đột biến, gây tắc nghẽn đến các hệ thống khác như Facebook, Google… Hắn check G-mail hàng phút, toàn là mail khen ngợi, tán thưởng, có cả thư tỏ tình, đủ mọi thể loại luôn.

Bất chợt hắn thấy 1 email với tít “Đề nghị hợp tác làm ăn” của ông chủ Facebook Mắt-Săm-Bớc. Ổng nói tool của hắn khủng quá, sợ chỉ sau ngày mai thôi, thế giới sẽ xuất hiện tỉ tỉ phú đầu tiên, nên đề nghị mua lại cái tool của hắn với giá $50. Hắn thấy cũng là 1 món lời, lại được ông chủ của mạng xã hội lớn nhất thế giới này quan tâm, nên sau 1 giờ trả giá, hắn nâng lên được giá $51. Bớc thì hí hửng, mừng vkl, sau đó chính tay anh vô để tích hợp cái tool vô giá này vào hệ thống Facebook của ảnh. Sau 3 ngày hì hục đêm lẫn ngày, cuối cùng ổng cũng tích hợp thành công nó vào các module đang chạy sẵn trên Facebook như New Feeds, Notification, Security,… Ảnh hài lòng vkl, trở ra làm tô phở kế bên nhà, mở điện thoại của mình lên test thử và thấy cổ phiếu đã sụp 30%, lượng người dùng cũng giảm gần như là toàn bộ. Hàng trăm triệu email gửi về với cùng 1 nội dung, Facebook 3 ngày nay bị sập liên tục, nhà sáng lập thì biệt tăm biệt tích, chắc ôm tiền và cổ phiếu bỏ trốn rồi. Cũng không trách được anh Bớc, vì ngay cả chính người kể chuyện cũng ngạc nhiên vì kết cục này.. Thật đáng buồn.

Điều đáng nói ở đây là ông ta đã mất thêm 3 ngày để tích hợp 1 Program vào trong hệ thống với các module đang chạy sẵn. Sau khi tích hợp xong, Program sẽ trở thành Programming System, là 1 phần của hệ thống, đưa ra các well-defined interface, đáp ứng đầy đủ các yêu cầu về mặt giao tiếp in-out qua lại giữa các module. Việc đó tốn gấp 3 lần so với việc develop 1 Program đơn giản.

Vị chi, để có được 1 cái gọi là Programming Product System – một sản phẩm với độ hoàn thiện tối đa, cái giá phải trả là gấp 9 lần.

Phần 1 kết thúc ở đây với hi vọng đã giúp cho các bạn hiểu được 2 điều đơn giản: càng to càng chậm và việc phân loại các kiểu program sẽ giúp cho mình có thể aware đến khối lượng công việc chính xác hơn một cách tương đối.

edwardthienhoang.

Advertisements

1 thought on “Tản mạn về Man-month Phần 1: Lầy lội”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s