99% website ở Việt Nam đều có kết cục giống nhau
Back To BlogsĐây không phải là một con số thống kê chính thức. Nhưng sau khi tiếp nhận và xử lý nhiều website cũ, tôi nhận ra một kịch bản lặp đi lặp lại rất nhiều lần:
Website được làm xong → bàn giao → sử dụng một thời gian → bắt đầu phát sinh vấn đề → không còn ai bảo trì → cuối cùng bị bỏ lại.
Phần lớn website tôi tiếp nhận không phải những dự án cần làm mới hoàn toàn. Khách hàng đã có website, thậm chí đã sử dụng trong nhiều năm. Việc của tôi chủ yếu là chuyển đổi chúng sang nền tảng mà tôi đang phát triển để khách hàng có thể tiếp tục vận hành. Và điều đáng chú ý là rất nhiều website cũ gặp những vấn đề gần như giống nhau.
- Khách hàng muốn thêm một tính năng nhỏ nhưng không thể tự làm.
- Muốn sửa một phần giao diện nhưng phải tìm lại người viết website.
- Muốn thay đổi nội dung nhưng trang đó lại được viết cứng trong source code.
- Có website thậm chí không có hệ thống quản trị đủ tốt để khách hàng tự đăng bài.
- Khi xảy ra lỗi, khách hàng không biết lỗi nằm ở đâu, cũng không biết phải liên hệ với ai.
Tệ hơn nữa, tôi từng gặp những website đã bị chèn mã độc và âm thầm chuyển hướng người truy cập sang các trang quảng cáo, cờ bạc hoặc những website không liên quan.
Đến thời điểm đó, website không còn là một tài sản của doanh nghiệp nữa. Nó trở thành một hệ thống mà doanh nghiệp đang sở hữu nhưng không thực sự kiểm soát được gây ra rất nhiều sự khó chịu và phiền toái.

