Một danh sách được tuyển chọn các bài luận kỹ thuật phần mềm có ảnh hưởng lớn đã khơi dậy cuộc thảo luận rộng rãi trong cộng đồng lập trình viên về những tác phẩm đã thay đổi căn bản cách tiếp cận lập trình của họ. Bộ sưu tập này trải dài hơn ba thập kỷ, từ tác phẩm No Silver Bullet của Fred Brooks năm 1986 đến những bài viết gần đây hơn như Parse, don't validate của Alexis King từ năm 2019.
Danh sách này đã tạo được tiếng vang mạnh mẽ trong cộng đồng lập trình viên, thúc đẩy họ chia sẻ thêm những tác phẩm có ảnh hưởng khác và tranh luận về ứng dụng thực tế của những ý tưởng nền tảng này. Nhiều lập trình viên nhận thấy những bài luận này đóng vai trò như những nguyên tắc hướng dẫn định hình các quyết định lập trình hàng ngày và lựa chọn kiến trúc của họ.
Các Bài Luận Quan Trọng Theo Năm Xuất Bản:
- 1986: "No Silver Bullet" của Fred Brooks
- 2000: "The Joel Test" và "Choices" của Joel Spolsky
- 2009: Brad Fitzpatrick về phân tích cú pháp đầu vào của người dùng
- 2010: "Application compatibility layers" của Raymond Chen
- 2014: "Don't Put Logic in Tests" của Erik Kuefler
- 2015: "Choose Boring Technology" của Dan McKinley
- 2019: "Parse, don't validate" của Alexis King
- 2020: "A little bit of plain Javascript" của Julia Evans
- 2022: "I've locked myself out of my digital life" của Terence Eden
Sức Mạnh Của Parse, Don't Validate
Bài luận Parse, don't validate năm 2019 của Alexis King đã nổi lên như một tác phẩm được yêu thích nổi bật trong cộng đồng lập trình viên, mặc dù tương đối ít được biết đến bên ngoài các vòng tròn lập trình hàm. Khái niệm này ủng hộ việc chuyển đổi dữ liệu thành các kiểu hạn chế hơn trong quá trình xác thực, thay vì chỉ đơn giản kiểm tra xem dữ liệu có đáp ứng các tiêu chí nhất định hay không.
Cách tiếp cận này ngăn chặn nhiều lỗi lập trình phổ biến bằng cách làm cho các trạng thái bất hợp pháp không thể được biểu diễn trong mã. Khi kết hợp với nguyên tắc make illegal states unrepresentable, nó tạo ra một khung làm việc mạnh mẽ để viết phần mềm đáng tin cậy hơn. Kỹ thuật này đặc biệt hiệu quả trong việc ngăn chặn các lỗi xảy ra khi dữ liệu không hợp lệ vượt qua các kiểm tra xác thực nhưng gây ra vấn đề sau này trong chương trình.
Chọn Công Nghệ Nhàm Chán Thay Vì Tiên Tiến
Bài viết Choose Boring Technology của Dan McKinley tiếp tục ảnh hưởng đến cách các nhóm phát triển đưa ra quyết định công nghệ. Bài luận giới thiệu khái niệm innovation tokens - ý tưởng rằng các nhóm có khả năng hạn chế trong việc áp dụng các công nghệ mới, chưa được chứng minh và nên sử dụng những token này một cách khôn ngoan.
Nguyên tắc này khuyến khích các lập trình viên sử dụng các công nghệ đã được thiết lập tốt, đáng tin cậy cho hầu hết ngăn xếp của họ, dành việc thử nghiệm cho những lĩnh vực mang lại giá trị cao nhất. Cách tiếp cận này giảm độ phức tạp và gánh nặng bảo trì trong khi vẫn cho phép đổi mới chiến lược ở những nơi quan trọng nhất.
Cuộc Tranh Luận Về Triết Lý Kiểm Thử
Bài viết Don't Put Logic in Tests của Erik Kuefler đã tạo ra cuộc thảo luận đáng kể về các thực hành tốt nhất trong kiểm thử. Trong khi một số lập trình viên ủng hộ nguyên tắc giữ cho các bài kiểm thử đơn giản và không có logic, những người khác lại cho rằng mã kiểm thử nên được đối xử với sự cẩn thận như mã sản xuất.
Cuộc tranh luận tập trung vào việc tìm ra sự cân bằng phù hợp giữa tính đơn giản và khả năng bảo trì của kiểm thử. Những người chỉ trích cho rằng vấn đề thực sự không phải là logic trong kiểm thử, mà là việc sử dụng các kiểu nguyên thủy như chuỗi ở những nơi các kiểu cụ thể hơn sẽ ngăn chặn hoàn toàn các lỗi. Điều này kết nối trở lại với triết lý parse, don't validate và các cách tiếp cận phát triển hướng kiểu.
Bảo Mật Kỹ Thuật Số Và Khuyết Điểm Con Người
Bài viết I've locked myself out of my digital life của Terence Eden đề cập đến một mối quan tâm ngày càng tăng trong thế giới kỹ thuật số của chúng ta. Bài luận khám phá điều gì xảy ra khi các biện pháp bảo mật thuật toán trở nên mạnh mẽ đến mức không thể tính đến hoàn cảnh hoặc tình huống khẩn cấp của con người.
Trong thế giới tương tự nhàm chán - tôi khá chắc chắn rằng tôi sẽ có thể thuyết phục một con người rằng tôi là người mà tôi nói tôi là. Nhưng khi mọi thứ được bảo mật bởi một thuật toán không thể xâm phạm - tôi đã hết may mắn.
Điều này làm nổi bật sự căng thẳng giữa bảo mật và khả năng tiếp cận, đặc biệt có liên quan khi ngày càng nhiều dịch vụ loại bỏ giám sát của con người để ủng hộ các hệ thống tự động. Những tác động này mở rộng ra ngoài sự bất tiện cá nhân đến các câu hỏi về quyền kỹ thuật số và quyền truy cập trong các tình huống khẩn cấp.
Tài nguyên bổ sung được cộng đồng khuyến nghị:
- " The Grug Brained Developer " (grugbrain.dev)
- " The Parable of the Two Programmers " của Neil W. Rickert
- " Software Quality at Top Speed " của Steve McConnell
- " An Investigation of the Therac-25 Accidents " của Nancy Leveson
- " They Write the Right Stuff " của Charles Fishman
- Nguyên tắc " Make illegal states unrepresentable "
Những Đóng Góp Của Cộng Đồng Và Những Viên Ngọc Ẩn
Cuộc thảo luận đã tiết lộ những tác phẩm có ảnh hưởng khác không có trong danh sách ban đầu. The Grug Brained Developer đã trở nên phổ biến với cách tiếp cận hài hước về việc giữ cho phát triển phần mềm đơn giản, mặc dù phong cách viết kiểu người hang động có thể khó hiểu đối với những người không nói tiếng Anh bản ngữ.
Những tác phẩm lịch sử như cuộc điều tra của Nancy Leveson về các tai nạn Therac-25 và They Write the Right Stuff của Charles Fishman tiếp tục cung cấp những bài học có giá trị về độ tin cậy của phần mềm và hậu quả của các lỗi lập trình trong các hệ thống quan trọng.
Những bài luận này cùng nhau đại diện cho một sự chuyển dịch hướng tới phát triển phần mềm có tư duy và dựa trên nguyên tắc hơn. Chúng nhấn mạnh tính đơn giản, an toàn kiểu và hiểu biết về bối cảnh con người mà trong đó phần mềm hoạt động. Khi bối cảnh công nghệ tiếp tục phát triển nhanh chóng, những ý tưởng nền tảng này cung cấp nền tảng ổn định để đưa ra các quyết định kỹ thuật tốt hơn.
Tham khảo: The Software Essays that Shaped Me
