Ưu nhược điểm của việc dùng Front-end Framework có sẵn

Ưu nhược điểm của việc dùng Front-end Framework có sẵn

Trong thế giới mạng, người ta vẫn thường phân vân giữa hai lựa chọn là “tùy chỉnh” (custom) hay là “có sẵn” (ready-to-use). Dù đang nói đến CSS, JavaScript, PHP hay một framework (bộ khung) trong bất kỳ ngôn ngữ lập trình nào, có một câu hỏi vẫn thường xuyên xuất hiện: ta nên sử dụng cơ sở code đã được dựng sẵn hay dùng bộ code do chính mình tự xây dựng tự đầu? Điều này là đặc biệt quan trọng đối với các framework front-end (bộ khung phát triển phần giao diện), bởi nó chịu trách nhiệm trực tiếp cho cách người dùng “nhìn” và “cảm” được một website.

Những framework front-end như Bootstrap hay Foundation đã giúp thay đổi cách mà người ta tạo website. Những công cụ như thế đã đơn giản hóa mọi thứ đi rất nhiều, ngay cả với những người không phải lập trình viên, và hơn nữa chúng chỉ yêu cầu đầu tư thời gian cũng như công sức tối thiểu để tạo được một website hoàn chỉnh. Tuy nhiên, những website được tạo “auto” như vậy vẫn có thể có vài nhược điểm đáng kể.

Vì vậy, một câu hỏi đã được đặt ra: giải pháp dễ dàng hơn có nhất thiết là tốt hơn hay không? Mặc dù mọi người thường có xu hướng chọn các công cụ giúp họ đạt được kết quả nhanh và đơn giản nhất, dễ thấy điều này không phải lúc nào cũng là lựa chọn tốt nhất. Ngoài ra, có vẻ nhiều người vẫn ít nhiều bối rối khi phải lựa chọn giữa các biến thế tùy chỉnh hay có sẵn. Đó là lý do vì sao, trong phần tiếp theo của bài viết này, vấn đề sẽ được cân nhắc chi tiết hơn, đồng thời các ưu nhược điểm của từng lựa chọn đều sẽ được khám phá, tất cả với hy vọng người đọc sẽ đưa ra lựa chọn đúng đắn nhất khi phải đối mặt với câu hỏi này.

Ưu điểm của framework front-end có sẵn

Lý do nhiều người ưu tiên các framework front-end này là vì những lợi ích tuyệt vời chúng mang lại, nổi bật nhất là:

  • Bạn không cần phải là một lập trình viên. Trong hầu hết các trường hợp, bạn chỉ cần có lượng kiến thức vừa đủ về HTML và CSS để tạo được một website thuận mắt và hoạt động tốt. Tất cả các chương trình cần thiết trước đó đều đã được hoàn thành bởi các nhà phát triển lành nghề.
  • Như đã nói, giải pháp framework này tối thiểu hóa thời gian và công sức cần bỏ ra trong quá trình tạo website.
  • Chức năng “cắm vào là chạy”. Để có một đoạn code hoạt động với đầy đủ chức năng, ta chỉ cần gõ vài dòng markup mà không cần lo lắng gì về định dạng, hành vi động, v.v.
  • Khi tải xuống một gói framework, ta có thể yên tâm mình đang có một bộ code đã được kiểm tra là hoạt động ổn định. Điều này có nghĩa là website sẽ hiển thị và hoạt động tốt trên các trình duyệt mà framework đó hỗ trợ.
  • Người dùng thường xuyên được cập nhật các tính năng mới cũng như các bản sửa lỗi (bug) cho framework.
  • Do tính phổ biến của các framework front-end có sẵn, bạn hoàn toàn có thể tìm kiếm sự trợ giúp từ cộng đồng: các bài viết, bài hướng dẫn (cho quá trình tìm hiểu framework) và các tiện ích mở rộng framework (cho quá trình tạo website).

Ưu điểm của Frontend

