Kỹ nghệ phần mềm: Đã chết?

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

Tôi đã hoàn toàn rối trí khi đọc được bài viết mới IEEE này của tác giả Tom DeMarco (pdf). Hãy xem liệu bạn có thể giải thích lý do tại sao.

Cuốn sách trước đây của tôi là, Controlling Software Projects: Management, Measurement, and Estimates [1986] (Kiểm Soát Các Dự Án Phần Mềm: Quản Lý, Đo Lường, và Ước Lượng), đã đóng một vai trò quan trọng trong cách hướng dẫn nhiều kỹ sư phần mềm mới vào nghề có thể tính toán khối lượng công việc và lên kế hoạch cho các dự án của họ. Trong tâm trạng suy nghĩ của mình, tôi đang tự hỏi, liệu lời khuyên từ cuốn sách đó thì có đúng thời điểm hay không, liệu nó vẫn còn thích hợp, và liệu tôi vẫn còn tin rằng những phép đo lường đó là bắt buộc cho bất kỳ nỗ lực phát triển phần mềm thành công nào? Câu trả lời của tôi là không, không, và không.

Tôi dần dần đi đến một kết luận rằng kỹ nghệ phần mềm là một ý tưởng của ai đó mà theo thời gian đã đến và đã đi.

Phát triển phần mềm luôn là một cái gì đó cần phải thí nghiệm. Thực ra việc xây dựng phần mềm thì không cần phải thí nghiệm, nhưng các khái niệm của nó thì cần. Và đây chính là nơi mà chúng ta nên tập trung vào đó.

Liệu có phải kỹ nghệ phần mềm đã chết?Liệu có phải kỹ nghệ phần mềm đã chết?


Nếu đầu của bạn vừa mới nổ tung thì bạn cũng đừng sợ hãi. Đầu của tôi cũng vậy. Điều duy nhất để giảm bớt chứng đau nửa đầu của bạn lúc này do đọc đoạn tóm tắt ở trên, là tôi khuyên bạn nên đọc qua toàn bộ hai trang của bài viết ở định dạng pdf đó.

Tom DeMarco là một trong những tác giả được kính trọng nhất trong lĩnh vực phát triển phần mềm, ông là đồng tác giả của cuốn sách sáng chói và hạt giống là Peopleware và cũng là tác giả của nhiều cuốn sách “gần kinh điển” khác về quản lý dự án phần mềm như là Waltzing With Bears (Khiêu Vũ Cùng Bầy Gấu). Đối với một người mà có kinh nghiệm và tầm ảnh hưởng như Tom thì những phát biểu của ông cũng đồng nghĩa với việc chúng ta có thể hiểu rằng Kỹ Nghệ Phần Mềm đã Chết

Đó thực sự là một chuyện lớn. Và là một điều đáng kinh hãi.

Nhưng dù sao, thì đó cũng là một sự giải thoát. Cứ như thể là tôi vừa gỡ bỏ được một sức ép đè nặng trên đôi vai của mình. Tôi có thể công khai thừa nhận về điều mà mình đã dần nhận ra trong khoảng 5 đến 10 năm gần đây trong nghề nghiệp của mình với tư cách là một nhà phát triển phần mềm: cái mà chúng ta làm là sự lành nghề, không phải là kỹ nghệ. Và tôi có thể nói về điều này với một niềm tự hào, không cảm thấy hổ thẹn, và không một chút mảy may nghi ngờ nào cả.

Tôi nghĩ rằng Joel Spolsky, đối tác kinh doanh của tôi, gần đây cũng đã có một phát biểu tương tự. Anh đã viết về nó trong bài viết Liệu Có Thể Khó Khăn Ra Sao?: Con Đường Chưa Được Chứng Minh:

Tôi luôn giữ những quan niệm tốt về phát triển phần mềm một cách sâu sắc, về làm thế nào để phát triển phần mềm, nhưng tôi hầu như chỉ giữ chúng cho riêng mình. Điều đó hóa ra lại là một điều tốt, bởi vì đối với những tổ chức đã hình thành, gần như tất cả những nguyên tắc đó đã bị bỏ qua.

Tất cả điều này có nghĩa là gì, tôi vẫn đang cố gắng để nhận ra. Bản thân tôi đã bỏ đi 7 nguyên tắc mà mình vẫn giữ trong một thời gian dài về nghiệp vụ và kỹ nghệ phần mềm, và không thấy điều gì tồi tệ xảy ra. Liệu tôi có quá cẩn thận trong quá khứ? Có lẽ tôi nên liều lĩnh một chút bởi vì đây chỉ là những dự án phụ chứ không phải là những dự án chính của mình. Những trải nghiệm này chắc chắn là một sự nhắc nhở hữu ích rằng không cần quá thận trọng khi bạn xây dựng một cái gì đó hoàn toàn mới mẻ và không biết nó sẽ dẫn bạn đi đến đâu.

Vâng, tôi có thể bổ sung thêm rất nhiều lý do để bảo vệ kỹ nghệ phần mềm ở đây về những đặc thù của dự án phần mềm mà bạn đang làm như: loại dự án (nhiệm vụ quan trọng, dĩ nhiên), kích cỡ của dự án (độ lớn kiểu như Google, hoàn toàn tự nhiên), số lượng người sử dụng (hàng triệu người dùng mỗi ngày, hiển nhiên), và rất nhiều yếu tố khác.

Nhưng tôi sẽ không làm điều đó.

Điều mà tác giả DeMarco dường như muốn nói rằng – và, ít ra, thì cũng là điều mà tôi dứt khoát muốn nói – là việc kiểm soát các dự án phát triển phần mềm thì cuối cùng là chuyện viển vông. Nếu bạn muốn làm cho dự án của mình tiến lên phía trước, chỉ một cách chắc chắn để làm đó là trau dồi một cách sâu sắc ý thức của sự lành nghề và chuyên nghiệp trong việc phát triển phần mềm.

Những chàng trai và cô gái mà mỗi ngày đều hăng hái mài dũa các kỹ năng nghề nghiệp của họ, những người mà đam mê việc xây dựng các thứ là quan trọng đối với họ – thì đây là những con người và dự án mà cuối cùng sẽ gặt hái thành công.

Mọi thứ khác chỉ là chuyện tầm phào.

Lời bàn của Vinacode:

Thực ra sau khi đọc bài này, mình đang thắc mắc về những nguyên tắc trong kỹ nghệ phát triển phần mềm mà Joel và Jeff đang nói tới là những nguyên tắc nào? Những quy trình quản lý chất lượng như ISO 27000 và CMMI thì mình thấy đa phần là hình thức, chủ yếu là điền thêm mấy cái biểu mẫu giấy tờ. Như trong bài viết “Nhìn lại ngành phát triển phần mềm của Việt Nam” thì Giáo sư Nguyên Văn Hiền cũng đã nói về quy trình CMMI-5 mà các công ty phần mềm Việt đang tự hào khoe khoang thì chỉ là dối trá:

Gia công đang làm nhân lực Việt Nam xem rẻ giá trị chính mình để luyện giọng tiếng anh nói ‘bập bẹ’ và ghép mình vào những ‘quy trình kiểu CMMI – 5 dối trá’ làm tê liệt đi khả năng chủ động sáng tạo công nghệ mà chính điều này mới là giá trị thực.”

Thế còn những mô hình phát triển phần mềm như: Thác nước (Waterfall), Xoắn ốc (Spiral), Agile… thì sao nhỉ?

Ở công ty bạn đang làm thì họ áp dụng mô hình phát triển phần mềm nào? Và có áp dụng quy trình quản lý chất lượng nào không?

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

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 Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s