Nguyên nhân đến từ đâu?
Tôi nghĩ sẽ không công bằng nếu đổ toàn bộ trách nhiệm cho khách hàng được. Phần lớn khách hàng không phải lập trình viên. Khi thuê một đơn vị hoặc một cá nhân làm website, họ khó có thể biết kiến trúc bên trong được xây dựng như thế nào, vài năm nữa có thể nâng cấp hay không, hoặc chuyện gì xảy ra khi người phát triển ban đầu không còn hỗ trợ. Một phần lớn vấn đề nằm ở cách chúng ta phát triển website ngay từ đầu.
1. Đánh giá thấp sự phức tạp của website theo thời gian
Một website lúc mới bắt đầu có thể rất đơn giản với một vài trang như trang chủ, giới thiệu, sản phẩm, bài viết và liên hệ. Nhưng khách hàng và doanh nghiệp của họ tất nhiên sẽ luôn phát triển, để phát triển thì họ cần thêm các tính năng như form liên hệ, landing page, các trang con, các đề mục bài viết. Sau một thời gian họ muốn thêm thanh toán, CRM, chatbot, email marketing, phân quyền nhân viên, API, thống kê, SEO, kết nối mạng xã hội hoặc rất nhiều chức năng khác.
Nếu kiến trúc ban đầu chỉ được thiết kế để giải quyết yêu cầu hiện tại, mỗi tính năng mới sẽ trở thành một lần vá hệ thống. Vá đủ nhiều, website trở nên ngày càng khó sửa.
2. Giá nào cũng nhận, yêu cầu nào cũng làm
Đây là một vấn đề tôi thấy khá phổ biến. Để có dự án, nhà phát triển có thể chấp nhận một mức giá thấp hơn rất nhiều so với khối lượng công việc thực tế. Không nói đâu xa, chỉ cần ai đó đăng yêu cầu vào một nhóm trên facebook là hàng chục người lao vào nhận với bất kỳ giá nào.
Ban đầu mọi thứ vẫn ổn. Nhưng website không kết thúc ở ngày bàn giao. Sau đó là sửa lỗi, cập nhật thư viện, nâng cấp server, xử lý bảo mật, thay đổi giao diện, bổ sung chức năng và hàng loạt yêu cầu phát sinh. Nếu chi phí ban đầu không đủ để duy trì quá trình đó, việc nhà phát triển dần mất động lực hoặc ngừng hỗ trợ gần như là điều có thể dự đoán trước. Cuối cùng người chịu hậu quả lại là khách hàng.
3. Mỗi website là một bộ source code riêng
Đây có lẽ là vấn đề lớn nhất. Nếu mỗi khách hàng tương ứng với một codebase khác nhau thì 10 khách hàng là 10 hệ thống cần bảo trì. 100 khách hàng là 100 hệ thống. Một lỗi bảo mật được phát hiện hôm nay có thể phải sửa trên hàng chục website khác nhau. Một tính năng mới cũng phải viết hoặc tích hợp lại nhiều lần. Đến một quy mô nhất định, mô hình này rất khó duy trì. Mặc dù hầu hết website ở Việt Nam sử dụng wordpress nhưng mỗi người lại có một cách tổ chức mã nguồn riêng, cách lưu dữ liệu riêng vì wordpress thiếu quy chuẩn cho bảng.
4. Khách hàng phụ thuộc quá nhiều vào lập trình viên
Một website tốt không nên yêu cầu lập trình viên cho mọi thay đổi. Đổi banner không nên cần sửa source code. Tạo landing page không nên cần deploy lại website. Thêm trường dữ liệu, tạo bài viết, thay menu hay cấu hình SEO cũng không nên trở thành một yêu cầu phát triển mới. Ngày nay có AI khách hàng cũng bớt phụ thuộc hơn nhưng họ vẫn bị phụ thuộc vào cái mà lập trình viên cung cấp có đủ để họ Vibe coding hay không.
5. Bàn giao website nhưng không bàn giao khả năng vận hành
Có một sự khác biệt rất lớn giữa Website đã chạy và Khách hàng có thể tự vận hành website. Nếu sau khi bàn giao, mọi thay đổi vẫn phải gọi cho người viết code thì về bản chất dự án vẫn chưa thực sự được bàn giao. Khách hàng chỉ nhận được sản phẩm cuối cùng, nhưng không nhận được khả năng kiểm soát sản phẩm đó. Khi có lỗi xảy ra thì họ cũng không biết tìm ai để giải quyết. Có lẽ bản chất ở đây là tính kế thừa về mặt công nghệ ở Việt Nam còn yếu.
Vậy cách khắc phục là gì?
Sau khi gặp những vấn đề trên nhiều lần, tôi thay đổi cách nhìn về việc xây dựng website. Thay vì coi mỗi website là một dự án phần mềm độc lập, tôi coi website là một ứng dụng chạy trên một nền tảng có khả năng tiếp tục phát triển. Ngoài ra tôi cũng cẩn thận hơn trong việc quyết định có thể nhận dự án trong khả năng của mình không. Tránh thể hiện quá đà "cái này dễ mà" để rồi không làm được. Tôi đã thực hiện các bước sau:
1. Tách nền tảng khỏi website
Những chức năng phổ biến như quản trị người dùng, phân quyền, bài viết, media, API, email, ecommerce, chatbot hay CRM không nên được viết lại từ đầu cho từng website. Chúng nên thuộc về nền tảng. Website chỉ sử dụng những chức năng cần thiết. Khi nền tảng được nâng cấp hoặc sửa lỗi, các website phía trên cũng có thể hưởng lợi từ quá trình đó.
2. Chức năng nên được module hóa
Một doanh nghiệp hôm nay chỉ cần website giới thiệu không có nghĩa hai năm nữa họ vẫn chỉ cần như vậy. Vì thế hệ thống phải cho phép bổ sung chức năng mà không cần phá bỏ kiến trúc cũ Cần Ecommerce Cài thêm Ecommerce. Cần CRM? Bổ sung CRM. Cần chatbot AI? Kết nối chatbot. Cần một chức năng đặc thù? Phát triển plugin riêng. Website có thể lớn dần cùng doanh nghiệp thay vì vài năm lại phải xây lại từ đầu.
3. Trao quyền kiểm soát lại cho khách hàng
Mục tiêu cuối cùng không phải để khách hàng phụ thuộc vào nền tảng nhiều hơn. Ngược lại họ phải có khả năng tự:
- quản lý nội dung;
- đăng và chỉnh sửa bài viết;
- quản lý sản phẩm;
- thay đổi những thành phần giao diện được phép;
- quản lý tài khoản và phân quyền;
- cấu hình SEO;
- theo dõi dữ liệu;
- bật hoặc tắt chức năng;
- sao lưu và nâng cấp hệ thống.
Khi đó lập trình viên chỉ xuất hiện khi doanh nghiệp thực sự cần xây dựng một khả năng mới.
Tôi cũng xây dựng cộng đồng ngày càng lớn mạnh hơn để tăng tính kế thừa về mặt công nghệ, để ai cũng có thể hỗ trợ được khách hàng khi họ cần, khách hàng có thể trả tiền cho người hỗ trợ và tạo nên một nền kinh tế chia sẻ.
4. Phải nghĩ đến ngày người phát triển ban đầu rời đi
Đây là một nguyên tắc tôi cho rằng rất quan trọng. Khi thiết kế một website, hãy thử đặt câu hỏi
Nếu ngày mai người viết website này không còn làm dự án nữa thì chuyện gì sẽ xảy ra?. Website có tiếp tục hoạt động không? Người khác có đọc được source code không? Có tài liệu không? Có thể nâng cấp không? Khách hàng có thể tự quản trị không? Có thể sao lưu và chuyển server không? Một hệ thống chỉ hoạt động tốt khi tác giả của nó còn ở đó là một hệ thống có rủi ro rất lớn.Website không nên là một dự án làm một lần
Đây có lẽ là điều quan trọng nhất tôi rút ra. Website không phải một sản phẩm mà chúng ta làm xong rồi để đó trong 5 hay 10 năm. Doanh nghiệp thay đổi. Công nghệ thay đổi. Trình duyệt thay đổi. Các tiêu chuẩn bảo mật thay đổi. SEO thay đổi. Nhu cầu khách hàng cũng thay đổi. Vì vậy, kiến trúc website ngay từ đầu phải chấp nhận một sự thật:
Website sẽ tiếp tục thay đổi sau ngày bàn giao. Nếu chúng ta thiết kế cho sự thay đổi đó, website có thể tồn tại rất lâu. Nếu không, kết cục thường chỉ là vấn đề thời gian:Không ai dám sửa → không thể nâng cấp → lỗi ngày càng nhiều → người phát triển cũ không còn hỗ trợ → cuối cùng phải làm lại.
Và đó cũng là lý do tôi không còn muốn giải quyết vấn đề bằng cách tiếp tục viết thêm một website riêng biệt cho từng khách hàng. Tôi muốn giải quyết chính nguyên nhân khiến những website đó bị bỏ lại.
Một website tốt không chỉ cần chạy được hôm nay. Nó phải có khả năng tiếp tục được vận hành, sửa đổi và phát triển ngay cả khi người tạo ra nó ban đầu không còn ở đó.
Young Monkeys - Founder