Bàn về đạo đức nghề lập trình

94

Chào các bạn,

Đạo đức có lẽ là một trong những bài học sớm nhất của mỗi người. Không biết các bạn thế nào chứ từ bé mình đã được dạy “sống phải có có đạo đức”, thậm chí mình còn được dạy điều đó trước khi mình thực sự hiểu được “đạo đức là gì”.

Đạo đức là gì?

Đạo đức là một từ Hán Việt, được dùng từ xa xưa để chỉ một thành tố trong tính cách và giá trị của mỗi con người. Đạo có nghĩa là con đường, Đức có nghĩa là tính tốt hoặc những công trạng tạo nên. Khi mình nói một người có đạo đức ý là nói người đó có nếp sống chuẩn mực với xã hội, có nét đẹp trong đời sống và cả tâm hồn.

Đạo đức nghề nghiệp là gì?

Đạo đức nói chung thì là chuẩn mực của xã hội. Còn đạo đức nghề nghiệp là những chuẩn mực trong nghề nghiệp mà mình nói đến, ở mỗi ngành nghề lại có chuẩn mực khác nhau.

Ví dụ ở đạo đức trong nghề giáo dục là:

  • Không gian lận trong thành tích học tập, thi đua
  • Luôn giúp đỡ học sinh, sinh viên của mình
  • Đối xử công bằng với tất cả học sinh, sinh viên của mình

Đạo đức trong nghề y:

  • Lấy việc cứu chữa người bệnh là trên hết
  • Kê thuốc đúng liều lượng và an toàn
  • Chữa bệnh vì đúng lương tâm, không chữa vì đồng tiền

Bản thân mình là một developer thôi nên chỉ có thể kể ra được một số chuẩn mực tiêu biểu của nghề y và nghề giáo. Còn thực tế thì bộ chuẩn mực này còn nhiều hơn nhiều nhé.

Đạo đức trong nghề lập trình

Đây chính là phần quan trọng mà mình muốn nhấn mạnh trong bài viết này – Đạo đức nghề lập trình.

Như bạn thấy rồi đó, công nghệ đang dần làm thay đổi cuộc sống của chúng ta bằng cách có mặt trong tất cả các lĩnh vực trong xã hội. Từ kinh tế, chính trị, giáo dục, y tế cho tới vận tải, du lịch, giải trí,… nói chung là không chừa bất kỳ một ngành nghề nào mà không có sự góp mặt của công nghệ cả. Điều này khiến cho các anh em lập trình viên như chúng ta cảm thấy thật vinh dự và tự hào. Nhưng càng vinh dự, tự hào bao nhiêu thì trách nhiệm cũng lớn bấy nhiêu.

Câu nói của bác Ben khiến mình vô cùng ấn tượng

“Quyền lực càng cao, trách nhiệm càng nhiều”

Bác Ben, Spider-Man 

Thật vậy, xin kể một câu chuyện do mình bịa ra để chứng minh điều này.

Một developer phát triển phần mềm giao dịch ngân hàng nhưng chẳng may quên một dấu chấm phẩy, gây Exception và làm sai sót trong các phiên giao dịch. Trong khi công ty X sử dụng dịch vụ của ngân hàng này để trả lương cho anh A, vì tính năng giao dịch bị lỗi nên ngân hàng mặc dù đã ghi nhận công ty X đã trả lương nhưng tài khoản của anh A vẫn không nhận được tiền. Vậy là anh A bị mất lương tháng này, không có tiền trả tiền nhà trọ, không có tiền đưa bạn gái đi chơi, tệ hơn, anh A còn bị bạn gái bỏ vì bị nghi ngờ mang tiền đi “nuôi em gái” khác. Anh A chán nản, sinh ra nghĩ quẩn và làm liều…

Vậy là chỉ từ câu chuyện của một dấu chấm phẩy đã đưa số phận của anh A sang một trang mới.

Mặc dù câu chuyện trên là hư cấu, nhưng không hẳn là không có những chuyện như vậy xảy ra. Trong thực tế, đã từng xảy ra những tình huống mà developer chúng ta vô tình “giết người”. Vâng, giết người đấy bạn không nghe lầm đâu.

