Mối liên hệ giữa Scrum và các công cụ, kỹ thuật khác

Lời nói đầu

Chào các bạn, mình là Hoàng Đức Quân, hiện đang làm việc ở VTI Japan. Có thể các bạn thấy cái tên này quen quen ở bên 1 nền tảng blog IT khác. Mình xác nhận đó là mình. Rất mong các bạn đón đọc mình ở cả bên này cũng như bên kia

Và chủ đề khai bút ở blog IT của VTI của mình sẽ là về Scrum support các công cụ kĩ thuật khác như thế nào. Rất mong các bạn đọc và gửi bình luận cho mình.

Đặt vấn đề

Bạn có PMP, PMI-ACP, PSM level I hay PSM level II? Hay là đã từng có kinh nghiệm làm PM ở 1 dự án hay nhiều hơn? Xin chúc mừng! Giờ bạn đã có 1 số kiến thức liên quan để quản lý và mô hình phát triển phần mềm!

Tuy nhiên, bạn có những cái ấy chưa chắc bạn đã có 1 cách giao tiếp hiệu quả với các thành phần của Scrum Team. Hoặc bạn có nhưng bằng kinh nghiệm với lý thuyết là chính chứ không thật sự hiểu đúng. Trong phạm vi hẹp thì giữa PM với dev của 1 dự án IT, ắt hẳn các bạn cũng gặp trường hợp: "PM này dốt bỏ xừ. Tech như thế này mà dám lead bọn tôi"(Tất nhiên điều này cũng đúng nếu khách hàng có than vãn ông PM làm sai hết yêu cầu).

Và có 1 lý do khác là Scrum và Agile không phải là 1. Ngoài Scrum ra, Agile còn rất nhiều phần khác như Extreme Programming(XP), Kanban, Nexus,.....

Với tất cả các lý do trên, mình mặc dù đã thực hành Scrum hơn 2 năm và có chứng chỉ PSM II, nhưng mình vẫn quyết định học thêm về nội dung của Professional Scrum Developer để hiểu về Scrum có mối quan hệ thế nào với các kỹ thuật, khái niệm khác trong phát triển phần mềm.

Mối quan hệ giữa Scrum và các khái niệm, kĩ thuật khác trong phát triển phần mềm

Well, Agile đã có 1 tuyên ngôn:

Cá nhân và sự tương tác hơn là quy trình và công cụ

Và là 1 framework quản lý kế thừa triết lý Agile, Scrum cũng khá là linh hoạt nếu kết hợp với các khái niệm, kĩ thuật khác miễn là không có sự xung khắc.

Đã có tiền đề là sự hòa bình thì liệu có thể hỗ trợ support nhau không nhỉ? Tất nhiên là có thể chứ. Có thể lấy ví dụ ở đây gồm có Kanban, XP, Dev-Ops, Testing,... Ở nội dung bài này thì với mình, những cái cần nhất với developer là XP, DevOps và testing.

Extreme Programming(XP)

XP là một phương pháp phát triển phần mềm hướng đến việc nâng cao chất lượng phần mềm và khả năng đáp ứng với thay đổi yêu cầu người dùng. XP sẽ đẩy mọi phase trong quá trình phát triển phần mềm lên cao nhất có thể. Và tất nhiên sẽ kết hợp ổn với Scrum để có thể đưa ra những Increment có giá trị tốt nhất.

Đặc trưng hay nhất của XP chính là pair programming. Từng được tiếp xúc với pair programming từ 1 engineer Nhật rất giỏi, mình phải nói thật mình bị nghiện và cuồng pair programming (vừa cười vừa mếu). Nói đơn giản thì pair programming sẽ gồm 2 programmer ngồi với nhau trên cùng 1 máy tính để code. 1 người sẽ đứng chỉ dẫn và người còn lại sẽ ngồi code. Sau đó sẽ đổi phiên: người điều hướng sẽ code, còn người code sẽ thành người điều hướng. Ưu điểm của việc này là 2 developer sẽ giao tiếp với nhau liên tục nhằm giải quyết 1 vấn đề, đồng thời có được sự tôn trọng lẫn nhau(cụ thể hơn là tình trạng "ông cứ ngồi phán và bắt tôi ngồi viết mà chả ra kq gì. có giỏi thì vào lội bùn đi"). Còn nhược điểm thì do đây là phương pháp thuộc XP nên sẽ khá tốn sức lực.

Với việc pair programming, hiệu quả nhất sẽ là 25 phút code - 5 phút nghỉ - đổi vai trò và bắt đầu 25 phút mới,... Có thể đổi vai trò giữa chừng nếu gặp phải vướng mắc khá to. Trường hợp xấu nhất thì nên kết thúc sau 2 tiếng và lưu lại tiến độ của vấn đề cho việc tự suy nghĩ sau đó hoặc lần pair programming sau.

(Gợi ý nhỏ: về lý thuyết thì đây là cách để 1 anh đã code lâu năm nhiều kinh nghiệm nhưng độc thân kèm 1 bạn nữ trẻ, mới vào nghề và cũng độc thân =)) Vấn đề còn lại là cách giao tiếp, truyền đạt và ấn tượng tốt. Hihi)(cái này là lý thuyết mình đưa ra chứ chưa kiếm được bạn nữ nào học code để thực hành nhé(cười))

DevOps, CI-CD,...

Với DevOps hay CI-CD, chúng ta sẽ quen thuộc hơn về mặt khái niệm.

Scrum được sinh ra như 1 mô hình tối ưu để phát triển phần mềm. Và trong mô hình Scrum, 1 Sprint có độ dài không quá 1 tháng, và thực tế thì thường từ 1 tuần tới 1 tháng. Trong 1 thời gian ngắn như vậy, các phần hoạt động được của sản phẩm IT phải được release nhanh và đều nên các quy trình DevOps cũng như CI-CD rất quan trọng.

Với 1 công ty có thế mạnh về Cloud như VTI, đây là 1 nội dung vô cùng quan trọng trong công việc của mỗi developer, engineer của công ty vì với khái niệm phát triển phần mềm hiện đại, DevOps-Infra-Cloud là những khái niệm đi chung với nhau không thể tách rời.

Testing

Developer cần gì phải quan tâm đến testing? Ừ câu hỏi này cũng từng có trong đầu mình, cho đến khi mình bị yêu cầu viết unit test trong các dự án/sản phẩm trước mình có tham gia. Mà những dự án đó không hề có tester chuyên biệt. Rất chuẩn Scrum là không có tester chuyên biệt mà Developer phải chịu trách nhiệm cho chất lượng của sản phẩm. Còn với giới IT thì chúng ta đã nghe bao nhiêu chuyện Tester và Dev ở 2 chiến tuyến rồi nào? :v

Vậy nên khái niệm về testing cũng được Scrum support và cũng hỗ trợ lại Scrum với mục đích là tạo ra chất lượng tốt nhất cho từng increment được tạo ra.

Với nội dung của PSD thì các bạn cần chú ý kĩ khái niệm với quy tắc của unit test và khái niệm của integration test, đồng thời cũng là practice viết test trước khi viết code để thỏa mãn test.

Kết

Tự kiểm điểm thì bài này có phần mình viết kĩ quá, có phần lại viết qua loa. Rất mong các bạn hiểu được những điều mình muốn truyền tải và tìm tòi thêm để trau dồi kĩ năng của bản thân.

Cuối cùng mình xin phép được khoe kq thi PSD của mình =))

1 個のコメント

  • Leave a Reply