# 12: Code is design

Thử tưởng tượng rằng ngày mai bạn thức dậy và nhận ra mình đang theo học ngành xây dựng, một ngành đã làm nên bước đột phá của thế kỷ. Hàng triệu con robot giá rẻ, cực kì nhanh có thể chế tạo vật liệu từ không khí, chi phí gần như bằng không và có thể tự sửa chữa. Hơn thế nữa, chúng có thể đưa ra một kế hoạch chi tiết cho dự án cũng như tự xây dựng mà không cần sự can thiệp của con người, với chi phí là không đáng kể.

Chúng ta có thể tưởng tượng tác động của nó đến ngành xây dựng, nhưng điều gì sẽ xảy ra theo chiều ngược lại? Các kiến trúc sư và các nhà thiết kế sẽ thay đổi như thế nào khi chi phí xây dựng không đáng kể ? Ngày nay, mô hình mô phỏng bằng máy tính và mô hình vật lý được xây dựng và được kiểm tra nghiêm ngặt trước khi được đầu tư xây dựng. Liệu chúng ta có thấy phiền muộn khi chi phí cho việc xây dựng về cơ bản là miễn phí? Nếu như 1 thiết kế sụp đổ, đó sẽ chẳng là vấn đề gì lớn — khi đó tìm hiểu điều gì sai và những con robot ma thuật của chúng ta sẽ xây dựng thêm một cái khác. Với những mẫu lỗi thời, hay chưa được hoàn thiện sẽ được phát triển bằng cách liên tục xây dựng và cải thiện dựa trên sự gần đúng của thiết kế hoàn chỉnh. Một người bình thường có thể sẽ gặp khó khăn để phân biệt một thiết kế dở dang và một thiết kế hoàn chỉnh.

Và rồi, khả năng dự đoán thời gian của chúng ta sẽ dần biết mất. Chi phí xây dựng sẽ dễ dàng tính toán hơn so với chi phí thiết kế — chúng ta biết chi phí xấp xỉ của việc lắp đặt dầm, và chúng ta cần phải lắp bao nhiêu cái dầm. Khi việc dự đoán dường như là chẳng còn cần thiết nữa thì những công việc thiết kế ít tính dự đoán sẽ dần chiếm ưu thế. Kết quả được tạo ra nhanh hơn, nhưng sự đáng tin cậy của những kết quả đó cũng mất dần đi theo thời gian.

Tất nhiên, vẫn có áp lực của nền kinh tế cạnh tranh. Với việc loại bỏ các chi phí xây dựng, một công ty có thể nhanh chóng hoàn thành một thiết kế đạt được từ lợi thế trên thị trường. Các thiết kế với tiến độ nhanh sẽ trở thành động lực chính của các công ty kỹ thuật. Chắc chắn với những người không có hiểu biết sâu về thiết kế sẽ thấy một phiên bản vô giá trị, chỉ thấy lợi thế của việc phát hành sớm và nói: “Nhìn nó có vẻ đủ tốt đấy.”.

Một số các dự án sinh tử sẽ siêng năng hơn, tuy nhiên trong nhiều trường hợp, khách hàng sẽ học cách chịu đựng bằng cách sống chung các thiết kế không hoàn chỉnh. Các công ty luôn có thể đưa các con robot ma thuật để “sửa chữa” các toà nhà và các phương tiện có lỗi mà họ đã bán. Tất cả những điều này chỉ ra một kết luận trái ngược đáng kinh ngạc rằng: tiền đề duy nhất của chúng ta là giảm đáng kể chi phí xây dựng, với kết quả có chất lượng tệ hơn.

Chúng ta không nên ngạc nhiên vì câu chuyện này trước đó đã diễn ra trong phần mềm. Nếu chúng ta chấp nhận code là thiết kế — một quy trình sáng tạo chứ không phải là quy trình cơ học — thì khủng hoảng phần mềm đã được giải thích. Chúng ta bây giờ có một cuộc khủng hoảng về thiết kế: nhu cầu về những thiết kế chất lượng, được xác nhận đã vượt quá khả năng của chúng ta để tạo ra chúng. Áp lực này khiến việc sử dụng thiết kế không hoàn chỉnh là khá lớn.

May thay, mô hình này cũng có những thứ giúp cho chúng ta có thể trở nên tốt hơn. Mô phỏng vật lý giống như những thử nghiệm tự động; thiết kế phần mềm sẽ không thể hoàn hảo cho đến khi nó vượt qua được các thử nghiệm. Để khiến cho các thử nghiệm hiệu quả hơn, chúng ta đang tìm cách để kiềm chế trong không gian trạng thái khổng lồ của các hệ thống lớn. Cải thiện ngôn ngữ và thực hành thiết kế cho chúng ta niềm hy vọng. Cuối cùng, có một thực tế không thể chối cãi là: những thiết kế tuyệt vời được tạo ra bởi những nhà thiết kế vĩ đại làm chủ được công việc của họ. Với code cũng vậy.