Phát triển phần mềm: Đó là một tôn giáo

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

Đó là ngày Thứ Hai và Steve Yegge vẫn ghét phương pháp phát triển phần mềm Agile. Ông ta ghét nó khoảng bao nhiêu? Trị giá khoảng 11.000 từ. Dưới đây là những nội dung chính trong bài viết mới nhất của Steve:

  • Steve không có ý định ủng hộ quy trình phát triển phần mềm của Google như là Một Phương Pháp Đích Thực về phát triển phần mềm. Nó chỉ là một ví dụ về một giải pháp có thể thay thế cho phương pháp Agile.
  • Phương pháp phát triển phần mềm Agile hay bất kỳ phương pháp phát triển phần mềm nào khác sẽ hiệu quả nếu bạn có trong tay những kỹ sư tài năng và họ đều quyết tâm làm theo phương pháp đó.
  • Không có cách khoa học thực nghiệm để chứng minh rằng Agile là tốt hơn so với bất kỳ phương pháp phát triển phần mềm nào khác. Vì vậy, việc thúc đẩy Agile là một sự mê tín.
Phát triển phần mềm có phải là một tôn giáo?Phát triển phần mềm có phải là một tôn giáo?


Việc sử dụng lặp đi lặp lại từ “mê tín” là một điểm quan trọng. Trong bài viết trước đây của mình, ông cũng đã gọi Agile là một tôn giáo:

Một số các chuyên gia tư vấn, sau khi vừa mất đi những khách hàng chính của họ, gặp mặt nhau tại một quán bar, và một trong số họ (tên là L. Ron Hubbard) nói rằng: “Việc so sánh từng dòng code là rất khập khiễng. Anh biết nơi nào mà tiền thật sự sinh ra không? Anh phải tạo ra một tôn giáo của riêng mình.” Và đó là cách mà cả Extreme Programming và Scientology đã được sinh ra.

Steve nói về “tôn giáo” như thể nó là một điều xấu vậy.

Nhưng phát triển phần mềm là, và luôn luôn là, một tôn giáo. Chúng ta tập hợp lại với nhau thành các nhóm người có cùng niềm tin, với rất ít cơ sở để chứng minh cho bất kỳ niềm tin nào trong số đó. Java so với .NET. Microsoft so với Google. Các ngôn ngữ lập trình Static so với các ngôn ngữ Dynamic. Chúng ta có thể tự lừa dối bản thân mình để tin rằng chúng ta là “các nhà khoa học máy tính”, nhưng lần gần đây nhất bạn sử dụng một giả thuyết và số liệu để chứng minh cho bất cứ điều gì là khi nào? Chúng ta quá bận rộn để giải quyết các vấn đề của khách hàng trong các công cụ lựa chọn, những người không có tín ngưỡng!

Vấn đề văn hóa cơ bản với mê tín dị đoan phát sinh khi người ta không biết làm thế nào để phân biệt giữa các nguồn dữ liệu đáng tin cậy và không đáng tin cậy, do đó, họ đối xử với những thứ phi khoa học cũng như là khoa học vậy. Nếu họ không nhận ra hoặc thừa nhận rằng mình đang bị mê tín dị đoan, thì họ sẽ cảm thấy không e ngại chút nào để cố gắng truyền bá niềm tin của họ tới BẠN.

Phát triển phần mềm có phải là một tôn giáo?Liệu có phải Steve Yegge đã chứng minh rằng phương pháp phát triển phần mềm của Google là tốt hơn so với phương pháp Agile? Không, nhưng ông tin tưởng một cách mạnh mẽ nó là như vậy bằng cả trái tim mình. Bạn thậm chí có thể nói ông ta có chút tôn giáo về nó. Và gì nữa? Không có gì sai trái với một tôn giáo thuyết giảng kỹ nghệ tốt cả. Nếu bạn là một tín đồ thực sự trong nhà thờ của phương pháp Google, bạn sẽ trở thành một nhà phát triển tốt hơn. Khi Steve truyền bá những ưu điểm trong phương pháp phát triển phần mềm của Google rất hùng hồn, nó giúp cho các lập trình viên khác cảm thấy hào hứng về những gì họ đang làm và làm cho họ cũng trở thành những nhà phát triển tốt hơn. Trước khi bạn biết điều đó, toàn bộ nhóm đã bị ép ra nước bởi vì tất cả mọi thứ đang đến với nhau trong một kế hoạch hoàn toàn kinh hãi mà tất cả họ đều tin tưởng– cho dù đó là Agile, Google, Scrum, hoặc bất cứ phương pháp nào khác.

Để các lập trình viên có thể làm việc hiệu quả, họ phải tin vào những gì mình đang làm. Cho dù niềm tin đó bị khoa học và thực nghiệm chứng minh là hoàn toàn không liên quan. Đó chính là Peopleware 101. Steve đang cố gắng chứng minh rằng không có phương pháp nào là tối ưu cả, và ông đang tự làm suy yếu quan điểm của chính mình. Tất cả đó đều là tôn giáo, như Jef Raskin đã chỉ ra:

Các hệ thống máy tính biểu lộ tất cả các hành vi thích hợp nhất để tạo ra phản ứng mê tín dị đoan. Bạn sẽ thử một cái gì đó, nó sẽ không hoạt động, vì vậy bạn thử nó một lần nữa – chính xác cùng một cách – và lần này nó hoạt động, hoặc không. Đó là những kết quả khá ngẫu nhiên. Hiệu quả của nhiều practice lập trình và quản lý do đó là không thể đo lường được. Ví dụ, hầu hết các nguyên tắc của “extreme programming” có vẻ hợp lý đối với tôi, và tôi đã sử dụng nhiều trong số chúng từ lâu trước khi chúng có những cái tên ngớ ngẩn hiện nay. Tuy nhiên, những người ban hành ý tưởng, cũng là người tạo ra mô hình. Hầu hết các kết quả báo cáo thậm chí đều không rõ ràng. Chúng ta hiếm khi hiểu được, trong bất kỳ chi tiết nào, về các quá trình diễn ra đằng sau các tác vụ mà chúng ta làm với máy tính. Chúng ta sử dụng nhiều megabyte code được viết bởi những người khác, code đó không đầy đủ tài liệu và không được kiểm thử một cách tương xứng, đang được sử dụng theo nhiều cách và những kết hợp không biết trước bởi các tác giả của nó.

Tôn giáo trong phương pháp phát triển phần mềm, và tự bản thân nó là không nguy hiểm. Luôn luôn có những rủi ro của cuộc đàn áp tôn giáo, nhưng người ta chỉ thực sự nguy hiểm khi họ là những người cuồng tín về tôn giáo nhưng lại không nhận ra mình là những người cuồng tín tôn giáo. Tôi không thích phải dùng đến cách gọi tên này, nhưng tôi chỉ không thể nhìn thấy làm thế nào mà Steve có thể nói khác đi một cách lém lỉnh như vậy:

Nhưng thay vì liệt kê tất cả các nhóm và công ty không sử dụng Agile như trường hợp đặc biệt, chúng ta hãy đi thẳng đến các quy tắc: Hầu hết các nhà phát triển phần mềm vĩ đại nhất trên thế giới không sử dụng Agile. Họ chỉ là làm việc chăm chỉ, có phương pháp gọn nhẹ (stay lightweight) và họ tạo ra những sản phẩm tuyệt vời. Thậm chí hầu hết các nhà phát triển vẫn không có ý tưởng về Agile là gì. Bạn hãy suy nghĩ về điều đó!

  1. Chính xác là “phương pháp gọn nhẹ (staying lightweight)” khác với Agile như thế nào? Không phải Agile là biểu tượng của phương pháp gọn nhẹ (lightweight) hay sao? Steve có thể không đồng ý với những giáo lý cụ thể của nhà thờ, (lập trình cặp, v.v…), và điều đó là tốt. Không ai cầu nguyện chính xác theo cùng một cách, và không phải ai cũng là một người cuồng tín. Nhưng bạn luôn có một tập các niềm tin cốt lõi để chia sẻ. Và phương pháp phát triển gọn nhẹ (lightweight) rõ ràng là đức tin cốt lõi của Agile.
  2. Đúng là hầu hết các nhà phát triển không sử dụng phát triển phần mềm Agile. Nhưng đó không phải là do sự lựa chọn. Họ đã không được phép đưa ra sự lựa chọn. Họ thường bị mắc kẹt trong các tổ chức mà không cho phép họ tự do để làm theo “phương pháp gọn nhẹ (staying lightweight)”. Họ như những con chim bồ câu bị mắc kẹt trong một nhà máy sản xuất xúc xích vậy.
  3. Steve nói về “phương pháp gọn nhẹ (staying lightweight)” như thể đó là điều đơn giản nhất trên thế giới này, như đó là một trạng thái tự nhiên của ân sủng mà các nhà phát triển và các tổ chức được sinh ra. Việc nói với các nhà phát triển luôn tuân theo phương pháp gọn nhẹ (stay lightweight) thì cũng giống như nói với một người bị bệnh trầm cảm rằng hãy vui vẻ và yêu đời lên.

Tôi không chắc về lý do tại sao Steve lại không thoải mái với ý tưởng rằng phát triển phần mềm như là một tôn giáo, như một tập hợp của những đức tin được chia sẻ với rất ít “cơ sở [trong] thực nghiệm khoa học hay luận suy tinh khiết.” Bởi vì ông ấy chắc chắn là một trong những nhà truyền giáo tốt nhất mà tôi đã từng đọc.

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.

Gửi phản hồ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