29 điểm bởi GN⁺ 2025-12-06 | 1 bình luận | Chia sẻ qua WhatsApp
  • Ở các công ty mang nợ kỹ thuật lớn, sự kém hiệu quả phát sinh do mã bị sao chép và framework lỗi thời
  • Trong quá trình triển khai dự án, mất niềm tin từ phía quản lý và sự kháng cự với thay đổi trong tổ chức là những rào cản chính
  • Nguyên nhân gốc rễ của nợ kỹ thuật là các yếu tố con người như yêu cầu không rõ ràng, lịch trình phi thực tế, ưu tiên công nghệ cũ, phản ứng ngắn hạn của lãnh đạo, cái tôi cá nhân
  • Không chỉ thành quả kỹ thuật mà cả việc quản lý nhận thức và giao tiếp cũng là yếu tố thiết yếu để dự án thành công
  • Ngoài năng lực kỹ thuật, kỹ sư còn cần có khả năng phối hợp trong tổ chức và điều hòa các mối quan hệ giữa con người

Vấn đề nợ kỹ thuật và mã sao chép

  • Ở một công ty tôi từng làm việc, tồn tại khoản nợ kỹ thuật nghiêm trọng với hàng triệu dòng mã, không có unit test, và sử dụng framework đã hơn 10 năm tuổi
    • Để chạy module chỉ dành cho Windows trên Linux, họ xử lý bằng cách copy-paste hàng trăm nghìn dòng mã
    • Vì vậy xuất hiện hai codebase, khiến mỗi lần thêm tính năng hay sửa lỗi đều phải làm riêng cho từng bên
  • Tình trạng này dẫn đến một cấu trúc không thể bảo trì, và về lâu dài khoảng cách giữa các phần mã ngày càng lớn

Nợ kỹ thuật do vấn đề con người

  • Các dự án xử lý nợ kỹ thuật rất khó thuyết phục ban lãnh đạo, và vì kết quả thường gần như không làm thay đổi tính năng nên thiếu thành quả dễ nhìn thấy
    • Dự án bị chậm tiến độ, dẫn đến mất niềm tin từ phía lãnh đạo
  • Bản chất của vấn đề không phải là công nghệ mà là thái độ con người và văn hóa tổ chức
    • Nhiều lập trình viên kháng cự thay đổi và an phận với cách làm cũ
    • Cấu trúc mã phản ánh tính cách và mức độ chấp nhận thay đổi của người viết ra nó
  • Nợ kỹ thuật phát sinh từ yêu cầu không rõ ràng, cam kết phi thực tế, lựa chọn công nghệ lỗi thời, quyết định dừng của lãnh đạo, lòng tự ái cá nhân
    • Đội ngũ càng có xu hướng né tránh thay đổi thì mã càng phản ánh đặc tính chống lại thay đổi
  • Nhiều lập trình viên đã làm theo cùng một cách suốt nhiều năm, thậm chí còn nói rằng “tôi không muốn học cái mới”
  • Trong môi trường như vậy, tốc độ nợ tích tụ nhanh hơn tốc độ dọn dẹp, nên trước khi giảm nợ thì việc ưu tiên là ngăn nợ tiếp tục chồng chất
    • Giống phép so sánh với triage (phân loại ưu tiên) trong phòng cấp cứu, trước hết cần đến giai đoạn “cầm máu”

Khoảng cách giữa thế giới lý tưởng và thực tế

  • Gần như không có môi trường lý tưởng nơi có thể giải quyết vấn đề kỹ thuật tách rời khỏi bối cảnh chính trị hay tổ chức
    • Hầu hết các dự án đều có những bên liên quan không thuộc kỹ thuật
    • Thái độ “cứ tin chúng tôi vì chúng tôi đang làm” sẽ không hiệu quả
  • Quản lý cách thành quả được nhìn nhận quan trọng không kém bản thân thành quả
    • Người không làm kỹ thuật thường không trực quan hiểu được sự cần thiết của việc xử lý nợ kỹ thuật, nên phải giải thích bằng giá trị định lượng và giá trị kinh doanh
    • Nếu lãnh đạo không có nền tảng kỹ thuật, cần đưa ra các con số và hiệu quả dễ thấy
  • Cuối cùng, việc đội ngũ trông có vẻ làm việc hiệu quả cũng quan trọng không kém năng suất thực tế

Năng lực cần có ở kỹ sư cấp cao

  • Ở cấp bậc senior trở lên, khả năng hợp tác liên phòng ban và điều hòa quan hệ con người là điều bắt buộc
    • Trong đào tạo khoa học máy tính, người ta không dạy cách xử lý tính cách, cái tôi, quản lý quan hệ như kiểu ‘làm việc với con người’
  • Ngay cả kỹ sư có năng lực kỹ thuật xuất sắc cũng có thể gặp khó với những vấn đề đòi hỏi thay đổi quy mô lớn và mang tính tổ chức
    • Năng suất cá nhân có thể cao, nhưng ảnh hưởng ở cấp tổ chức lại bị giới hạn
  • Vai trò ‘Heads up coder’ rất quan trọng
    • Đó là người vừa duy trì năng lực kỹ thuật sâu, vừa nhận diện sớm rủi ro dự án và điều phối đội ngũ
    • Thay vì làm nhanh một mình như một lõi đơn, họ đảm nhiệm vai trò dẫn dắt cả nhóm vận hành hiệu quả
    • Khác với kỹ sư thuần kỹ thuật, họ có thể hành động bằng cách đọc được cả bối cảnh tổ chức lẫn rủi ro

Tổng kết

  • Ở gốc rễ của vấn đề kỹ thuật luôn có con người
    • Phần lớn vấn đề kỹ thuật cuối cùng đều quy về con người, văn hóa và giao tiếp
  • Nợ kỹ thuật không phải là vấn đề của mã, mà là kết quả do mô thức hành vi và văn hóa của tổ chức tạo ra
    • Muốn giải quyết nợ kỹ thuật, trước hết cần có sự chấp nhận thay đổi ở cấp tổ chức và sự thấu hiểu từ lãnh đạo
  • Và ở những chặng đường sau của sự nghiệp sẽ còn có những vấn đề lớn hơn đang chờ đợi, những vấn đề không thể giải quyết chỉ bằng sự xuất sắc về kỹ thuật
    • Một kỹ sư senior thực thụ là người lãnh đạo cân bằng, xử lý được cả công nghệ lẫn sự thấu hiểu con người

1 bình luận

 
chebread 2025-12-07

Nếu muốn tìm hiểu kỹ hơn về vấn đề này, tôi khuyên bạn nên đọc Peopleware!