Dễ thấy, sử dụng framework có sẵn mang lại rất nhiều lợi ích. Nhưng nếu nghĩ kỹ lại, hầu hết chúng đều chỉ là tiết kiệm thời gian và công sức trong quá trình học hỏi và/hoặc xây dựng. Những lợi ích trên thường không có liên hệ gần gũi gì đến chất lượng sản phẩm cuối cùng cả. Nói ngắn gọn, chúng chỉ có liên quan tới bạn cũng như thời gian và công sức bạn bỏ ra, chứ không nhất thiết phải là tới sản phẩm của bạn. Điều này đi ngược lại hoàn toàn với mục tiêu của người dùng và khách hàng. Cái họ quan tâm là sản phẩm của bạn tốt như thế nào, chứ không phải thời gian và công sức bạn đã đầu tư để tìm hiểu về framework và xây dựng website. Vậy nên, dễ dàng thì tốt, nhưng…

Nhược điểm của framework front-end có sẵn

Cái gì cũng có giá của nó. Bên cạnh những ưu điểm mà framework có sẵn mang đến thì cũng tồn tại một vài nhược điểm nghiêm trọng. Đối với người dùng bình thường, hay người có yêu cầu khiêm tốn, những hạn chế dưới đây có vẻ không đáng kể, nhưng với những ai hướng tới chất lượng tốt nhất có thể, thì những hạn chế này lại vô cùng quan trọng.

  • Chức năng “cắm vào là chạy” nghe thì có vẻ tuyệt vời, nhưng trước khi biết tận dụng nó, bạn phải đầu tư thời gian để học cách sử dụng chức năng này đã.
  • Bởi “có sẵn” thường đồng nghĩa với “trọn gói” (one-for-all), framework như thế thường sẽ cố để giải quyết mọi vấn đề cho mọi tình huống mà một nhà phát triển front-end có thể gặp phải, vì vậy dẫn tới rất nhiều đoạn code không cần thiết.
  • Vì nó được tạo ra cho mục đích tiêu thụ hàng loạt, gần như chắc chắn là bạn sẽ phải điều chỉnh framework có sẵn sao cho đáp ứng được nhu cầu của mình, mà điều này sẽ lại làm mất thêm nhiều thời gian.
  • Nếu không có thêm bất kỳ tùy chỉnh nào, website của bạn sẽ trông giống hệt các website khác, dễ làm xấu đi hình ảnh sản phẩm của bạn, hay ít nhất thì cũng chẳng giúp gì để cải thiện nó cả.
  • Trong nhiều trường hợp, framework mà bạn chọn sẽ không có đủ tất cả các component cần thiết, và bạn sẽ cần thêm bước tích hợp component của bên thứ ba (có thể là các plugin jQuery cồng kềnh hoặc tương tự).
  • Bạn không kiểm soát được đoạn code. Nếu nhóm phát triển quyết định xóa vài component trong framework, bạn buộc phải chấp nhận sự thay đổi ấy. Nếu không, bạn lại phải sử dụng phiên bản cũ hơn hoặc đã qua chỉnh sửa của sản phẩm này.

Bởi những lý do trên, bạn khó mà đạt đạt được hết những những mục tiêu tối quan trọng của việc tạo website, như là tính độc đáo, hiệu suất cao, tính ứng dụng và khả năng tương thích mạnh mẽ, hay một cơ sở mã hóa nhỏ gọn và đồng nhất. Điều này vô cùng quan trọng, bởi trong phát triển web, nhất là với các thiết bị di động, mọi cải tiến nhỏ nhất đều có thể gây ra những tác động rất lớn. Thế nên chỉ dừng lại ở mức “thường thường” thì không phải là một quyết định thông minh.

Ưu điểm của giải pháp tùy chỉnh

