Framework, Library… – Lợi và hại!

1815

Bài viết được sự cho phép của tác giả Tống Xuân Hoài

Vấn đề

Lập trình thời nay có phần không giống như xưa nữa, chúng ta có nhiều lựa chọn hơn về công nghệ cũng như công cụ hỗ trợ lập trình. Một phần là do cộng đồng ngày càng phát triển tạo ra nhiều công cụ hỗ trợ giải quyết vấn đề rất mạnh mẽ, qua đó giúp giảm thời gian phát triển xuống, đồng thời tối ưu hóa công việc mang tính lặp đi lặp lại. Bây giờ mỗi khi gặp vấn đề, việc đầu tiên tôi hay làm là tìm kiếm trên Google xem liệu có công cụ nào có thể giải quyết được cho mình hay không. Hoặc cũng có lúc biết cách giải quyết rồi, nhưng vẫn tìm kiếm xem liệu có cách nào làm tốt hơn hay không.

Vài năm trở lại đây, JavaScript đang trên đà phát triển rất mạnh mẽ, trong khi nó vốn được tạo ra để chạy trong trình duyệt. Thậm chí còn xâm lấn sang nhiều nền tảng khác nhau như máy chủ, thiết bị di động, công cụ dòng lệnh (command line)… Nhiều người quan tâm đến JavaScript hơn đồng nghĩa với việc nhiều công cụ bắt nguồn từ nó ra đời, mà thường thấy phổ biến nhất là số lượng thư viện (lib) lẫn Framework được tạo ra hàng ngày. Có người nói vui rằng chưa kịp nghiên cứu xong cái này, cái khác đã mọc ra :D.

Chính vì có quá nhiều lựa chọn như vậy mà đôi khiến chúng ta phải chạy theo chúng. Học hết cái này cái nọ nhưng lại quên mất việc học bản chất của ngôn ngữ. Phải nói rằng nhiều Framework giấu đi sự phức tạp của mã rất tốt, nó khiến chúng ta chỉ tập trung vào việc viết theo cấu trúc, chứ ở tầng bên dưới, việc biên dịch và thực thi mã ít khi được quan tâm. Chỉ khi nào gặp vấn đề mà muốn can thiệp vào tầng bên dưới thì mới đi hỏi những câu hết sức cơ bản.

Có thể nói Framework như là một “interface” của ngôn ngữ lập trình, ngôn ngữ lại là “interface” của hệ thống máy tính… Nói như thế để cho chúng ta hình dung ra được Framework đang che dấu đi sự phức tạp của ngôn ngữ lập trình, vì thế mà chúng ta cảm thấy làm việc với Framework rất tối ưu hóa nhưng về bản chất lại không thể hiểu được nếu như không chịu tìm hiểu.

Gần đây, anh CTO chỗ tôi đang làm có bày tỏ vấn đề anh ấy phỏng vấn rất nhiều người mà đa số họ đều có nền tảng từ Framework chứ hỏi chuyên sâu vào tầng dưới thì hầu như không trả lời được. Qua đó có thể phản ảnh được phần nào xu thế bây giờ: học nhanh, làm nhanh và ngại tìm hiểu.

Nói đến đây không phải tôi có ý chê trách Framework hay người sử dụng nó, bản thân tôi cũng đang sử dụng rất nhiều Framework để tối ưu hóa trong công việc, tuy nhiên cách tiếp cận mới là điều chúng ta cần phải bàn đến.

Bài viết ngày hôm nay là để phân tích xem lợi ích và tác hại của việc sử dụng Framework là gì, đồng thời đưa ra một hướng tiếp cận mà tôi thấy cân bằng được giữa việc khai thác sức mạnh và kiến thức nền tảng.

  Top 3 Vuejs Library không thể không biết

Lợi ích và tác hại

Việc sử dụng Framework có thể mang lại cả lợi ích và tác hại cho dự án phát cũng như cho chính người phát triển phần mềm.

Một số lợi ích có thể kể đến như:

  • Tăng tốc độ phát triển: Framework cung cấp các tính năng và thành phần đã được xây dựng sẵn, giúp giảm thiểu công sức và thời gian cần để triển khai một ứng dụng từ đầu. Điều này có thể làm tăng tốc độ phát triển và giảm bớt công việc lặp đi lặp lại. Hơn nữa kiến trúc của Framework đã được tối ưu bởi rất nhiều người, cả về khả năng bảo mật và độ tin cậy.
  • Tiết kiệm thời gian và nguồn lực: Thay vì phải xây dựng từ đầu các tính năng cơ bản như kết nối cơ sở dữ liệu, CRUD, xử lý lỗi, v.v., bạn có thể kích hoạt chúng thông qua vài dòng lệnh hoặc code đơn giản. Điều đó giúp tiết kiệm thời gian phát triển.
  • Cộng đồng hỗ trợ: Các Framework phổ biến thường có cộng đồng lớn và nhiều tài liệu phục vụ cho mục đích nghiên cứu, học tập. Thế nên bạn có thể nhận được nhiều lợi ích từ sự hỗ trợ của cộng đồng, bao gồm việc chia sẻ kiến thức, gỡ rối lỗi, và phát triển các thành phần mở rộng.

