Làm theo chỉ dẫn trên thùng sơn

Bài viết được dịch từ blog Coding Horror

Tôi đã nói chuyện qua điện thoại với một người bạn của tôi một vài ngày trước đây, và anh ta đã mô tả một dự án mà anh vừa tiếp nhận gần đây. Nó là sản phẩm của nửa tá lập trình viên khác nhau, mỗi người xây dựng một phần trong cái dự án đó theo một cách hoàn toàn khác nhau, mà có rất ít hoặc không có sự trao đổi nào giữa bất kỳ ai trong số họ cả. Code của dự án đó đã nói lên một câu chuyện rằng: bạn sẽ thấy đó là một đội ngũ nghiệp dư; chả tuân theo một khuôn mẫu nào cả; một đám ô hợp.

Lập trình viên cần tuân theo những chỉ dẫn để dự án có thể thành công.Lập trình viên cần tuân theo những chỉ dẫn để dự án có thể thành công.


Thật là đáng hổ thẹn vì các nhà phát triển phần mềm không nhận được bất kỳ dạng chỉ dẫn hoặc huấn luyện cơ bản nào mà họ cần để có thể dễ dàng tránh được những thảm họa đó. Đó là lý do tại sao mà những châm biếm về các đoạn code ngớ ngẩn trên trang The Daily WTF thì đáng thất vọng hơn là buồn cười đối với tôi – chúng ta nhìn thấy những lỗi thuộc dạng kinh điển cứ lặp đi lặp lại từ ngày này sang ngày khác. Đó là chuẩn mực! Tác giả Steve McConnell, trong cuốn sách Rapid Development, đã phân tích tỉ mỉ như sau:

Khi tôi còn là một học sinh lớp 7, giáo viên mỹ thuật của tôi đã nhấn mạnh rằng bất kỳ học sinh nào mà làm theo những chỉ dẫn của ông thì sẽ ít ra cũng nhận được một điểm B; mà không cần phải có tài năng về nghệ thuật. Ông ta là một cựu sĩ quan thủy quân lục chiến nặng 220 pound, và luôn luôn nhắc nhở chúng tôi lời khuyên đó ít nhất mỗi lần một tuần, nhưng tôi đã rất ngạc nhiên vì có rất nhiều học sinh lớp 7 chỉ nặng 98 pound đã không tuân theo những chỉ dẫn của ông giáo và đã không nhận được ít nhất là một điểm B. Đánh giá từ công việc của họ, không phải vì họ đã dày vò bởi những vinh quang hoặc mâu thuẫn trong tầm nhìn nghệ thuật. Họ chỉ cảm thấy giống như là đang làm một điều gì đó khác biệt.

Khi là người lớn, tôi thường nhìn thấy các dự án phần mềm bị thất bại đơn thuần bởi vì các lập trình viên và những người quản lý đã làm việc trên chúng mà không hề tuân theo những chỉ dẫn – đó là các nền tảng của việc phát triển phần mềm đã được mô tả trong chương này. Bạn có thể phát triển phần mềm mà không cần phải tinh thông những nền tảng đó – đôi khi thậm chí nó còn cho kết quả nhanh. Nhưng xét từ kết quả của hầu hết mọi người, nếu bạn không tinh thông những nền tảng đó trước tiên, thì bạn sẽ thiếu hụt khả năng kiểm soát cần thiết trên dự án đó để có thể phát triển một cách nhanh chóng. Bạn sẽ không thậm chí biết được liệu mình có đang thành công hay thất bại mãi cho tận đến cuối dự án đó.

Thực vậy, việc đơn giản biết những nền tảng đó là một sự khác nhau chính giữa những lập trình viên nghiệp dư và những lập trình viên được gọi là chuyên nghiệp. Và nó thậm chí không đến nỗi phức tạp. Steve đã so sánh nó với việc tuân theo các chỉ dẫn trên thùng sơn:

