Tất cả lập trình đều là lập trình web

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

Lời bàn của Vinacode:

Bài viết này của tác giả Jeff Atwood (là người lập ra trang web hỏi đáp nổi tiếng StackOverflow.com) tranh luận về sự thống trị của các ứng dụng web trong tương lai. Bài viết đã khá lâu (trước khi có thêm sự phổ biến của ứng dụng cho di động như hiện nay), nhưng vẫn có nhiều điểm đúng với hiện tại và sẽ cung cấp cho bạn một vài góc nhìn thú vị.

Trong bài viết có một số thuật ngữ chuyên ngành mà mình không biết nên dịch sang tiếng Việt như thế nào, đành để vậy (mong các bạn thông cảm). Chắc hôm nào ghé nhà sách kiếm một cuốn để xem các “đại ca” Phạm Hữu Khang hoặc Hoàng Đức Hải… dịch những từ này thế nào vậy! :)

Xu hướng phát triển ứng dụng trên web đang ngày càng trở nên phổ biến.Liệu có phải những lập trình viên chuyên phát triển web thường có đẳng cấp thấp hơn các lập trình viên viết ứng dụng trên Desktop?


Michael Braude đã công khai chỉ trích về sự phổ biến của lập trình web:

Lý do mà hầu hết mọi người đều muốn lập trình web là bởi vì họ không đủ thông minh để làm bất cứ việc gì khác. Họ không hiểu về trình biên dịch, concurrency, 3D hay lớp kế thừa. Họ không có một manh mối gì về việc tại sao tôi lại sử dụng một interface hay một lớp abstract. Họ không hiểu về: các phương thức ảo, con trỏ, tham chiếu, bộ dọn rác, finalizers, truyền tham chiếu hay tham trị, các hàm hủy ảo trong C++, hay sự khác nhau giữa struct và class trong C#. Họ cũng không biết về các quy trình phát triển phần mềm như: Waterfall (thác nước), Spiral (xoắn ốc), Agile? Hãy quên tất cả những thứ đó. Họ cũng chưa bao giờ nhìn thấy một tài liệu phân tích yêu cầu (requirements document), họ cũng chưa bao giờ viết ra một tài liệu thiết kế (design document), họ chưa bao giờ vẽ ra được một lược đồ UML, và họ thậm chí còn chưa bao giờ nghe nói tới sequence diagram.

Nhưng họ biết làm một vài thứ: họ biết làm thế nào để ném ra một trang web ASP.NET, viết một số câu lệnh SQL (với cú pháp rất dở) để truy lục cơ sở dữ liệu, rồi đổ vào một dataset, và hiển thị kết quả lên lưới (grid control). Họ chỉ biết có bấy nhiêu đó. Và chắc chắn là trình độ cũng chẳng phát triển được gì hơn.

Xin thứ lỗi cho tôi vì việc đã xúc phạm, nhưng nói thực tôi không có một chút hứng thú nào để trở thành một ‘gã phát triển web’. Vì có hai lý do cho điều này. Thứ nhất, nó không đủ độ thách thức đối với tôi. Và thứ hai, bởi vì phần lớn các công ty Internet thì chứa đầy những kỹ sư tồi – đúng là như vậy bởi vì bạn không cần phải biết những thứ phức tạp để trở thành một tay phát triển web. Và tôi cũng đang lo xa rằng, Internet sẽ phải chịu trách nhiệm cho việc tập hợp của những thứ vớ vẩn và làm giảm giá trị trí tuệ của chúng ta. Bạn không cần phải thông minh để làm ra một trang web.

Tôi thực sự hy vọng rằng mọi người đã sai và mọi thứ không “chuyển hết sang môi trường web”. Bởi vì nếu điều đó xảy ra, một ngày nào đó hoặc là tôi sẽ phải miễn cưỡng gia nhập phong trào tẻ nhạt này, hoặc là tôi sẽ phải chuyển sang một ngành khác.”

Hãy để qua một bên, trong chốc lát, sự tranh cãi ngớ ngẩn về việc cho rằng phát triển web thì không thách thức, và rằng nó chỉ thu hút những lập trình viên kém chất lượng. Thậm chí nếu điều đó có đúng đi chăng nữa, thì nó cũng không thích hợp chút nào.

