Trong nghề lập trình, thật khó sống nếu thiếu framework (dịch thô là “khung làm việc”). Framework là cái khung với rất nhiều thứ được xây dựng sẵn để tái sử dụng cho từng nhóm chức năng\công việc nhất định. Ví dụ, Java Collection Framework giúp cho việc tạo ra và sử dụng các cấu trúc dữ liệu, một phần cực kì quan trọng của bất kì chương trình nào, trở nên nhẹ nhàng hơn. Nếu ai đã từng lập trình C hay Pascal mà không dùng framework để tạo danh sách liên kết, sẽ thấy được sự tiện lợi (không bàn đến các yếu tố khác) của cái lớp LinkedList trong Java Collection Framework. Gần như không phải làm gì thêm để có thể dùng ngay lớp ấy để tạo danh sách. Trong túi khôn của các lập trình viên, mỗi người thường có vài chục framework như vậy.

Nhưng framework không chỉ giới hạn trong giới lập trình. Tư duy chung của framework có thể áp dụng ở mọi nơi: có một chút lý thuyết hay mô hình về cái gì đó, xây dựng một số công cụ để hiện thực hóa cái mô hình đó để “người dùng” có thể sử dụng luôn để hữu ích trong việc gì đấy. ví dụ, Cynefine framework được dùng để hỗ trợ ra quyết đinh trong những tình huống phức hợp (complex) bao gồm ý tưởng về phân vùng các ngữ cảnh theo độ phức tạp như Đơn giản (Simple), Rắm rối (Complicated), Phức hợp (Complex), Hỗn độn (Chaotic) hay Vô định (Disorder); và một biểu đồ để phân vùng sự việc để hỗ trợ ra quyết định hay hoạch định chiến lược.

Cynefine Framework (Wikipedia)

Cynefine Framework (Wikipedia)

Trong các phương pháp luận về Agile Software Development, Scrum được gọi là framework cũng theo cái tư duy tương tự. Nó xây dựng một cái khung với một số “công cụ” dựng sẵn, có thể tái sử dụng ngay để tiết kiệm công sức cho những người muốn ứng dụng tư duy linh hoạt (agile) vào công việc của mình.

Rõ ràng là việc sử dụng framework đã giúp người mới bắt đầu dễ dàng tạo ra giá trị mà không cần phải nhọc công học hỏi lâu. Nếu phải học cách cấu trúc và  tạo danh sách liên kết rồi mới dùng cho bài toán cụ thể thì có thể ta sẽ phải mất một ngày[cũng chưa chắc tạo ra cấu trúc dữ liệu tốt], trong khi với hỗ trợ của Java Collection Framework, ta chỉ cần một giờ [mà vẫn có một cấu trúc dữ liệu tương đối tốt]. Đây chính là một cách để đứng trên vài những người khổng lồ.

Tuy vậy, chúng ta sử dụng framework, chứ không tùy biến framework. Mỗi framework ẩn chứa bên trong nó là hàng tá lí thuyết và công sức lao động trí tuệ. Nó có lí do để “không hơn, không kém”. Cho nên việc một người mới toe khi nhìn thấy framework mà đã tính cách tùy biến nó, cắt bớt gia giảm nó thì chỉ có thể gọi bằng cái tên hồ đồ, tùy tiện.

Trong thế giới Agile, có một từ ScrumBut để ám chỉ việc này.

Bạn có thể thành thạo Scrum, rồi biến nó thành cái của riêng công ty bạn (tham khảo mô hình ShuHaRi), và gọi nó bằng một cái tên hoàn toàn khác (như Saleforce, IBM … đã làm ); nhưng nếu đó là lần đầu tiên bạn học cách dùng Scrum, và nghĩ rằng phải chế biến ngay ScrumBut thì thôi xin đừng gọi nó là Scrum nữa, đừng nói “tôi cũng dùng Scrum” nữa, tội nghiệp các bác Ken và Jeff. Vì Scrum nó là phờ-rêm-guấc-kờ.

Written by Tấn Dương