RDBMS – Master Tables and Transaction Table

Master table (マスタテーブル)
– Ít thay đổi
– Lưu dữ liệu "master" (マスタデータ)
– Ví dụ: dữ liệu kho, người dùng
– Dùng để lưu dữ liệu của hệ thống
– Không index

Transaction table (data)
– Thay đổi thường xuyên hơn
– Lưu giữ liệu transaction của hệ thống như giao dịch, sales
– Cần index
– (được tổ hợp từ các (bảng) dữ liệu (master) khác

Advertisements

Members’s performance, salary and rewards in a Scrum team.

Câu hỏi: Tôi muốn so sánh member của một Scrum team này với member của một Scrum team khác để biết ông nào hơn không nào, qua đó quyết định tới mức lương của hai ông.

Bối cảnh: Một công ty nhà nước thực hành với việc lập một vài nhóm chạy theo hướng Agile/Scrum.

Ý kiến của mình:
– Đánh giá cả team, thay vì cá nhân.
– Sau đó chia thưởng cho cả team đó

So sánh member của một team này với team khác: Không làm (làm được không?)

Xem hai điểm sau:

1. Promotions and demotions

Instead of subjectively selecting somebody for a promotion, consider creating a company job marketplace where interested candidates apply for open jobs.
Clarify and publicize the skills, abilities and knowledge required for a certain job title.
Allow the teams to exclude team members that don’t fit in.

2. Salaries and bonuses

Adjust salaries based on current market averages and yearly inflation.
Allocate bonuses to the team, let them decide the shares.
Include a feedback loop from the product’s success, using e.g. profit sharing.
Give bonuses as an exception, not as the norm. Don’t use large amounts.

Tham khảo: https://mozaicworks.com/blog/do-agile-teams-have-performance-reviews/

How important is transparency in IT project management

Minh bạch (transparency) là gì?

  1. "Tính minh bạch"
  2. Rõ ràng
  3. Không có "undertable"
  4. Không có điều kiện ẩn

Ví dụ về sự không minh bạch

Ví dụ 1
Giám đốc và PM đặt 2 deadlines khác cho dự án. Một deadline công bố với team, một deadline còn lại, sau khi đã buffer được thông báo với khách hàng. Team members không biết tới deadline ẩn thứ hai này.

Ví dụ 2
Khách hàng, product owner nói "được" hay "không được với output của nhóm phát triển. Tuy nhiên, định nghĩa thế nào là được hay không được không được khách hàng/product owner phát biểu rõ ràng, không được viết/nói rõ trong các tài liệu dự án, chuẩn dự án, quy định dự án.

Ví dụ 3
Việc không có ground rule tốt, được sự đồng ý/đồng thuận của cả nhóm phát triển với khách hàng, product owner cũng thể hiện sự không minh bạch. Khi "rule" không rõ ràng, ai muốn làm gì cũng được, cho dù lợi cho cá nhân anh ta nhưng không lợi cho tổng thể. Lúc này, bản thân các cá nhân không hoàn toàn có lỗi.

Ví dụ 4
Chuẩn về chất lượng, giao diện giữa nhóm phát triển và khách hàng khác nhau, luôn cần điều chỉnh, thoả thuận khi demo, giao nộp sản phẩm.

Làm thế nào là/cho minh bạch?

1. Đừng giấu thông tin gì
2. Hạn chế trao đổi riêng
3. Luôn đi đến sự đồng thuận, thống nhất giữa số lớn thành viên liên quan
4. Nói cho đơn giản, dễ hiểu
5. Viết ra, tài liệu hoá
6. Khi conflict, cãi nhau: Xem lại hoặc update rules chung

Cụ thể hơn, mẹo và thực hành thế nào?

1. Chia sẻ thông tin

Chia sẻ thẳng thắn, cởi mở những thông tin liên quan đến dự án.
Mọi người trong dự án đều có nguồn thông tin ngang nhau, giống nhau để đảm bảo không hiểu khác nhau (có thể hiểu sai giống nhau)

2. Chủ nghĩa genba

"genba" nghĩa là "nơi làm việc". Chủ nghĩa genba được hiểu đơn giản là việc lấy nơi/người làm việc làm trung tâm tối ưu, tạo điều kiện tốt nhất cho người làm viêc tốt nhất. Việc minh bạch hoá là điều kiện tiên quyết để người thật việc thật ở genba cả thấy yên tâm, thoải mái làm việc hiệu quả.

3. Không có under table

Không giấu diếm gì. Những điều nhạy cảm và tế nhị như lương/thưởng, chế độ, conflict giữa các cá nhân nghiêm trọng, đánh giá nhân sự, tính xấu, hối lộ… có thể không được bàn công khai.
Những thông tin "cứng" về dự án như issue, tiến độ, yêu cầu công việc, thiết kế, điều kiện hoàn thành, điều khoản hoàn thành trong hợp đồng cần được chia sẻ rõ.

4. Không "đi đêm"

Việc có thoả thuận ngầm giữa một vài hay nhiều đối tượng liên quan không được chấp nhận.

Ví dụ,
a. Tester và developer thoả thuận ngầm không đưa ra lỗi của nhau
b. Các developers hardcode và không share việc đó cho members khác

5. Công khai báo cáo/chia sẻ
Báo cáo về dự án: Share bằng wiki, Google Drive để tất cả những người liên quan có thể nhìn thấy, và nhìn thấy thông tin giống nhau.
Việc nhìn thấy thông tin giống nhau quan trọng hơn việc (mọi người) đều thấy thông tin sai.
Tránh những chia sẻ/report bao gồm nội dung đánh giá con người, nhận xét xấu tới ai đó.

Công việc tồi: OK, nên report
Con người tồi: Không nên viết trong report
Việc tốt, người tốt: Nên khen công khai

6. Mọi người liên quan đều chia sẻ, báo cáo
Xem phần 5.
Những người liên quan có thể không phát ngôn, nhưng họ cần được truy cập vào thông tin báo cáo.

7. Hou-ren-sou
Những nội dung nói trong bài viết này là một phần của nguyên tắc cơ bản với người Nhật: hou-ren-sou (báo cáo, liên lạc, thảo luận)

Việc thực hiện hou-ren-sou tốt đảm bảo tính minh bạch được tăng cường.

8. Cộng tác với team, trên tinh thần hợp tác

Tâm lý nói dối vì sợ, giấu thông tin, chia sẻ một phần sự thật là phổ biến.
Để tránh điều này, hợp tác trên tinh thần giúp đỡ.
Sếp, người liên quan, người có quyền ảnh hưởng thay vì ra lệnh, hỏi vặn, trì triết… nên hợp tác, hỏi thông tin thật và tìm cách hợp tác cùng giải quyết.

Bằng cách này, nhóm phát triển (người thật, việc thật) cảm thấy yên tâm, nói thật hơn.

9. Nói thẳng, nói thật

Sự thật mất lòng. Nhưng vẫn cần tránh động tới cá nhân.
Giải quyết vấn đề trước. Nếu không được thì giải quyết con người.
Tập trung vào issue chứ không tập trung vào con người gây ra issue đó.

10. Công khai rủi ro, issues

Tài liệu hoá risk, issue register, để nó ở nơi mọi người nhìn thấy (báo cáo, wiki…)

​Tham khảo: https://www.scrumalliance.org/community/articles/2013/june/transparency-in-agile-product-development

Status/Lifecycle of a bug/issue/task

Status/Lifecycle of a bug/issue/task như sau:

*New*
Task mới được tạo, chưa assign cho ai

*In Progress (Assigned)*
Task đã assign, đang làm

*Resolved*
Task đã được làm xong bởi người được assigned, tự review xong. Chờ review chéo hoặc review từ cấp trên hay confirm từ khách hàng.

*Feedback*
Vì một lý do nào đó, task bị "trả lại" cho người tạo ra nó.
Ví dụ: Tester X tìm ra lỗi #6868 assign cho developer Y. Y kiểm tra lại và
thấy đó không phải là lỗi do mình gây ra. Khi đó Y sẽ "feedback" lại task
#6868 cho X để X assign cho người thích hợp.

*Incomplete*
Task thiếu thông tin, cần được làm rõ.
Ví dụ: Tester X tìm ra lỗi #6767 assign cho developer Y. Y không thể tái
hiện được lỗi đó. Khi đó Y sẽ mask task #6767 là "Incomplete" và assign cho X để X phân tích thêm.

*Closed*
Done. đóng task.

*Rejected*
Task sai. đóng lại.

*Pending*
Treo task, tạm thời chưa làm.
Có thể đẩy lùi task sang sprint sau nhưng không đóng task.

*Reopen*
Mở lại 1 task/issue đã đóng.
Ví dụ: Developer Y fixed xong lỗi #7070 và Tester X đã closed lỗi đó. Tuy nhiên sau đó Tester X phát hiện lỗi này chưa được fix hẳn. Khi đó Tester X reopen lại lỗi #7070.

*Verified*
Issue/lỗi đã được verified bởi tester X sau khi tiếp nhận báo cáo lỗi từ
phía khách hàng.

*Invalid*
Issue/lỗi sai. Failed alert. Close.

*Wontfix*
Không phải làm. Lý do "wontfix" có thể là: báo cáo sai, chưa cần thiết
phải làm/fix trong sprint hiện tại, tuy là lỗi nhưng có workaround nên chấp
nhận được, hoặc độ ưu tiên/cần thiết của task là thấp

*Duplicated*
Task bị trùng lặp với một task khác. Close.

*Closed*
Done, đóng task.

Chú ý:
Đây là những status cơ bản của một issue/ticket/bug.

Có thể đơn giản hoá vòng đời của task với các bộ status như sau:
1. New, In Progress, Resolved, Closed (Backlog.jp default status)

2. TODO, DOING, DONE (Basic Kanban)
3. TODO, DOING, VERIFYING, DONE (thêm Verifying: Kiểm tra)

​Tham khảo: ​
1. A life cycle of a bug:
http://www.bugzilla.org/docs/3.0/html/lifecycle.html

2. Design a workflow with Redmine:
<a href="http://www.redmine.org/projects/redmine/wiki/RedmineIssueTrackingSetup​" rel="nofollow">www.redmine.org/projects/redmine/wiki/RedmineIssueTrackin...</a>

How to write daily reports / Viết báo cáo ngày thế nào

How to write daily report
(dành cho IT staffs, developers)

Chú ý chung
Viết report hàng ngày, vào buổi chiều tối trước đi khi về
Viết thật ngắn
Nếu đề cập tới issue: ghi issue ID (Jira, backlog.jp…)
Nội dung daily report:
Ngày hôm nay đã làm gì?
Ngày mai sẽ làm gì
Có vấn đề gì, khó khăn gì cản trở công việc không?

Các chú ý khác
– Tập hợp report ở một nơi
– Dễ tìm
– Dễ đọc theo từng người
– Dễ đọc cho cả nhóm
– Vừa nhìn được tổng thể
– Dễ so sánh (tiến độ, issue) của lần viết trước và sau

Ai đọc report?
– Thành viên dự án
– Những người liên quan đến dự án
– Sếp, sếp của sếp
– Khách hàng

Viết report cho ai?
– Cho mình
– Cho tất cả những người liên quan

Tham khảo
Cách thực hiện Daily Scrum: https://www.mountaingoatsoftware.com/agile/scrum/daily-scrum