Xin tiếp tục được lấy dẫn chứng như sau

  • Sự kiện cỗ máy Therac-25 gây ra 6 tai nại thảm khốc trong những năm từ 1985 đến 1987 chính là câu chuyện nổi tiếng nhất về việc những dòng code giết người. Therac-25 là một cỗ máy xạ trị cho bệnh nhân ung thư được sản xuất vào năm 1982. Do sai lầm trong việc code và kiểm thử, máy chiếu phóng xạ quá liều, làm chết 4 người, bị thương 2 người.
  • Năm 1994 ở Scotland, lỗi phần mềm dẫn đến một vụ tai nạn máy bay, giết chết 29 người.
  • Tháng 6 năm 2010, con worm máy tính Stuxnet được các chuyên viên Semactec tìm thấy. Con worm “vô hại” này được biết là có khả năng thâm nhập và phá hoại các lò phản ứng hạt nhân. Stuxnex lây lan khá rộng ở Iran, nhưng chưa rõ có lò phản ứng nào bị nổ hay thiệt hại vì nó chưa.
  • Cơ quan quản lý thực phẩm và dược phẩm Hoa Kỳ (FDA) đã xác nhận sự liên quan giữa các vấn đề phần mềm của máy bơm thuốc tiêm truyền với hơn 700 ca tử vong và 20 000 ca bị thương nặng từ năm 2005 đến 2009.

Mặc dù để xảy ra những sự việc đáng tiếc như vậy trách nhiệm không hoàn toàn thuộc về các developer, nhưng cũng không thể nói rằng chúng ta vô tội. Giá như chúng ta cẩn thận hơn một chút, giá như chúng ta chịu khó test thêm 1 case nữa, giá như chúng ta tập trung hơn một chút nữa thì đã có thể cứu sống hàng chục sinh mạng, tiết kiệm hàng nghìn đô la, vun vén hạnh phúc lứa đôi cho hàng tỷ người trên thế giới. Nói thì nghe to tát vậy thôi chứ tực tế thì nó đúng là như vậy đấy các developer ạ.

Lập trình cần phải có đạo đức như thế nào?

Sau một hồi các dẫn chứng thực tế lẫn bịa đặt, chắc bạn cũng nắm được phần nào về trách nhiệm và tầm ảnh hưởng của một developer tới xã hội rồi chứ. Vậy làm sao để developer chúng ta trở thành những người có đức đạo đức nghề nghiệp, luôn luôn code có đạo đức. IEEE-CS và ACM có một bài viết về code đức như thế này Software Engineering Code of Ethics and Professional Practice.

Nội dung bài viết này này gồm 8 nguyên tắc về public interestclient & employersản phẩmsự phán xétquản lýnghề nghiệpđồng nghiệp và bản thân.

Mình sẽ tóm tắt lại mốt số ý quan trọng như sau

  1. Chỉ approve sản phẩm khi tin rằng nó an toàn: Tuyệt đối không cung cấp các sản phẩm không an toàn, làm giảm chất lượng cuộc sống, hay khi biết chắc chắn rằng nó sẽ ảnh hưởng xấu tới người khác.
  2. Sẵn sàng đóng góp kĩ năng của mình cho các mục đích tốt: Theo cách hiểu của mình thì là giúp đỡ các bạn newbie, đóng góp cho các phần mềm mã nguồn mở, nâng cao cảnh giác của mọi người về bảo mật, vv.
  3. Thành thật về kinh nghiệm và kĩ năng: Không khai man CV, không chém gió về khả năng của mình, không nhận những gì mà mình không làm. Theo tui nghĩ thì nếu không tuân theo nguyên tắc này, ảnh hưởng tiêu cực cho bạn nhiều hơn là cho cộng đồng.
  4. Giữ bí mật thông tin có được trong quá trình làm việc: Giữ bí mật các thông tin của công ty, thông tin của team, thông tin vận hành sản phẩm, thông tin khách hàng,…
  5. Không chấp nhận các job ngoài luồng mà ảnh hưởng đến công việc chính: Nếu có nhận các job ngoài công ty thì hãy tranh thủ thời gian buổi tối và cuối tuần để làm việc, đừng làm nó trong lúc làm việc ở công ty.
  6. Cố gắng tối đa để đưa ra sản phẩm chất lượng cao, với một acceptable cost và schedule: Không phóng đại deadline, không vẽ thêm việc để làm, không charge tiền khách hàng quá mức.
  7. Trả lương công bằng: Ngược lại là một nhà quản lý, phải đảm bảo việc trả lương công bằng cho developer.
  8. Luôn không ngừng nâng cao bản thân: Dev phải cầu thị, luôn học hỏi để nâng cao trình độ kĩ thuật và kinh nghiệm của bản thân.

Kết luận

Ngành nghề nào cũng vậy, cũng cần phải có đạo đức, đặc biệt là các ngành nghề ảnh hưởng nhiều tới xã hội như công nghệ thông tin, giáo dục, y tế, thực phẩm thì lại càng phải đề cao tinh thần đạo đức nghề nghiệp. Bởi nếu để ra sai sót dù nhỏ thì hậu quả chúng khó mà đoán trước được. Các cụ dạy cấm có sai “sai một ly, đi một dặm”.

Tài liệu tham khảo