Giới thiệu
Phát triển phần mềm theo cách tiếp cận truyền thống (waterfall) là tiếp cận tuyến tính, thực hiện tuần tự các bước theo kế hoạch. Tuy nhiên trong thực tế rất nhiều rủi ro không thể tiên lượng trước.
Một trong những lý do chính đó là khách hàng thường xuyên thay đổi yêu cầu (requirement) trong quá trình sản xuất. Nguyên nhân thường do khách hàng không biết mình cần gì cho đến khi trực tiếp sử dụng sản phẩm hoặc cũng có thể những yêu cầu ban đầu đã lỗi thời và không đáp ứng được mục tiêu kinh doanh. Khi yêu cầu thay đổi, toàn bộ các bước thiết kế và phát triển, kiểm thử, viết lại tài liệu…phải tiến hành lại. Kết quả là sản phẩm làm ra không đúng yêu cầu của khách hàng, bị trễ thời gian, hoặc quá ngân sách.
Thành công của Apple thường được cho là nhờ vào một tay thiên tài Steve Job. Tài tiếp thị siêu đẳng. Khả năng thiết kế vượt trội, quan tâm đến từng chi tiết...
Tất cả đều chính xác. Tuy nhiên Iphone đã không phải là Iphone nếu thiếu đi một nền tảng kho ứng dụng khổng lồ đằng sau đó. Nền tảng này cho phép khách hàng tự quyết định ứng dụng nào có ích cho nhu cầu của họ và cải đặt theo sở thích cả nhân.
Điều đặc biệt là thay vì tuyển hàng trăm ngàn kỹ sư để xây dựng hệ thống triển khai phần mềm cứng nhắc, nền tảng này được xây dựng bởi nhiều nhóm kỹ sư phần mềm độc lập. Thay vì mở rộng tổ chức để giải quyết bài toán nền tảng, Apple đã thu nhỏ vấn đề thành những mảnh ghép rất khiêm tốn mà các đội nhóm nhỏ, độc lập có thể thực hiện theo quy trình lặp lại, trực tiếp ghi nhận phản hồi khách hàng và nhanh chóng đưa ra những tính năng cải tiến đến với khách hàng.
Tesla là một câu chuyên khác, khi Tesla có thể bổ sung tính năng mới vào những chiếc ô tô đã bán bằng cách tải phần mềm mới cho xe, như chức năng phanh tự động, hệ thống tự động lái hay chương trình đỗ xe do robot điều khiển. Những tính năng này cũng có ở Audi, Mercedes-Benz nhưng điểm khác biệt là Tesla Model S được thiết kế để liên tục nâng cấp trong quá trình sử dụng. Tesla có thể bổ sung từ xa các chức năng quan trọng cho những chiếc ô tô đang được sử dụng.
Xa hơn là câu chuyện của Microsoft khi Microsoft luôn gặp vấn đề với chất lượng của phần mềm cũng như tốc độ phát hành sản phẩm mới. Bằng cách chia các vấn đề phức tạp thành các nhiệm vụ độc lập cho phép từng nhóm nhỏ có thể chuyển giao sản phẩm tới khách hàng trong những chu kỳ ngắn, Microsoft đã rút ngắn thời gian từ vài năm để cho ra mắt một phiên bản xuống còn vài tuần đến vài tháng với chất lượng tốt hơn hẳn. Tất cả những ví dụ ở trên đều cho thấy những điểm chung trong tư duy về phát triển sản phẩm của những ông lớn ở thung lũng Silicon đó là:
- Luôn chia nhỏ những bài toán phức tạp thành những nhiệm vụ độc lập có thể được thực hiện bởi những nhóm nhỏ liên chức năng
- Tốc độ release nhanh - sản phẩm đến tay người dùng nhanh chóng - Liên tục lấy feedback người dùng theo chu kỳ
- Sản phẩm liên tục cải tiến và thích ứng với sự thay đổi
- Fail fast: tính năng nào không hữu ích có thể bỏ ngay tránh lãng phí chi phí phát triển ... Đằng sau những tư duy này đó là một triết lý mà chúng ta sẽ tìm hiểu ở video tiếp theo."
Khoá học này chúng ta sẽ cùng tìm hiểu về những khó khăn gặp phải với các phương pháp phát triển phần mềm truyền thống, sau đó chúng ta sẽ thử xem các gã khổng lồ ở Silicon phát triển phần mềm ra sao? Giới thiệu tuyên ngôn Agile và phương pháp thực hành Scrum.
Bạch Ngọc Toàn
Họ và tên: Toàn Bạch
Nghề nghiêp: Senior Fullstack .NET Developer
Kỹ năng: Có hơn 8 năm làm dự án về ASP.NET MVC, WebForm, Web Service, Web API, ASP.NET Core, Angular SQL Server, JQuery, SOLID, Design Pattern, DevOps.