Fake Data Driven Development
Software Engineering
39
White

Ngoc Dao viết ngày 21/03/2016

Bài viết này giới thiệu phương pháp "khai cuộc" project tạm gọi là Fake Data Driven Development (F3D), giúp sớm tạo nền móng cho project từ đó nhanh chóng tiến triển tiếp lên và hoàn thành project. Rất có thể bạn đã dùng qua phương pháp này nhưng chưa gọi nó thành tên mà thôi.

Tại sao cần các qui trình có dạng xxx Driven Development

Người Việt có cụm từ "... như nước chảy mây trôi". Nghe thì hay, nhưng về bản chất thì nước chảy được là nhờ nương theo lực hút trái đất, mây trôi được là nhờ nương theo gió. Nếu trái đất luôn hút và gió cứ thổi thao thao bất tuyệt thì một cách rất tự nhiên nước sẽ chảy và mây sẽ trôi mãi.

Lực Làm project cũng vậy, nếu có động lực nào đó không ngừng kéo ta tiến về phía trước để hoàn thành project thì quá tốt. Người ta bỏ công nghĩ ra những qui trình như Data Driven Developement, Test Driven Development, Behavior Driven Development v.v. là vì vậy. Người ta muốn tìm ra động lực nào đó để lái project về đích.

Con người ai cũng cần khích lệ bởi người khác hoặc bởi ngay cả chính mình (AQ). Những tiến triển nhỏ nhưng liên tục hàng ngày là nguồn khích lệ vô tận để mọi người thường xuyên có động lực tích cực để phát triển. Phương pháp phát triển nào quan tâm đến yếu tố con người, giúp khích lệ con người trong suốt quá trình phát triển thì phương pháp đó sẽ được đón nhận. Agile nói chung và F3D nói riêng là một trong những phương pháp đó.

Tinh thần Agile

Agile không phải là phương pháp phát triển cụ thể có thể trình bày một cách rõ ràng, mà là tên chung để chỉ các phương pháp giúp phát triển một cách linh hoạt. Cái hay của Agile là giúp thấy ngay một cách rõ ràng tiến triển qua từng ngày, thay vì từng tháng như trong phương pháp ví dụ như Waterfall.

Thật ra Agile rất gần gũi với cuộc sống hằng ngày. Ví dụ:

  • Nghĩ ngồi mấy tiếng để viết nguyên cả bài dài thì rất oải không có động lực để bắt tay viết, còn nếu mỗi ngày viết một ít thì cuối cùng bài viết cũng hoàn thành.
  • Khi đút cơm cho con, nếu đút từng miếng nhỏ và đút miếng ngon trước, thì bát cơm sẽ vơi đi nhanh trông thấy.
  • Nếu giáo viên dạy học sinh từng chủ điểm nhỏ một, sau mỗi chủ điểm có test nho nhỏ thì học sinh vừa dễ học, giáo viên vừa nắm được rõ ràng tiến triển của học sinh mà điều chỉnh giáo án cho phù hợp với tình hình; chứ nếu cứ dạy thiên địa cuối học kì mới test một lần thì có muốn điều chỉnh gì phải đợi đến khoá sau mới áp dụng được, khoá vừa rồi coi như học sinh gặp xui.
  • Huấn luyện viên giỏi là người có khả năng theo dõi sát trận đấu và điều chỉnh đấu pháp ngay cho hợp với diễn biến trận đấu.

Làm project bắt đầu từ đâu?