Tuy nhiên, Framework cũng không phải không có mặt trái:

  • Phụ thuộc vào bên thứ ba: Tất nhiên rồi, sử dụng Framework đồng nghĩa với việc bạn phải phụ thuộc vào nó. Điều này tạo ra một môi trường rủi ro, vì nếu các Framework hoặc thư viện không được duy trì nữa, có thể gây khó khăn trong việc bảo trì và nâng cấp ứng dụng.
  • Phụ thuộc vào tính năng có sẵn: Như tôi đã trình bày ở trên, một số lập trình viên có thể trở nên quá phụ thuộc vào tính năng có sẵn của Framework mà không tìm hiểu sâu về cách hoạt động bên trong. Khi gặp vấn đề, gây khó khăn trong việc tìm hiểu và khắc phục.
  • Tăng độ phức tạp: Sử dụng Framework bạn phải theo cấu trúc của nó, điều này có thể làm tăng thời gian và công sức cần thiết để phát triển và duy trì ứng dụng. Ví dụ như cần thay đổi hoặc can thiệp sâu vào tầng dưới có thể khó hơn thông thường, lúc này bạn cần bỏ ra nhiều thời gian hơn để tìm hiểu và khắc phục vấn đề.

Xem thêm việc làm Node.js developer hấp dẫn nhất tại TopDev

Vậy thì nên tiếp cận Framework như thế nào?

Trước tiên, hãy dành thời gian để học kiến thức cơ bản của ngôn ngữ lập trình trước khi tìm hiểu sang Framework. Đọc tài liệu để hiểu được “concept” của ngôn ngữ, điểm mạnh yếu, tính năng nổi bật mà nó có thể làm được. Bởi suy cho cùng, Framework cũng chỉ hỗ trợ trong phạm vi mà ngôn ngữ có thể làm được, nếu biết được hết tính năng mà ngôn ngữ cung cấp, bạn có thể nắm được vấn đề và đôi khi hiểu được tầng dưới của một tính năng nào đó.

  Tại sao lại chọn Fastify framework thay vì ExpressJS?

Tìm hiểu về nền tảng mà bạn đang phát triển. Ví dụ nếu như theo lập trình website, web application thì hãy tìm hiểu về thứ chạy được nó như là trình duyệt: tại sao trình duyệt lại có thể chạy được trang web hay tại sao trang web của bạn chỉ chạy tốt trên một số trình duyệt chứ không phải là tất cả?… Tương tự, nếu viết mã phía server hãy tìm hiểu lý do tại sao server có thể chạy được mã của bạn viết… chuyên sâu hơn nữa là kiến trúc máy tính và hệ điều hành…

Cuối cùng, tìm cách tối ưu hóa thời gian phát triển bằng cách tìm hiểu các Framework được đông đảo người sử dụng. Dành thời gian đọc tài liệu để xem nó làm được gì và thử nghĩ xem tính năng đó đang dựa vào chức năng nào của ngôn ngữ. Như vậy, sau này có phát sinh vấn đề, bạn có thể tìm được nguyên nhân và tìm cách khắc phục.

Lấy ví dụ về một thư viện nổi tiếng như là axios, nó được “base” trên API XMLHttpRequest của trình duyệt, và chỉ có thể khai thác được tối đa những gì mà XMLHttpRequest cung cấp.

Tổng kết

Framework là một trong những công cụ hỗ trợ lập trình rất tốt, nó có thể rút ngắn thời gian phát triển một cách đáng kể, hơn nữa còn được tối ưu và kiểm nghiệm bởi rất nhiều người sử dụng. Tuy nhiên, nếu quá lạm dụng mà không tìm hiểu sâu vào mọi thứ ở bên dưới, chúng ta có thể gặp nhiều khó khăn trong bảo trì sau này. Vì thế hãy dành thời gian tìm hiểu những thứ nền tảng để trang bị cho mình một lượng kiến thức nhất định trước khi học cách sử dụng Framework.

Bài viết gốc được đăng tải tại 2coffee.dev

Có thể bạn quan tâm:

Xem thêm các việc làm lĩnh vực CNTT hấp dẫn trên TopDev