36 điểm bởi frogred8 2022-08-01 | 1 bình luận | Chia sẻ qua WhatsApp

Good Developer Experience

  • TL;DR
    Đừng quên làm cho lập trình viên hạnh phúc và duy trì niềm hạnh phúc đó.

# Trải nghiệm tốt cho lập trình viên (Developer Experience, DX) là gì

Trải nghiệm của lập trình viên là trải nghiệm trong suốt quá trình họ sử dụng hoặc phát triển sản phẩm.
Nhưng ở nhiều công ty, nó lại bị xếp sau UX (User Experience) về mức độ ưu tiên. Lập trình viên cũng là người dùng và họ cũng sử dụng sản phẩm.
Sự hài lòng và hạnh phúc của họ cực kỳ quan trọng đối với thành công của dự án. Lập trình viên hạnh phúc tạo ra phần mềm xuất sắc và ít có khả năng rời khỏi đội ngũ hơn.
Chúng tôi định nghĩa trải nghiệm tốt cho lập trình viên bằng 4 yếu tố dưới đây.

  1. Kiến trúc phù hợp
    Nếu kiến trúc quá đơn giản, bạn sẽ phải chịu đau đớn về sau; nếu quá phức tạp, bạn sẽ đau ngay từ bây giờ.
    Cần lựa chọn kiến trúc có cân nhắc đến quy mô dự án và quy mô đội ngũ. Kiến trúc tốt khó bị phá vỡ, có chu kỳ phản hồi ngắn và có khả năng chịu đựng tốt.

  2. Công cụ tốt
    Hãy tự động hóa những phần có thể. Công việc lặp đi lặp lại rất mệt mỏi.

  3. Quy trình hỗ trợ sau phát triển
    Quy trình này nên vận hành như một danh sách kiểm tra tự động và cung cấp các bước nhất quán. Quy trình được định nghĩa rõ ràng sẽ giúp ích cho việc đào tạo đội ngũ.
    Nếu công ty đủ lớn, hãy sử dụng các quy trình như QA, triển khai, phản hồi, onboarding, v.v.

  4. Văn hóa đội ngũ không độc hại
    Hãy xác định mục đích của công ty. Kiếm tiền không nên là mục tiêu duy nhất.
    Văn hóa là brainware quan trọng nhất (phần mềm chạy trong đầu) mà bạn có thể cài đặt vào công ty và đội ngũ của mình.
    Mọi quyết định do lập trình viên đưa ra đều được lọc qua brainware đã được cài đặt đó.
    Nếu họ không đồng ý với brainware đó, họ sẽ phớt lờ nó.

# Vì sao cần có trải nghiệm tốt cho lập trình viên

## Đội ngũ có trải nghiệm tốt cho lập trình viên có năng suất cao và thể hiện các đặc điểm sau:

  1. Cảm nhận về tác động
    Họ hiểu rằng công việc không chỉ đơn thuần là kiếm tiền. Họ biết công việc của mình quan trọng và giúp cải thiện cuộc sống của người khác.

  2. Tinh thần làm chủ và trách nhiệm
    Họ chịu trách nhiệm cho thành công. Mọi thành viên trong đội đều phải cảm thấy có trách nhiệm với thành công của công ty.

  3. Mục tiêu chung
    Đội ngũ, bộ phận và toàn bộ công ty cùng chia sẻ những mục tiêu chung.

  4. Sự tử tế và trung thực
    Chúng tôi gọi đây là văn hóa 'hey bro'. Chúng tôi đề cao sự chân thành với tinh thần tôn trọng lớn lao.

  5. Chấp nhận thất bại
    Lập trình viên cần dũng cảm và dám chấp nhận rủi ro. Tuy nhiên, rủi ro luôn phải được tính toán, và lập trình viên cần biết mỗi công việc có thể gây ra bao nhiêu vấn đề.

## Đặc điểm của một nền văn hóa có trải nghiệm tệ cho lập trình viên:

  1. Chỉ tay đổ lỗi
    Các thành viên trong đội đổ lỗi cho nhau về những việc làm sai. Đây là điều rất có hại nhưng lại xảy ra thường xuyên.

  2. Trừng phạt nặng nề khi thất bại
    Ví dụ như một người quản lý nói rằng nếu không kịp deadline thì bạn có thể bị sa thải...

  3. Crunch time không bao giờ thay đổi và đội ngũ luôn trong tình trạng quá tải

  4. Sự thù địch và bất định
    Cạnh tranh không lành mạnh giữa các đội. (Ví dụ: người này giỏi hơn tôi nên được thăng chức)

  5. Trách nhiệm bị pha loãng
    Ở các công ty lớn, bạn có thể cảm thấy như không ai phải chịu trách nhiệm cả. Cần rất nhiều can đảm để nói 'xin lỗi, tôi đã làm hỏng chuyện'. Có khả năng nhận trách nhiệm là điều rất quan trọng.

# Những vấn đề mà trải nghiệm tốt cho lập trình viên có thể giải quyết

  • Tích lũy tri thức
  • Product-market fit sai lệch
  • Đội ngũ thiếu động lực
  • Tư duy 'không phải việc của tôi'
  • Sản phẩm thất bại
  • Khách hàng không hài lòng
  • Sự đứt gãy kết nối giữa business và IT
  • Văn hóa đội ngũ độc hại
  • Chất lượng code kém
  • Chi phí gia tăng
  • Công việc vô nghĩa

# Cách triển khai trải nghiệm tốt cho lập trình viên

Vào giữa những năm 1980, có 'Scope Triangle' do Dr. Martin Barnes tạo ra. Nó cho thấy mối quan hệ giữa ba lực cơ bản.

thời gian, tiền bạc, chất lượng

Tam giác này có nghĩa là để tăng chất lượng thì phải điều chỉnh tiền bạc hoặc thời gian. (người dịch: nguyên văn đã được chỉnh nhẹ để dễ hiểu) Tuy nhiên, chúng tôi cho rằng đó không phải cách nó vận hành trong thực tế. Cần bổ sung chi phí cảm xúc vào tam giác đó.

Khi lập trình viên phải ở lại làm muộn để hoàn thành công việc, thứ phải đầu tư không chỉ là thời gian. Một phần khác của khoản đầu tư đó là chi phí cảm xúc. Có được trải nghiệm tuyệt vời cho lập trình viên sẽ giúp kiểm soát loại chi phí cảm xúc này. Nếu muốn lập trình viên hạnh phúc, hãy giữ chi phí cảm xúc ở mức thấp.

# Những cạm bẫy phổ biến của trải nghiệm tốt cho lập trình viên

  1. Cung cấp cho lập trình viên quá nhiều thông tin quá sớm.
  2. Cung cấp quá ít thông tin cho lập trình viên khi họ cần thêm thông tin.
  3. Lạm dụng quy trình có thể dẫn đến tư duy 'mọi thứ đều phải khớp'.
  4. Xu hướng over-engineering
  5. Agile = cái cớ để bắt lập trình viên làm nhiều việc hơn

1 bình luận

 
youngiggy 2022-09-19

Cảm ơn bạn đã dịch!