Một trong các thắc mắc hết sức cơ bản của những người học Scrum là vai trò của thiết kế trong Scrum là gì?

Nếu Scrum đòi hỏi phải cho ra phần mềm trong vòng 30 ngày (1 Sprint) thì làm sao thiết kế vững được? Hệ thống của tôi rất lớn, vì thế có phần lõi gồm các component được dùng đi dùng lại nhưng không phải là chức năng chạy được, nhưng để phát triển phần lõi đó cần rất nhiều thời gian; liệu có phải làm một vài sprint waterfall trước cho phần framework, rồi đến khi phát triển các service thật mới áp dụng Scrum? v.v.

Các câu hỏi trên sẽ không được trả lời thỏa đáng nếu như không hiểu được cách tiếp cận design trong Agile: simple design. Ý tưởng chính của việc co ngắn các iteration trong Agile là “bạn không cần biết toàn bộ thông tin, vẫn có thể bắt tay vào xây dựng chức năng chạy được”, vì thế không nhất thiết phải có được thiết kế hoàn chỉnh ngay từ đầu mà ta vẫn có thể code ngay. Thực tế, giả định là phải có thiết kế hoàn chỉnh ngay từ đầu đồng nghĩa với việc ta phải nắm được toàn bộ thông tin về sản phẩm ngay từ đầu, điều này là không khả thi, và cũng không phải là cách tiếp cận đặc trưng của Agile. Mời bạn xem thêm slide Simple Design dưới đây để hiểu thêm chi tiết:

[slideshare id=13321974&doc=simpledesign-120614050527-phpapp02]