Nếu đánh cờ quan trọng khai cuộc thì làm project cũng vậy. Giả sử project có DB làm backend. Sau khi phân tích yêu cầu và biết phải làm những gì rồi (WHAT), tiếp theo phải thực hiện như thế nào (HOW) cái gì trước cái gì sau? Có nhiều ý kiến, người thì bảo bắt đầu từ giao diện người thì bảo bắt đầu từ thiết kế cơ sở dữ liệu. Dưới đây là qui trình F3D:

  1. Thiết kế DB schema để xác định các resource.
  2. Tạo dữ liệu giả sao cho càng hợp với thực tế càng tốt.
  3. Vì cốt lõi của web là ánh xạ các cặp {URL, phương thức HTTP} -> resource bên trong, nên nếu là web thì trước tiên hãy dựa trên resource để thiết kế các cặp {URL, phương thức HTTP}. Đây là cách làm theo phong cách REST lấy resource làm trung tâm, được coi là rất hiệu quả hiện nay.
  4. Dựa trên dữ liệu giả để làm phần hiển thị trước, ví dụ liệt kê danh sách (index) hoặc hiển thị chi tiết một phần tử từ DB (show). Lúc này vì có sẵn dữ liệu nên có thể thiết kế giao diện sao cho bắt mắt và dễ sử dụng. Xong phần này là đã có cái để demo cho khách hàng xem.
  5. Phần hiển thị chính là khung sườn. Dựa vào khung sườn này suôn sẻ hơn khi làm tiếp phần tạo (new, create), sửa (edit, update), và xóa (delete).

Qui trình trên cho thấy kết quả ngay, mỗi ngày đều cho ra cải tiến từng chút và dễ nhận ra. Việc mọi người tham gia project thấy được tiến triển của project một cách trực quan là rất quan trọng, giúp nâng cao tinh thần mọi người vì ai cũng thấy thành quả của công sức mình bỏ ra hàng ngày.

Không hẳn ngẫu nhiên mà người ta gọi MVC theo thứ tự M -> V -> C:

  1. Ưu tiên làm M trước.
  2. Sau đó chú trọng làm phần giao diện hiển thị dữ liệu lấy từ M sao cho hợp lí, bắt mắt, dễ dùng.
  3. C chỉ kết nối M và V, làm sao cho đơn giản, tránh viết business logic và hiển thị trong C.

Có nhiều cách để tạo dữ liệu giả, ví dụ Ruby có thư viện Faker rất tiện. Chương trình viết bằng PHP, Java, Erlang... đều dùng ké Faker được vì dữ liệu giả chỉ cần tạo ra 1 lần và không cần tạo động khi chương trình chạy. Do đó, đoạn mã tạo dữ liệu giả có thể viết bằng Ruby.

Đọc thêm

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Ngoc Dao

102 bài viết.
366 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
76 8
Làm thế nào để nâng cấp trang web mà không làm gián đoạn dịch vụ? Đây là câu hỏi phỏng vấn các công ty lớn thường hỏi khi bạn xin vào vị trí làm lậ...
Ngoc Dao viết hơn 4 năm trước
76 8
White
47 1
Bài viết này giải thích sự khác khác nhau giữa hai ngành khoa học máy tính (computer science) và kĩ thuật phần mềm (software engineering), hi vọng ...
Ngoc Dao viết hơn 4 năm trước
47 1
White
45 3
Nếu là team leader, giám đốc công ty hay tướng chỉ huy quân đội, vấn đề cơ bản bạn gặp phải là “hướng mọi người đi theo con đường bạn chỉ ra”. Thử...
Ngoc Dao viết hơn 4 năm trước
45 3
Bài viết liên quan
White
2 1
Lập trình đôi (pair programming) là hình thức lập trình trong đó 2 người cùng hợp tác làm việc trên cùng màn hình (có thể khác bàn phím v.v.). Bài ...
Ngoc Dao viết hơn 4 năm trước
2 1
White
38 4
Như thường lệ, là chuyên mục quảng cáo, bài viết được đăng lại từ https://thefullsnack.com/posts/frameworkorlibrary.html Hôm nay mình nghe podca...
Huy Trần viết gần 2 năm trước
38 4
White
9 2
Trong quyển sách Beyond Java, xuất bản vài năm trước có đoạn:Java has characteristics that many of us take for granted. You can find good Java deve...
Ngoc Dao viết hơn 4 năm trước
9 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
102 bài viết.
366 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!