LEAN
Sau thế chiến thứ II, Nhật Bản đang trong tình trạng rất cần xây dựng lại nền kinh tế và hạ tầng. Năng lực sản xuất của nước Nhật hầu hết đã bị phá hủy, bao gồm cả những năng lực trong ngành công nghiệp ô tô. Khi Nhật Bản giải quyết việc xây dựng lại này, họ không chỉ tập trung vào các tòa nhà và cơ sở hạ tầng; họ đã xem xét những cách khác nhau để làm mọi thứ. Với sự cố gắng đó, hệ thống sản xuất Toyota (Toyota Production System: TPS) đã ra đời. Được tạo ra bởi Taiichi Ohno và Sakichi Toyoda (Người sáng lập Toyota), quá trình quản lý và sản suất này tập trung vào các khái niệm quan trọng sau:
Trong khi những khái niệm này có vẻ rõ ràng và thực tế, TPS (Toyota Production System) là cách đầu tiên thực hiện những nguyên tắc này như một triết lý quản lý. TPS là bước khởi đầu của phương pháp sản xuất Lean tổng quát hơn đã được giới thiệu với thế giới phương Tây vào năm 1991 thông qua một cuốn sách do Womack, Jones và Roos viết, The Machine That Changed the World. Cuốn sách này dựa trên một nghiên cứu kéo dài 5 năm MIT thực hiện trên TPS, và nó đã được ghi nhận là đã đưa các khái niệm và quy trình Lean ra ngoài ngành công nghiệp ô tô. Tại sao lại dành thời gian này để nói về những cuốn sách quản lý đã quá cũ? Lean đã dẫn đến sự phát triển phần mềm Agile, đã đóng vai trò như một kim chỉ nam định hướng cho các hoạt động của Công nghệ thông tin.
AGILE
Agile là một áp dụng của các nguyên tắc Lean vào việc phát triển phần mềm. Tất cả các kinh nghiệm áp dụng trong việc tối ưu hóa quy trình sản xuất thông thường đã được áp dụng cho lĩnh vực phần mềm.
12 nguyên tắc sau là cốt lõi của Tuyên ngôn Agile:
+ Làm hài lòng khách hàng bằng cách phân phối sớm và liên tục các phần mềm có giá trị với họ
+ Mọi thay đổi trong như cầu của khách hàng phải luôn được tiếp nhận, cho dù sự thay đổi diễn ra vào phút chót.
+ Phần mềm đang hoạt động vẫn phải luôn được đánh giá thường xuyên (theo ngày thay vì tuần)
+ Trong suốt quá trình hoạt động, giữa khách hàng và lập trình viên phải luôn giữ liên lạc thường xuyên
+ Phải luôn động viên, tin tưởng lập trình viên để họ có thể hoàn thành công việc tốt hơn
+ Trao đổi trực tiếp hiệu quả hơn tất cả phương tiện giao tiếp nào khác
+ Cách duy nhất để đo lường tiến độ là một phần mềm đang hoạt động. Đây là điểm duy nhất mà người dùng cuối có thể đánh giá tiến trình của nhóm phát triển
+ Phát triển bền vững đòi hỏi phải có khả năng duy trì nhịp độ liên tục.
+ Phần mềm có kỹ thuật xuất sắc và thiết kế tốt luôn đòi hỏi phải sự thận trọng và sự chú ý liên tục
+ Sự đơn giản, nghệ thuật tối đa hóa khối lượng công việc chưa hoàn thành, là điều cần thiết.
+ Một nhóm phải thường xuyên nêu ý kiến về cách trở nên hiệu quả hơn và điều chỉnh cho phù hợp.
Những nguyên lý cốt lõi này là nguồn gốc chính của phong trào Agile.
Mary Poppendieck và Tom Poppendieck đã viết "Lean Software Development: An Agile Toolkit" vào năm 2003, dựa trên các nguyên tắc Agile và nhiều năm kinh nghiệm phát triển phần mềm của họ. Cuốn sách này vẫn được coi là một trong những cuốn sách hay nhất về các ứng dụng thực tế của Agile.
Phát triển phần mềm dựa trên nguyên tắc Agile cho ra kết quả khác biệt hoàn toàn so với nguyên tắc Waterfall. Với Waterfall, một dự án chưa hoàn thiện không thể nào được triển khai. Nhưng đối với Agile,khung thời gian thay đổi: Agile sử dụng khoảng tăng thời gian nhỏ hơn (thường là 2 tuần), hoặc "sprint", bao gồm toàn bộ quá trình phân tích, thiết kế, coding và thử nghiệm nhưng trên một khía cạnh nhỏ của ứng dụng.
Mục tiêu là hoàn thành một tính năng cho mỗi sprint, do đó, với Agile, nếu bạn chỉ hoàn thành 40% dự án, bạn vẫn có 100% code có thể sử dụng được.
Bằng cách tận dụng Agile, bạn có thể liên tục gia tăng giá trị phần mềm và thích ứng nhanh với sự thay đổi.
Nếu một tính năng được đề xuất hoặc không còn cần thiết, thì dự án có thể nhanh chóng thực hiện những điều chỉnh đó.