Tôi ghét việc phải nói một tin xấu tới Michael, nhưng bởi tỷ lệ phần trăm người dùng web đang tăng lên, thì có thể nói rằng các ứng dụng trên desktop đã chết. Hầu hết các ứng dụng desktop điển hình đã bị thay thế bởi các ứng dụng web trong mấy năm vừa qua. Và rất nhiều trong số chúng bị thay thế mỗi ngày, khi mà các trình duyệt web ngày càng trở nên mạnh mẽ, nhiều khả năng và sức mạnh hơn xưa.

Bạn hy vọng rằng mọi thứ không “chuyển hết sang môi trường web” ư? Tỉnh lại đi anh bạn! Điều đó đã xảy ra rồi!

Bất kỳ sinh viên của ngành lịch sử máy tính nào cũng sẽ nói với bạn rằng sự thống trị của các ứng dụng web là chính xác như cái mà nguyên tắc về sức mạnh tối thiểu đã dự đoán:

“Ngành Khoa học Máy tính đã mất 40 năm để làm cho các ngôn ngữ lập trình trở nên mạnh mẽ nhất có thể. Ngày nay chúng ta phải đánh giá cao những lý do cho việc chọn những giải pháp không phải là mạnh nhất mà là giải pháp ít sức mạnh nhất. Ngôn ngữ lập trình càng ít sức mạnh, thì bạn sẽ càng làm được nhiều thao tác dữ liệu trong ngôn ngữ đó. Nếu bạn viết nó bằng một hình thức đơn giản, thì bất kỳ ai cũng có thể viết một chương trình để phân tích kết quả từ nó. Ví dụ, một trang web cung cấp thông tin về dự báo thời tiết sử dụng RDF (một kiểu lưu giữ liệu đơn giản theo chuẩn XML) để mô tả dữ liệu của nó, thì một người dùng có thể truy lục nó như là một table, có thể tính toán trên nó, vẽ đồ thị, suy luận mọi thứ về nó trong sự kết hợp với những thông tin khác. Còn nếu theo một hướng khác là trang thông tin thời tiết này được viết bằng một Java applet tinh xảo. Trong khi điều này có thể mang lại một giao diện người dùng rất ấn tượng, nhưng nó lại không thể phân tích được chút nào cả. Những bộ máy tìm kiếm khi tìm thấy những trang web này sẽ không biết dạng dữ liệu của nó ra sao và nội dung của nó đang nói về cái gì. Chỉ có một cách duy nhất để biết cái Java applet đó đang nói về cái gì là chạy nó hiển thị trước mặt một con người bằng xương bằng thịt.”

Môi trường web là tiêu biểu cho việc làm ra những thứ đơn giản nhất mà có thể vẫn hoạt động tốt. Nếu điều đó làm bạn kinh hãi — hoặc làm bạn bối rối — thì tôi xin khiêm tốn để nói với bạn rằng bạn không có tố chất để trở thành một lập trình viên.

Có phải tất cả các ứng dụng đều nên trở thành ứng dụng web không? Dĩ nhiên là không. Sẽ vẫn tiếp tục có những trường hợp ngoại lệ quan trọng và những loại phần mềm mà không có gì để làm đối với web. Nhưng chúng chỉ là những ứng dụng thiểu số và quá đặc thù. Đó là những ứng dụng ngách quan trọng mà thôi.

Nếu bạn muốn phần mềm của mình được trải nghiệm bởi nhiều người dùng nhất có thể, thì không có cách nào tốt hơn là nên phát triển nó dưới dạng một ứng dụng web. Dạng web là cách hiệu quả nhất, lan tỏa nhất và hầu như có thể phân tán ngay lập tức. Bất kỳ người dùng nào chỉ cần một đường truyền Internet và một trình duyệt, bất kỳ họ ở đâu trên thế giới, thì với chỉ vài cú click chuột là đã có thể tương tác với phần mềm mà bạn viết ra. Người dùng tiếp cận đến thậm chí cả những ứng dụng web dở nhất . Đó là lý do tại sao tôi lại đúc kết ra một điều luật cho chính mình, tôi tạm gọi nó là Atwood’ Law:

Atwood’s Law: bất kỳ một ứng dụng nào mà có thể viết bằng JavaScript, thì cuối cùng nó sẽ được viết bằng JavaScript.”

