Ngôi sao phương Bắc của tôi trong phần mềm
(kristoff.it)Thứ tự ưu tiên khi phát triển phần mềm
- Phần mềm phải hữu ích với người dùng cuối, và hướng tới trở thành "phần mềm đáng để yêu"
- Phần mềm phải chính xác (correct). Phần mềm hoạt động sai sẽ làm giảm giá trị mà người dùng có thể nhận được
- Phần mềm phải dễ bảo trì và hiệu quả. Đây là tiêu chí để tránh lãng phí con người và tài nguyên tính toán khi cố gắng khai thác thêm nhiều giá trị hơn từ phần mềm
Sự vô nghĩa khi thứ tự ưu tiên bị đảo ngược
- Dù blockchain không có lỗi thì cũng không có ý nghĩa nếu đó là một vụ rugpull
- Dù ngôn ngữ đang dùng có an toàn bộ nhớ (memory-safe), thì cũng không có ý nghĩa nếu không có thiết kế vì tính đúng đắn và không có quy trình cuối cùng sẽ sửa hết mọi lỗi
- Dù phần mềm có một tầng tán cây trừu tượng tuyệt đẹp (canopy of abstractions), thì cũng không có ý nghĩa nếu nó vận hành tệ hại và không ai có thể bảo trì hay thêm tính năng mới
Đôi khi tôi cũng nản lòng, đôi khi đi sai đường, và đôi khi cố ý đi đường vòng, nhưng không ai có thể khiến tôi nhầm lẫn đích đến thực sự của mình với một mục tiêu thấp hơn.
Tôi coi trọng trải nghiệm của mình với tư cách là lập trình viên, nhưng tôi chỉ coi trọng nó chừng nào trải nghiệm đó giúp tôi tạo ra nhiều phần mềm hơn để người khác và các bạn có thể tận hưởng.
- Mục tiêu cuối cùng là tối đa hóa giá trị cho người dùng cuối, và mọi thứ khác chỉ là phương tiện để đạt được mục tiêu đó
- Đây là nguyên tắc quan trọng nhất trong phát triển phần mềm
1 bình luận
Ý kiến trên Lobste.rs
Tôi thích cách tiếp cận tương tự
Ngay cả những công cụ không “đáng yêu” như tua vít cũng có thể có độ tin cậy rất cao trong một thời gian rất dài. Tua vít bake lúc nào cũng là đầu bake, không có chuyện 1% xác suất nó biến thành tua vít dẹt khi lấy ra khỏi hộp đồ nghề rồi phải cất vào lấy lại. Thiết kế tay cầm cũng không thay đổi mãi mãi, và công cụ đã mua thì cứ thế dùng cho đến khi hỏng
Tôi mong sẽ có nhiều phần mềm trở nên như vậy hơn
Tôi tôn trọng và biết ơn những nhà phát triển giữ vững tiêu chí rằng “mục tiêu cuối cùng là tối đa hóa lợi ích cho người dùng cuối, còn mọi thứ khác đều phục vụ mục tiêu đó”, nhưng bản thân tôi không phải lúc nào cũng sống được như vậy. Tôi nghĩ phần mềm có những đối tượng mà ta phải chịu trách nhiệm một cách chính đáng ngoài người dùng cuối
Trong công việc, tôi làm phần mềm để nuôi gia đình, và dù khá thường đứng về phía người dùng, cuối cùng lòng trung thành của tôi vẫn nghiêng nhiều hơn về công ty trả tiền và gia đình mình.
Với các dự án cá nhân, tiêu chí là “việc này có đem lại ý nghĩa cho tôi không”, và sự thỏa mãn về nghệ thuật, thẩm mỹ, trí tuệ là quan trọng. Thường thì điều đó phù hợp với lợi ích của người dùng, nhưng cũng có thể tôi đánh giá sai lợi ích của họ, và ví dụ ngay cả khi có chứng minh rằng menu hamburger có hoạt ảnh tối đa hóa lợi ích, tôi vẫn cho rằng trong tác phẩm của mình mình có thể thực thi quyền lựa chọn thẩm mỹ để từ bỏ lợi ích đó
Cũng có trường hợp phải cân nhắc việc cố ý làm một phần phần mềm kém thân thiện với người dùng để ngăn họ làm ra những chuyện lố bịch gây hại cho chính người dùng trong công việc của họ.
Tôi từng bàn đến việc cố tình dựng những rào cản như vậy để một tính năng báo cáo cụ thể, vốn rất dễ bị tổn thương trước định luật Goodhart và có phạm vi tác dụng phụ rất lớn, sẽ mãi ở trạng thái “chưa xong” dù người dùng phần mềm có muốn đến đâu đi nữa
Nhờ bài viết này tôi mới biết Tiger Style giờ đã có website
Họ vừa nói “không ai có thể bảo trì được, đừng nói đến việc thêm tính năng mới” lại vừa nói “sửa mọi lỗi”, nhưng cuối cùng tôi vẫn không hiểu làm sao có thể sửa mọi lỗi mà không đóng băng phạm vi
Câu “dù blockchain không có lỗi mà là rug pull thì cũng vô nghĩa” gói được ba ý trong một câu
Việc nâng hiệu quả của một thứ sẽ vô nghĩa nếu tạo ra lỗi mới, và ngay cả như vậy thì cũng chỉ có ý nghĩa khi nó không phải là rug pull
Điều nổi bật là ở đây không hề có yêu cầu rằng phần mềm nhất thiết phải do con người viết. Tôi biết Kristoff là nhà phát triển cốt lõi của Ziglang nên điều này càng thú vị hơn
Tôi muốn tin rằng ngay cả khi dùng phát triển có AI hỗ trợ vẫn có thể tạo ra phần mềm đáp ứng những yêu cầu này.
Tự tay viết code cũng vui, mà hoàn thành được sản phẩm cũng vui, nhưng đôi khi hai điều đó xung đột với nhau.
Xin lỗi vì lại lôi chuyện AI vào, nhưng do mối quan hệ gần gũi giữa Kristoff và cộng đồng Zig, các lập trường mạnh mẽ của Zig, và cả chuyện dù sao thì tôi vẫn đang tiếp tục truyền bá Ziglang, nên khó mà tách riêng ra được
Việc một dự án có lập trường rõ ràng về mã được tạo bởi mô hình ngôn ngữ lớn không có nghĩa là mọi người trong dự án đó đều chia sẻ cùng một lập trường cho dự án này hay cho mọi dự án khác.
Đây không chỉ là chuyện riêng của Loris; với những quyết định kiểu này, đánh giá theo từng trường hợp là hợp lý