Giả sử rằng bạn đang bắt đầu một dự án sơn, và bạn đọc những chỉ dẫn được ghi phía trên thùng sơn như sau:

  1. Chuẩn bị bề mặt: cạo bỏ lớp sơn cũ ra khỏi bề mặt gỗ hoặc kim loại; đánh nhẵn bề mặt; loại bỏ những phần còn lại bằng một loại dung môi.
  2. Sơn lót bề mặt bằng một loại sơn lót thích hợp.
  3. Sau khi bề mặt đó đã hoàn toàn khô ráo (ít nhất là sau 6 giờ), hãy phủ một lớp sơn mỏng. Nhiệt độ không khí phải ở giữa 55 và 80 độ F. Hãy để nó khô trong 2 giờ.
  4. Sau đó sơn tiếp một lớp sơn mỏng và để cho nó khô trong 24 giờ trước khi đưa vào sử dụng.

Nhà cho chó Fido.Điều gì xảy ra nếu bạn không tuân theo những chỉ dẫn đó? Nếu bạn đang sơn một cái chuồng chó vào một đêm Thứ Ba nóng bức sau khi đi làm về, bạn có thể chỉ có 2 giờ để làm công việc, và chú chó cưng Fido cần một nơi để ngủ vào tối hôm đó. Vì vậy bạn không có thời gian để tuân theo những chỉ dẫn. Bạn quyết định rằng bạn có thể bỏ các bước từ 1 đến 3 và phủ một lớp sơn dày chứ không phải là một lớp sơn mỏng như trong bước 4. Nếu thời tiết tốt và ngôi nhà của chú chó Fido được làm bằng gỗ và không đến nỗi quá bẩn, thì hướng tiếp cận của bạn sẽ có thể hoạt động tốt.

Qua một ít tháng sau đó thì lớp sơn có thể bị nứt nẻ bởi việc bạn đã sơn quá dày hoặc nó có thể bị bong ra khỏi bề mặt kim loại ở chỗ những chiếc đinh nơi mà bạn đã không sơn lót chúng, và bạn có thể phải sơn lại nó vào năm tới, nhưng đó thực sự cũng không phải là vấn đề gì to tát lắm.

Boeing 747Điều gì sẽ xảy ra, nếu thay vì việc bạn sơn một cái chuồng chó, thì bây giờ bạn đang sơn một chiếc máy bay Boeing 747? Trong trường hợp đó, bạn phải tuân theo những chỉ dẫn một cách nghiêm ngặt. Nếu bạn không gỡ bỏ lớp sơn cũ, thì bạn sẽ phải gánh thêm sự tổn thất về nhiên liệu rất lớn và cả những rủi ro trong an toàn bay: một lớp sơn phủ máy bay 747 có trọng lượng khoảng từ 400 đến 800 pound. Nếu bạn không chuẩn bị bề mặt một cách chu đáo, thì gió và mưa sẽ tấn công lớp sơn đó với tốc độ 600 dặm/giờ sẽ làm hư hỏng lớp sơn nhanh hơn nhiều so với mưa và gió sẽ tạt vào ngôi nhà của chú chó Fido.

Ngôi nhàĐiều gì xảy ra nếu bạn đang sơn một cái gì đó có độ lớn giữa một cái chuồng chó và một cái máy bay 747, ví dụ một ngôi nhà? Trong trường hợp đó, hình phạt dành cho việc làm một công việc tồi sẽ ít khắc nghiệt hơn với một chiếc 747, nhưng mà khắc nghiệt hơn nhiều so với một cái chuồng chó. Bạn không muốn phải sơn lại toàn bộ ngôi nhà của mình cứ mỗi 2 năm một lần, và vì vậy bạn phải đạt được những kết quả có một chuẩn cao hơn là so với bạn làm với một cái chuồng chó.