Viết ứng dụng giống Photoshop, Word, hoặc Excel bằng JavaScript thì mới nghe tưởng chừng như là hoang tưởng, nhưng điều đó là không thể tránh khỏi. Nó sẽ xảy ra. Thực tế, nó đã và đang xảy ra. Bạn hãy nhìn xung quanh mà xem.

Là một lập trình viên phần mềm, tôi hạnh phúc nhất khi sản phẩm mình viết ra được người dùng đón nhận. Điều gì là đáng nói nếu phần mềm của bạn thường đi theo một lộ trình cố định là đầu tiên nó được đóng gói trong các file nhị phân, sau đó nó được muacấp license tải vềcài đặtbảo trì rồi cập nhật? Cùng với tất cả những công đoạn cũ kỹ này, đó là những rào cản truyền thống giữa lập trình viên và người dùng, tôi lấy làm ngạc nhiên khi ngành công nghiệp phần mềm vẫn còn được tổ chức theo cách này. Nhưng trong thế giới mới của lập trình ứng dụng web, những hạn chế này đã không còn nữa. Không có ranh giới nào nữa. Phần mềm của bạn có thể sử dụng ở bất cứ đâu.

Lĩnh vực lập trình web thì còn lâu mới đạt đến mức độ hoàn hảo. Nó thực ra còn nhiều thứ cần phải cải tiến. Bất kỳ một tay Coder nào cũng có thể đẻ ra một ứng dụng web tồi, và có đến 99% các ứng dụng web là hoàn toàn dở ẹc. Nhưng điều này cũng đồng nghĩa có những lập trình viên tài năng đang giới thiệu những sản phẩm của họ đến hàng trăm, hàng ngàn, có thể thậm chí hàng triệu người dùng, điều mà họ chưa bao giờ có thể mơ tới ở thời trước khi có web. Không có gì buồn và lãng phí tiền bạc hơn khi sản phẩm của mình chết ẻo và không được ai biết đến mà sử dụng. Việc viết phần mềm dưới dạng ứng dụng web cho phép các lập trình viên đưa sản phẩm của họ đến trước mặt một ai đó, ở một nơi nào đó. Thậm chí nếu sản phẩm đó rất tồi.

Nếu những tranh luận về người dùng và nghề phần mềm vẫn chưa đủ để thuyết phục bạn, thì chúng ta hãy quan tâm đến góc độ kinh doanh:

“Bạn đang làm một ứng dụng web, phải không? Giờ không phải là thời điểm của những năm 80 nữa. Ứng dụng web của bạn dù đang lộn xộn và dở dang thì vẫn nhiều thành công hơn những phần mềm hoành tráng của đối thủ được viết dạng ứng dụng desktop.”

Không lâu nữa, tất cả lập trình sẽ là lập trình web. Nếu bạn không nghĩ rằng đó là một lý do để chúc mừng những lập trình viên bình thường, thì có thể bạn nên tìm một nghề khá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.

16 comments on “Tất cả lập trình đều là lập trình web

  1. Bài viết này xốc quá bạn ạ.nếu nói thế thì thế giới này hãy bỏ lập trình web đi à.? Cái này tôi thấy họ học vì sở thích và khả năng của họ ấy chứ. @

      • Việc lựa chọn 1 ngôn ngữ để chuyên sâu cho công việc sắp tới khi em ra trường anh à. :) Bởi lẽ việc học ở trường đại học, các ngôn ngữ lập trình mình đều dừng ở mức cơ bản để làm 1 project nhỏ. Học xong lại tiếp tục ngôn ngữ mới. Nên chưa ngôn ngữ nào gọi là đầu tư lên mức advance được anh à.

  2. Các bạn làm web hết thế thì ai lập trình ứng dụng và lập trình embedded cho cái máy giặt nhà mình giờ :(. Nghĩ đến tương lại phải giặt tay thì ác mộng.

  3. Bài viết hay để cổ vũ những người chuyên lập trình web nhưng không nên cực đoan quá. Nói chung là nên biết về web dù có thể không chuyên, bằng 1 ngôn ngữ nào nào bất kỳ cũng được.
    “Atwood’s Law: bất kỳ một ứng dụng nào mà có thể viết bằng JavaScript, thì cuối cùng nó sẽ được viết bằng JavaScript.”
    –> Câu này hay và ấn tượng nhưng cần được kiểm chứng thêm :)

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:

Gravatar

thanhdienblog: 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