Chia nhỏ User story theo Vertical slice (miếng bánh cắt dọc) là như thế nào?

Le ricette dei giudici di Bake Off Italia | Torta arcobaleno, Torte, Torte  alimentari
Vertical slice

User story là gì?

  • Là một người dùng, tôi có thể xem trang bình luận của bài viết nào đó.
  • Là một người dùng, tôi có thể sửa thông tin cá nhân của tôi.
  • Là một người dùng, tôi có thể xem danh sách sản phẩm.

Trên đây là một vài ví dụ về user story. Vậy user story thường là một tính năng mà người dùng có thể sử dụng trên sản phẩm, dự án mà bạn làm ra cho họ.

Kinh nghiệm khi tạo User story, thường sẽ cố gắng tạo User story càng nhỏ càng tốt.

Ví dụ cho một User story không được tốt cho lắm:

  • Là một người dùng, tôi muốn mua hàng.

Có thể thấy User story trên quá chung chung, và bao quát cả quá trình mua hàng. Nên thay vì thế, nên tạo các User story nhỏ như sau:

  • Là một người dùng, tôi muốn tìm kiếm áo ba lỗ bằng từ khóa.
  • Là một người dùng, tôi muốn xem danh sách danh mục áo ba lỗ.
  • Là một người dùng, tôi có thể custom text trên cái áo tôi đang xem.
  • Là một người dùng, tôi có thể thêm cái áo vào giỏ hàng.
  • Là một người dùng, tôi có thể tiến hành checkout.

Nhưng không phải lúc nào cũng tạo được User story tối ưu ngay từ đầu, khi dự án vừa khởi động, và bạn chưa có quá nhiều thông tin để tạo User story chính xác, nhưng chúng ta vẫn phải bắt đầu planning bằng các high level task/user story.

Hoặc đơn giản, là user story đó không thể tạo nhỏ/chi tiết hơn được nữa.

Đây là lúc chúng ta phải chia nhỏ User story đó thành subtask, vậy, khi chia nhỏ sẽ có 2 cách:

  • Horizontal slice
  • Vertical slice.

Nhìn lại hình đại diện của bài viết, bạn có thể thấy miếng bánh đc cắt dọc, miếng bánh bao gồm nhiều layers (lớp). Khi cắt bánh sinh nhật, bạn cắt bánh cũng như vậy, bạn không cắt ngang, mà cắt dọc.

Như vậy, xem một User story là cả một cái bánh, thì Horizontal slice: là cắt cái bánh theo lớp, một miếng được cắt ra chỉ có một lớp, và Vertical slice: là cắt bánh theo cách bình thường, một miếng bánh sẽ bao gồm tất cả các lớp.

Vậy ưu điểm của Vertical slice là gì? Nói về miếng bánh, một người ăn miếng bánh cắt dọc sẽ thưởng thức được toàn bộ hương vị của cái bánh, mà ko cần quan tâm miếng bánh to, hay nhỏ. Nói về User story, khi chia nhỏ bằng cách vertical slice, một sub task được tạo ra sẽ bao gồm tất cả các khía cạnh kĩ thuật cần thiết để hoàn thành sub task đó: UI/UX, Database, Backend api, Frontend, etc., vậy subtask đó khi hoàn thành sẽ demo được cho user, và QA có thể tiến hành testing dễ dàng.

Ngược lại, khi chia nhỏ User story bằng Horizontal slice, sẽ có một sub task chỉ dành cho Database, một sub task chỉ dành cho UI, một sub task chỉ dành cho Frontend development. Khi đó một sub task khi done, gần như không có cách nào để QA có thể test sub task đó nếu họ không có kiến thức chuyên môn về subtask đó (ví dụ QA làm sao test database được design đúng hay chưa?). Horizontal slice có một ưu điểm, mình thấy đó là dễ tạo. Nhưng lại khó về testing, demonstrating sau này.

Tóm lại, nên chia cái bánh bằng cách cắt dọc, hay chia một User story bằng vertical slicing sẽ tốt hơn cho việc QA, showcase, demo sau này.

Reference:
www.visual-paradigm.com

Giữ phẩm chất của mình khi phải lấp vào vị trí của người khác để lại

group of people using laptop computer

Ai chả từng phải thay thế vào vị trí của người khác để lại. Trong trường hợp của mình:

  • Vì miếng ăn. Mình là lập trình viên. Mình nhảy việc vì lương. Mình phải thay thế một người khác vì họ chuẩn bị ‘nhảy’ sang dự án khác cùng công ty.
  • Vì sự nghiệp. Mình nhảy việc cũng vì cả sự nghiệp. Mình nhìn thấy cơ hội phát triển bản thân khi lấp vào vị trí này.

Nếu hành động theo bản năng, ngó xem người ta làm thế nào, rồi làm theo.

  • Bắt chước về chuyên môn. Trước khi nhảy ra khỏi hẳn dự án hiện tại, anh chàng đó sẽ chỉ cho mình hiện tại ảnh làm như thế nào, khái quát có, cụ thể có, thậm chí cầm tay chỉ việc cũng có luôn.
  • Bắt chước trong cách giao tiếp. Mình qua Singapore làm, mới vào không quen biết ai, thêm tiếng Anh không phải tiếng mẹ đẻ và mình cũng chẳng ‘pro’ tiếng Anh.