Hầu hết các dự án phần mềm thường giải quyết các vấn đề có kích cỡ dự án kiểu như ngôi nhà hoặc lớn hơn, và những dự án đó là chủ đề chính của cuốn sách này. Đối với những dự án đó thì các nền tảng phát triển cơ bản giúp tiết kiệm thời gian. Và nó không hoàn toàn cứng nhắc như là các bước ghi trên thùng sơn, nếu bạn có đủ hiểu biết về chúng, thì chúng cũng cung cấp tất cả sự mềm dẻo mà bất kỳ ai cần đến. Bạn cứ việc lờ đi những chỉ dẫn này nếu bạn muốn, nhưng bạn sẽ chắc chắn nhận lấy hậu quả.

Tôi xin lỗi bạn vì đã làm bạn bị mắc kẹt với một cái chuồng chó, Josh. Ở đây hy vọng rằng chúng ta có thể dạy những lập trình viên thế hệ tiếp theo, những người sẽ có được sự may mắn hơn.

Các bài viết liên quan:

Về tác giả bài viết:

Jeff_atwood_coding_horrorJeff Atwood là một chuyên gia công nghệ tại Mỹ, hiện đang sinh sống và làm việc tại Berkeley, CA. Anh là một kỹ sư phần mềm chuyên về công nghệ Microsoft .NET, và là một blogger nổi tiếng trong cộng đồng công nghệ với blog Coding Horror, anh là người sáng lập và kiêm Giám đốc điều hành (CEO) của trang web hỏi đáp uy tín Stack Overflow và cũng là đồng sáng lập của Stack ExchangeDiscourse.

Advertisements

6 comments on “Làm theo chỉ dẫn trên thùng sơn

  1. Thanks bác, lại một bài viết hay nữa để anh em mài gươm.

    Và bác cho em hỏi là, ở bài viết của bác nói về ” Nền tàng phát triển cơ bản”, em cũng là 1 coder nghiệp dư mới học nghề, nên bác có thể dẫn link(tiếng việt thì tuyệt với quá) hoặc nói rõ cho em về nền tảng đó được ko ạ?

    Bởi vì phần lớn những gì em học được ở trường lớp, họ chỉ dạy làm sao để mày có thể code, làm sao để sử dụng công cụ chứ họ ko dạy mày phải làm thế nào đẻ có thể code và sử dụng hiệu quả nhất!

    Cám ơn bác!

  2. Nếu vinacode có 1 bài viết nói về ” Nền tàng phát triển cơ bản” thì tốt quá, có thể là tóm tắt những ý chính trong cuốn Rapid Development: Taming Wild Software Schedule cũng được
    (Mà hay có bài viết đấy rồi nhưng em chưa tìm thấy nhỉ 😀 )

    • thanhmssl10, thực ra cuốn sách Rapid Development anh cũng chưa có thời gian đọc nữa (nhưng sẽ đọc trong thời gian tới), bài viết trên là của Jeff Atwood (người sáng lập ra StackOverflow.com và nền tảng forum mới là Discourse.org)

      Phát triển phần mềm là một lĩnh vực rất phức tạp, và tác giả McConnell đã trình bày vấn đề này trong một cuốn sách có đến 680 trang, bởi vậy không thể tóm tắt vào trong một comment hoặc một bài blog được.

      P.S. Steven C. McConnell là một tác giả của nhiều cuốn sách về kỹ nghệ phần mềm bao gồm Code Complete, Rapid Development, và Software Estimation. Vào năm 1998, McConnell đã được vinh danh (bởi tạp chí Software Development Magazine) là một trong 3 người có tầm ảnh hưởng nhất trong lĩnh vực phát triển phần mềm, cùng với Bill Gates và Linus Torvalds.

      • Hehe em cũng đánh dấu nhiều cuốn lắm rồi mà chưa có thời gian đọc vì trình độ tiếng anh chưa ổn lắm nên đọc rất chậm, mà thời gian khá hạn hẹp nên muốn hiểu sơ qua về cuốn đó trước 😀

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s