Các thực hành TDD và Agile có thể hứa hẹn sẽ tạo ra một giải pháp tối ưu không? (Hoặc thậm chí là một giải pháp "tốt"?)
Không chính xác. Nhưng, đó không phải là mục đích của họ.
Các phương pháp này chỉ đơn giản cung cấp "lối đi an toàn" từ trạng thái này sang trạng thái khác, thừa nhận rằng những thay đổi là tốn thời gian, khó khăn và rủi ro. Và quan điểm của cả hai thực tiễn là đảm bảo rằng ứng dụng và mã đều khả thi và được chứng minh là đáp ứng các yêu cầu nhanh hơn và thường xuyên hơn.
... [TDD] trái ngược với phát triển phần mềm cho phép thêm phần mềm mà không được chứng minh là đáp ứng yêu cầu ... Kent Beck, người được cho là đã phát triển hoặc 'khám phá lại' kỹ thuật, tuyên bố năm 2003 rằng TDD khuyến khích đơn giản thiết kế và truyền cảm hứng cho sự tự tin. ( Wikipedia )
TDD tập trung vào việc đảm bảo mỗi "đoạn" mã thỏa mãn các yêu cầu. Cụ thể, nó giúp đảm bảo rằng mã đáp ứng các yêu cầu có sẵn, trái ngược với việc để các yêu cầu được điều khiển bởi mã hóa kém. Nhưng, không có gì hứa hẹn rằng việc thực hiện là "tối ưu" theo bất kỳ cách nào.
Đối với các quy trình Agile:
Phần mềm làm việc là thước đo chính của tiến trình ... Vào cuối mỗi lần lặp, các bên liên quan và đại diện khách hàng xem xét tiến độ và đánh giá lại các ưu tiên nhằm tối ưu hóa lợi tức đầu tư ( Wikipedia )
Agility không tìm kiếm một giải pháp tối ưu ; chỉ là một giải pháp làm việc - với mục đích tối ưu hóa ROI . Nó hứa hẹn một giải pháp làm việc sớm hơn là sau này ; không phải là một "tối ưu".
Nhưng, điều đó ổn, bởi vì câu hỏi là sai.
Tối ưu trong phát triển phần mềm là mục tiêu mờ, di chuyển. Các yêu cầu thường là thay đổi liên tục và đánh đố với những bí mật chỉ xuất hiện, khiến bạn bối rối, trong một phòng hội nghị đầy sếp của sếp. Và "lòng tốt nội tại" của kiến trúc và mã hóa của giải pháp được phân loại theo ý kiến chia rẽ và chủ quan của các đồng nghiệp của bạn và của cấp trên quản lý của bạn - không ai trong số họ thực sự có thể biết bất cứ điều gì về phần mềm tốt.
Trong Ít nhất, TDD và Agile thực hành thừa nhận những khó khăn và cố gắng để tối ưu hóa cho hai điều đó là khách quan và đo lường được: . Working v Không-Working và v Sớm sau..
Và, ngay cả khi chúng tôi đã "làm việc" và "sớm hơn" như các số liệu khách quan, khả năng tối ưu hóa của bạn đối với họ chủ yếu phụ thuộc vào kỹ năng và kinh nghiệm của một đội.
Những điều bạn có thể hiểu là những nỗ lực tạo ra các giải pháp tối ưu bao gồm những thứ như:
v.v.
Cho dù mỗi người trong số những điều thực sự tạo ra các giải pháp tối ưu sẽ là một câu hỏi tuyệt vời để đặt!