Google và bài học đau đớn từ việc nâng cấp Angular 2
Câu chuyện Google loại bỏ AngularJS để chuyển sang Angular 2 với kiến trúc hoàn toàn mới, không có lộ trình nâng cấp và thậm chí chưa hoàn thiện, đã khiến hàng triệu lập trình viên quay lưng. Cựu chuyên gia của Google, Stephen Fluin, chia sẻ những bài học về cách không nên nâng cấp một gói phần mềm.

Google và bài học đau đớn từ việc nâng cấp Angular 2
Năm 2014, Google bất ngờ khai tử AngularJS - framework JavaScript phổ biến - để chuyển sang Angular 2 với kiến trúc khác hoàn toàn, tên gọi gây nhầm lẫn và không có lộ trình nâng cấp. Hệ quả là nhiều lập trình viên đã chuyển sang React hoặc Vue. Tại hội nghị All Things Open, cựu chuyên gia của Google đã đúc kết những bài học quý giá về cách không nên nâng cấp một gói phần mềm.
Khi sự không chắc chắn giết chết động lực
Bức hí hoạ "Welcome to Google" của một cựu kỹ sư Google từng lan truyền rộng rãi, mô tả hai con đường đều không thể đi: một con đường bị đánh dấu là đã ngừng hỗ trợ ("đừng mơ tới"), con đường còn lại thì vẫn đang thi công ("Nguy hiểm"). Đó chính là tình cảnh mà khoảng hai triệu lập trình viên frontend phải đối mặt vào năm 2014.
Stephen Fluin, cựu Developer Advocate của Google, người từng làm việc cho dự án Angular giai đoạn 2016-2021, nhận định tại hội nghị:
"Sự không chắc chắn giết chết động lực. Khi bạn lấy đi mọi thứ mà lập trình viên biết và yêu thích, họ sẽ cảm thấy chán nản."
Ông mô tả giai đoạn đó là "một cuộc hành quân tử thần" khi không ai biết Angular 2 sẽ ra mắt khi nào, còn những nền tảng cốt lõi của Angular thì liên tục thay đổi.
Từ AngularJS đến Angular 2
Google có lý do chính đáng để nâng cấp Angular. Đội ngũ AngularJS bị chuyển từ bộ phận hạ tầng sang bộ phận quảng cáo của Google, nơi phần mềm được khai thác triệt để hơn. Để đáp ứng quy mô vận hành đó, Angular cần sự chặt chẽ hơn.
- AngularJS ra mắt năm 2009 như một dự án phụ của kỹ sư Miško Hevery, xây dựng theo mô hình controller truyền thống, xử lý toàn bộ đầu vào người dùng, logic và truyền tải dữ liệu trong đối tượng
$scope. - Angular 2, công bố tại hội nghị ng-europe 2014, chuyển sang mô hình component, mỗi template HTML có thuộc tính class riêng.
- Sau một giai đoạn gắn bó không mấy vui vẻ với Dart, đội ngũ viết lại Angular hoàn toàn bằng TypeScript, không có bất kỳ khả năng tương thích ngược nào.
Bài thuyết trình giới thiệu tại ng-europe còn khiến cộng đồng hoảng sợ hơn là truyền cảm hứng. Với mỗi tính năng bị loại bỏ, diễn giả hiển thị hình một bia mộ ("RIP Controllers") kèm tiếng chuông nhà thờ vang lên.
Fluin cho biết: "Bài thuyết trình đó đến nay vẫn nổi tiếng vì những gì nó gây ra cho cộng đồng. Mọi thứ bạn biết và yêu về AngularJS đều biến mất. Chúng đã chết. Và không ai biết điều này sẽ đến."
Cái tên gây tranh cãi
Lời khuyên của Fluin rất rõ ràng:
"Nếu bạn muốn lập trình viên đồng hành cùng mình, hãy cho họ một lộ trình. Đừng chỉ giết cái cũ rồi để cái mới chưa sẵn sàng."
Nhiều lập trình viên đã chuyển sang React và Vue.js - hai framework frontend JavaScript khác cũng theo mô hình component và đã sẵn sàng đưa vào sử dụng.
Theo khảo sát State of JS 2016, React là framework frontend phổ biến nhất với 53% lập trình viên JavaScript cho biết đã dùng. Lượng người dùng Angular bị chia đôi: 30% vẫn dùng phiên bản cổ điển, chỉ 13% dùng Angular 2, còn 10% dùng Vue đang mới nổi.
Angular 2 cuối cùng ra mắt vào tháng 9/2016, tiếp đó là Angular 4 vào tháng 3 năm sau. Phiên bản 3 bị bỏ qua hoàn toàn mà không có lý do rõ ràng. Trong khi đó, AngularJS cổ điển - mãi đến cuối năm 2021 mới chính thức ngừng hỗ trợ - được cập nhật lên 1.5 vào mùa xuân 2016.
Việc đặt tên càng làm mọi thứ rối rắm hơn. AngularJS có khác gì Angular 2? Và số "2" là một phần của tên, đánh dấu sự thay đổi kiến trúc, hay chỉ là số phiên bản? Fluin cho biết việc giúp công chúng hiểu được sự thay đổi tên này là một "đầm lầy" thực sự:
"Chúng tôi phải sửa hướng dẫn truyền thông công khai. Phải đào tạo chuyên gia. Phải sửa cả knowledge graph của Google."
Bài học cho cộng đồng phát triển phần mềm Việt Nam
"Đặt tên và đánh phiên bản rất quan trọng. Chúng không quan trọng về mặt kỹ thuật thuần túy, nhưng chúng quan trọng với con người, bởi vì chính con người là đối tượng bạn muốn cập nhật."
Dễ dàng đổ lỗi cho lãnh đạo Google vì suýt làm đắm con tàu Angular, nhưng framework này lại thành công trong việc đáp ứng nhu cầu của Google. Ngày nay, Angular hướng component đang vận hành giao diện người dùng của Gemini, Google Analytics và vô số ứng dụng Google khác, đồng thời đang hội tụ với framework hiệu năng cao Wiz nội bộ của Google.
Angular cũng đã đi vào quỹ đạo cập nhật ổn định hơn, hiện hai lần mỗi năm, tuân thủ quy tắc semantic versioning với số phiên bản chính biểu thị thay đổi phá vỡ tương thích. Mọi tính năng dự kiến loại bỏ đều được đánh dấu ngừng hỗ trợ trước một năm.
Nhìn lại, Fluin cho rằng Google có lẽ nên đặt cho Angular 2 một cái tên hoàn toàn khác, kể cả khi phải gây dựng lại người dùng từ đầu:
"Lập trình viên JavaScript thích thử framework mới. Vậy nên giả vờ đó là một framework mới có lẽ đã tốt hơn."
Với các đội ngũ phát triển tại Việt Nam, câu chuyện này là lời nhắc nhở: khi nâng cấp một nền tảng quan trọng, lộ trình di trú rõ ràng, thông tin minh bạch và sự tôn trọng cộng đồng quan trọng không kém gì chất lượng kỹ thuật. Một bản nâng cấp tốt về công nghệ vẫn có thể thất bại nếu nó lấy đi của người dùng những gì họ đã quen thuộc mà không cho họ một con đường để bước tiếp.
Bài viết liên quan

Công nghệ
Mô hình AI hàng đầu giỏi Vật lý đến đâu? Nghiên cứu mới chỉ ra các bài kiểm tra hiện hành đang đánh giá sai
16 tháng 9, 2026

Công nghệ
Nộp đơn xin việc lẽ ra nên khó hơn. Thật đấy
25 tháng 8, 2026

Công nghệ
Báo cáo Octoverse 2026: Kỷ lục 17,9 tỷ lần push code, lập trình viên xây dựng cùng AI agent
28 tháng 10, 2026