Làm sao để làm tốt nhưng không mất ‘chất’:

  • Học hỏi về chuyên môn, nhưng hãy sáng tạo. Mình sẵn sàng tiếp nhận những cái có sẵn, và tiếp tục bảo trì (giữ cho nó chạy đúng, sửa lỗi nếu có). Phát triển nó lên thậm chí thay đổi nếu bạn thấy cần thay đổi. Tất nhiên nó liên quan cả vấn đề chuyên môn, trình độ. Nhưng ít nhất mình thấy cần tự tin, tin vào khả năng của mình.
  • Học hỏi về cách giao tiếp, nhưng bạn có cách giao tiếp của bạn. Người trước có cách giải thích vấn đề đậm tính chuyên môn nhưng rất dễ hiểu. Vì trong nhóm làm việc chung, mỗi người một vị trí. Tất nhiên mình phải học hỏi. Người trước kiểu lạnh lùng, trả lời cộc lốc. Nhưng cái cộc lốc đó không phải là lí do họ thành công trong vị trí này, thậm chí nếu có giúp họ thành công, mình tự tin vẫn giao tiếp tốt mà không cộc lốc. 

Cái việc ‘hãy là chính mình’ nó không lạ gì, mình muốn cụ thể hóa nó trong trường hợp này. Cũng là một cách ‘thương mình’.

Chúc mọi người cuối tuần vui vẻ!

Khánh.

MVP là gì?

Hôm nay bàn về MVP cho vui.

MVP (Minimum Viable Product) chỉ một sản phẩm được hoàn thiện ở mức tối thiểu để có thể dùng được.

Ví dụ:

Để mở một quán cà phê, cần:

MVP 1:

  • Cà phê, đường, sữa
  • Ly, muỗng, ống hút
  • Ghế ngồi
  • Mặt bằng

Sau một thời gian, bạn pha cà phê có tâm, ko dùng cà phê dởm, ly muỗng được rửa sạch sẽ, tươi cười với khách, bạn có một số tiền đủ để thực hiện tiếp MVP 2:

  • Dùng loại cà phê xịn hơn.
  • Ly, muỗng loại xin hơn.
  • Bán thêm thuốc lá, kẹo singum.
  • Chuyển mặt bằng đến chỗ tốt hơn, có chỗ che mua che gió.
  • V.v…

Vì sao MVP quan trọng? => để sử dụng tối ưu tài nguyên: chi phí và công sức.

Ở trên là một ví dụ chung chung, cụ thể áp dụng MVP trong lập trình:

  • Xác định sản phẩm mình làm ra cho ai xài (người dùng cuối): người dùng phổ thông (từ già trẻ lớn bé), hay người dùng ngách (chỉ chuyên vào một đối tượng người dùng nhất định)
  • Tính năng sản phẩm mình làm cần tối thiếu đáp ứng được gì để người dùng có thể dùng được. Giao diện website/app chưa cần đẹp, trải nghiệm có thể chưa tốt, tốc độ có thể chưa nhanh. Nhưng PHẢI DÙNG ĐƯỢC.

=> Điều này để tránh việc lan man vào các thứ ko cần thiết như:

  • Dùng công nghệ, thư viện, framework gì?
  • Deploy ở đâu, AWS hay Google Cloud Platform?
  • Quy trình tự động deploy như thế nào, dùng app gì để quản lý task.
  • Có phải bắt khách hàng đăng ký đăng nhập hay không?
  • Có phải đi thuê QA/tester hay không?
  • Tester là nam hay nữ, có phải 3 vòng chuẩn đẹp hay không?

Thế nào là một MVP tốt?

  • Làm được điều khách hàng cần.
  • Thu được feedback từ khách hàng, từ đó cải thiện dần sản phẩm.
  • Release càng nhanh càng tốt.

Ở đây mình chưa bàn về marketing, vì sản phẩm tốt đến đâu mà ko có marketing thì cũng vứt.

Kết bài tại đây.

Chuyện ngủ

Ở Việt Nam thì dậy rất sớm một phần vì ông con tui 5h dậy chơi rồi, cái nữa rất thích ra Highlands ngồi mỗi sáng nhâm ly trà.

Nhịp sinh hoạt của Singapore thì khác. Giờ làm cty tui nói thì 9h chứ 10h mới vác mặt lên cũng chả sao. Ra food court ăn sáng thì mấy cô chú cũng mở quán hơi bị trễ. Kết quả là tui theo luôn nhịp sinh hoạt này trong tháng vừa rồi. Cảm giác không healthy chút nào.

Thêm cái nữa, thấy ko thích ngủ đêm nữa. Mong tới sáng dậy thôi.

Sống khiêm tốn lại thôi nào, có khi chúng ta không giỏi như mình nghĩ!

Từ coder đến developer - Tôi đi code dạo

Đã bao giờ bạn làm được một việc gì đó hay ho, khiến mình cảm thấy tự hào, thấy mình giỏi giang chưa? Ví dụ như:

Thế nhưng, đã bao giờ bạn thử hỏi: Liệu bản thân mình có thực sự giỏi giang như vậy hay không? Thành công của mình, được bao nhiêu % là nhờ người khác, nhờ vào may mắn?

View original post 757 more words

Gửi file ebook đến tất cả các thiết bị sử dụng app Kindle trong 1 nốt nhạc

[Có thể bạn không biết]
(English below)
Nếu bạn là tín đồ đọc sách bằng thiết bị Kindle hoặc sử dụng app Kindle của amazon bằng smartphone, ipad:

Bạn có thể tạo 1 email kindle cho riêng mình, sau này có sách gì muốn đồng bộ vào tất cả thiết bị chỉ cần gửi attachment cho vào email đó là được.

[Maybe you do not know]
If you are a fan of Kindle device or using Amazon’s Kindle app with a smartphone or tablet:

You can create a kindle email for yourself, so you can sync any downloaded books (mobi, pdf…) to all devices just by sending those files as attachments to that kindle email.

https://www.amazon.com/gp/help/customer/display.html?nodeId=201974220