Nếu bạn đang hướng tới những kết quả tốt nhất thì một framework tùy chỉnh có thể mang lại nhiều ưu thế rất mạnh:

  • Một khi đã được xây dựng, giải pháp tùy chỉnh sẽ tiết kiệm cho bạn kha khá thời gian và công sức trong tương lai, bởi nó được tạo ra chính xác để đáp ứng cho những nhu cầu lâu dài.
  • Nhóm của bạn không cần phải học để biết cách sử dụng hay tùy chỉnh, bởi bạn đã hiểu rõ framework này từ trong ra ngoài (tuy nhiên, những thành viên mới trong nhóm thì vẫn phải tìm hiểu thôi).
  • Nó được tối ưu hóa để thỏa mãn các yêu cầu của chỉ riêng bạn chứ không phải của tất cả mọi người. Theo cách đó, nó sẽ đạt được hiệu suất cao nhất dễ dàng hơn nhiều.
  • Nó chỉ bao gồm những thứ bạn cần, theo đúng cách bạn cần. Không có gì thừa thãi, không cả những đoạn code cồng kềnh.
  • Bạn có toàn quyền kiểm soát đoạn code và phép thực thi. Bạn có thể yên tâm rằng những tính năng thực sự tuyệt vời sẽ không bị gỡ bỏ trong các phiên bản phát hành sau này, chỉ trừ khi bạn muốn.
  • Tính module hoàn toàn. Tính linh hoạt của framework chỉ phụ thuộc vào mình bạn mà thôi. Bạn có thể sử dụng chỉ những phần trong framework mà bạn cần cho một dự án cụ thể nào đó.
  • Một cơ sở mã hóa thống nhất. Bạn có thể tối thiểu hóa nhu cầu đối với component của bên thứ ba, cũng có nghĩa là giảm đi được công việc phối hợp phức tạp.
  • Tính độc đáo của website được đảm bảo 100%. Trong phần lớn những framework front-end, các theme mặc định đều hao hao giống nhau, nên bạn sẽ luôn phải thêm vào những sáng tạo của chính mình. Nhưng đối với framework tùy chỉnh của bạn, bạn hoàn toàn có thể tạo ra các theme độc đáo ngay từ lúc ban đầu.
  • Dù cho công việc và bảo trì ban đầu khá nặng nề, quá trình này sẽ dạy cho bạn rất nhiều và cải thiện các kỹ năng của bạn để trở thành một nhà phát triển tốt hơn.

Những ưu điểm này cũng có thể tác động tích cực tới thời gian và công sức của bạn, nhưng ở đây, nó vẫn hướng tới chất lượng sản phẩm cuối cùng nhiều hơn, để từ đó bạn có thể đạt được hiệu suất, chức năng và hình ảnh tốt nhất.

Nhược điểm của giải pháp tùy chỉnh

Nhược điểm đáng kể nhất của framework tùy chỉnh là thời gian và công sức cần bỏ ra để xây dựng, thử nghiệm, bảo trì và cải tiến. Nhưng chúng cũng có thể được xem là lợi ích:

  • Phải mất nhiều thời gian và công sức hơn. Điều này là đúng ở những giai đoạn đầu, nhưng về lâu về dài sẽ giúp bạn tiết kiệm được thời gian và công sức.
  • Code cần được kiểm tra và bảo trì, nhưng chỉ ở những trình duyệt bạn nhắm đến.
  • Các bản sửa lỗi, cập nhật và các tính năng mới được chính bạn xây dựng. Việc này cần có thời gian, nhưng bạn chỉ cần cập nhật cái bạn cần, bổ sung các tính năng mà dự án yêu cầu. Không có gì là thừa cả.

Giải pháp thứ ba

Không rõ mọi người nhận thức được điều này ở mức độ nào, nhưng bên cạnh hai lựa chọn là tùy chỉnh và có sẵn, thực ra ta vẫn có một giải pháp thứ ba, có thể gọi là giải pháp bán tùy chỉnh. Ta dùng giải pháp bán tùy chỉnh này bất cứ khi nào ta lấy một framework có sẵn rồi thực hiện các tùy chỉnh phần cứng trên đó.

Thực tế là một framework chỉ “có sẵn” khi được sử dụng y nguyên như ban đầu, hoặc chỉ được tùy chỉnh phần mềm không đáng kể. Nhưng khi làm thế, kết quả cuối cùng nhận được vẫn là một website với hình ảnh và cảm giác hao hao rất nhiều những trang khác sử dụng cùng framework. Mặt khác, nếu một framework cần được tùy chỉnh kỹ càng trước khi sử dụng, thì nó không thực sự còn là giải pháp có sẵn nữa.

“Phát minh lại bánh xe” có thực sự là vấn đề?

Trong các diễn đàn, blog, v.v, một trong những lập luận  phản đối các framework front-end đều xoay quanh một câu hỏi trọng tâm: Tại sao phải “phát minh lại bánh xe” (cái đã có sẵn rồi)? Thoạt nhìn, lập luận này nghe có vẻ hợp lý, nhưng thú thật lại khá khó để đồng ý được với nó. Hãy xem xét vấn đề một cách sâu xa hơn:

Nếu người ta không phát minh lại bánh xe nhiều lần xuyên suốt lịch sử, thì ngày nay ta vẫn sẽ đang sử dụng các loại xe đẩy nguyên thủy. Phát minh lại bánh xe chỉ thực sự là vấn đề nếu bánh xe bị sao chép y nguyên – tức chỉ là một bản sao mà thôi. Nhưng nếu bạn biến nó trở nên hữu dụng, có giá trị và phù hợp với các nhu cầu của bạn hơn, thì chẳng có vấn đề gì cả. Nếu muốn nhìn nhận còn sâu hơn nữa, bạn sẽ thấy toàn bộ quá trình tiến hóa đều dựa trên mô hình “phát minh lại bánh xe”. Mọi giai đoạn mới đều là một bản sao của giai đoạn trước đó, nhưng với một vài cải tiến mới hơn (đôi khi đáng kể, đôi khi thì không).

Framework Frontend

Giờ thì hãy xem xét từ “phát triển”. Từ này mang nghĩa là “đưa tới trạng thái được nâng cao hay có hiệu quả hơn”, “làm cho phát triển hay mở rộng”, “trở nên phức tạp hay chi tiết hơn”. Nói cách khác, ta không phải đang sáng tạo từ đầu, mà ta đang cải thiện cái ta đã có. Với một nhà phát triển web, đó là viết ra được đoạn code tốt hơn, hiệu quả hơn, phức tạp hơn – chính là thêm vào các chức năng bổ sung cho cái hiện có. Như bạn thấy, “phát minh lại bánh xe” không phải cái gì cần tránh. Đó là một quá trình tự nhiên vẫn thường xuyên xảy ra, nên hãy đừng sợ việc “phát minh lại bánh xe” nhé!

Có một điều nữa cũng cần phải được chỉ ra: xây dựng một framework tùy chỉnh của riêng mình không hề có liên quan gì đến Hội Chứng Lại Một Framework Nữa (Yet Another Framework Syndrome – YAFS). Xây dựng một framework tùy chỉnh không “gây bối rối và thất vọng”, và bạn cũng không cần phải “đánh giá thủ công giữa 300 tùy chọn khác nhau để nhặt ra cái có thể duy trì được”. Bạn tạo ra framework cho riêng bản thân mình, chứ không phải cho số đông. Bạn biết chính xác mình cần gì, làm chính xác theo cách bạn muốn và cho là tốt nhất. Không có bối rối hay thất vọng, hay phân vân không thể lựa chọn. Cuối cùng, có một công án đáng để suy ngẫm như sau: Tại sao người ta lại phải “phát minh lại bánh xe” bằng cách có con đẻ, trong khi họ có thể nhận nuôi con của người khác?

Làm thế nào để lựa chọn đúng?

Để đưa ra lựa chọn đúng đắn nhất, đầu tiên bạn phải hỏi đúng câu hỏi. Đó không phải “Đâu là lựa chọn thích hợp?” mà là “Đâu là lựa chọn thích hợp dành cho tôi?”. Điều đó nghĩa là trước khi đưa ra được lựa chọn đúng đắn, bạn cần phải có cái nhìn rõ ràng về nhu cầu, khả năng, tài nguyên và nguồn lực của chính mình. Như bạn có thể đã đoán trước, cá nhân tôi ưu tiên giải pháp tùy chỉnh bất kỳ khi nào có thể. Nhưng đó là vì nó là lựa chọn thích hợp cho tôi (tất nhiên, không phải lúc nào cũng thế). Để tìm hiểu xem liệu nó có là lựa chọn phù hợp với bạn không, hãy trả lời những câu hỏi sau:

  • Tôi có khả năng làm việc này không?
  • Tôi có đủ thời gian rảnh để làm việc này không?
  • Làm thế này có hợp lý không?

(Lưu ý: Bạn có thể có khả năng hay có rất nhiều thời gian rảnh, nhưng nếu nó không có ý nghĩa gì, đừng làm thế. Nếu chỉ cần điều chỉnh framework có sẵn một chút là đủ thì đừng phí thời gian và công sức để dựng lên một sản phẩm hoàn toàn mới làm gì.)Nếu câu trả lời cho tất cả các câu hỏi trên là “Có”, thì giải pháp tùy chỉnh chắc chắn là một lựa chọn phù hợp dành cho bạn. Mong rằng bài viết này đã giải quyết được câu hỏi “tùy chỉnh hay có sẵn?”, và từ giờ trở đi bạn đã có thể dễ dàng và tự tin hơn khi đưa ra quyết định đúng đắn nhất cho bản thân mình.