Một công ty phân phối có phần mềm quản lý kho tự viết. Nó chạy tốt tám năm, khớp đúng cách công ty làm việc, và không tốn phí thuê bao hằng tháng.
Người viết ra nó là một lập trình viên duy nhất. Anh ta nghỉ.
Từ hôm đó, không ai dám đụng vào. Một lỗi nhỏ cũng phải chờ. Muốn thêm một chức năng thì không biết hỏi ai. Người mới nhìn vào mã nguồn không hiểu vì sao chỗ này lại viết như vậy.
Công ty vẫn chạy, và mọi thứ dừng lại ở phiên bản của ngày anh ta đi.
Vì sao chuyện này rất phổ biến ở doanh nghiệp nhỏ
Không phải vì ai làm sai. Nó là kết quả của một chuỗi quyết định đều hợp lý:
Thuê một người thì rẻ hơn thuê một đội, và ở quy mô nhỏ thì một người đủ.
Người đó làm rất nhanh vì không phải giải thích cho ai, không phải theo quy ước chung, không phải viết tài liệu cho ai đọc. Tốc độ ấy là lý do công ty hài lòng.
Không ai đòi tài liệu, vì phần mềm đang chạy tốt. Viết tài liệu là chi phí hôm nay cho một vấn đề của tương lai — đúng cấu trúc đã nói ở bài bản vẽ hoàn công: chi phí ở hiện tại, lợi ích ở tương lai xa, và người hưởng lợi không phải người chi.
Chỉ khác là ở đây, người sẽ khổ không phải người mười năm sau — mà là chính công ty này, vào một ngày không báo trước.
Ba dấu hiệu nhận ra sớm
Chỉ một người biết mật khẩu quản trị và biết chỗ đặt máy chủ. Nghe hiển nhiên, nhưng rất nhiều nơi chỉ phát hiện điều này vào đúng ngày cần.
Không ai ngoài người đó từng sửa được một lỗi. Kể cả lỗi nhỏ. Nếu trong hai năm chưa có ai khác chạm vào, thì hệ thống đang phụ thuộc hoàn toàn.
Mã nguồn không nằm ở chỗ công ty kiểm soát. Đây là chỗ nghiêm trọng nhất và dễ kiểm nhất: mã nguồn đang ở đâu, tài khoản đứng tên ai, công ty có lấy được bản đầy đủ ngay hôm nay không.
Câu hỏi cuối cùng là câu nên hỏi trước khi ký hợp đồng, không phải sau — cùng loại với bốn câu trong bài về mua công nghệ: rời khỏi nó tốn bao nhiêu.
Gỡ mà không phải làm lại từ đầu
Phản ứng đầu tiên khi phát hiện tình trạng này thường là: viết lại. Đó gần như luôn là quyết định tệ nhất — tốn kém, mất nhiều tháng, và hệ thống mới sẽ lặp lại đúng vấn đề cũ nếu không sửa nguyên nhân.
Việc nên làm, theo thứ tự:
Lấy quyền kiểm soát trước. Mã nguồn về kho của công ty, tài khoản máy chủ và tên miền đứng tên công ty, có bản sao lưu tự động và đã thử phục hồi một lần. Đây là việc của một tuần, và nó xoá phần lớn rủi ro tồi tệ nhất.
Ghi lại phần chỉ nằm trong đầu người ta. Không phải tài liệu dày, mà là những câu trả lời cụ thể: hệ thống gồm những phần nào, dữ liệu nằm ở đâu, chạy tự động những gì vào lúc nào, và những chỗ đã từng hỏng và vì sao. Phần cuối là phần quý nhất và mất nhanh nhất.
Cho người thứ hai sửa một lỗi thật, ngay khi người thứ nhất còn ở đó. Đây là phép thử duy nhất đáng tin. Đọc tài liệu thấy hiểu là một chuyện; sửa được là chuyện khác.
Với người làm nghề tự do, đây cũng là chuyện của mình
Nhiều lập trình viên tự do coi việc "chỉ mình mình hiểu" là một lợi thế — khách khó bỏ mình.
Đúng trong ngắn hạn, và nó có một cái giá dài hạn: bạn không thoát ra được. Mỗi khách cũ là một sợi dây, và sau vài năm bạn dành phần lớn thời gian sửa lỗi cho những hệ thống viết từ lâu, thay vì làm việc mới.
Người làm nghề lâu và khoẻ thường đi hướng ngược lại: bàn giao sạch, tài liệu đủ, và được gọi lại vì làm tốt chứ không vì không ai thay được. Đó cũng là điều duy nhất cho phép tăng giá theo thời gian.
AI đổi gì, và nó đổi khá nhiều ở đúng chỗ này
Rào cản của việc tài liệu hoá chưa bao giờ là khó, mà là phiền — người vừa viết xong không muốn ngồi mô tả lại.
Cái đó vừa gần như biến mất: đọc mã nguồn và sinh ra mô tả cấu trúc, luồng dữ liệu, danh sách phụ thuộc; giải thích một đoạn mã viết tám năm trước cho người mới; dựng bản đồ hệ thống mà không cần người viết còn ở đó.
Điều này đáng chú ý: một công ty đang mắc kẹt với hệ thống của người đã nghỉ nay có đường ra, việc mà trước đây gần như không thể.
Nhưng phải nói rõ giới hạn: máy đọc được mã làm gì, nó không đọc được vì sao lại làm vậy. Chỗ trông kỳ quặc trong mã có thể là do một yêu cầu thật của nghiệp vụ mà chỉ người viết biết. Sửa vì thấy vô lý là cách tạo ra lỗi mới.
Và cũng như đã nói ở bài dạy lập trình: máy viết được mã, còn chịu trách nhiệm khi hệ thống hỏng lúc hai giờ sáng thì vẫn là người.
Và cái tên
Đây là nghề mà khách tìm khi có một vấn đề cụ thể và không biết gọi ai — họ hỏi quanh, và thường chọn người quen giới thiệu chứ không chọn người phù hợp nhất.
Khi việc dựng một trang giới thiệu năng lực, có dự án đã làm — trở thành việc ai cũng làm được trong một buổi, thì khâu thực thi hết là lợi thế.
Cái còn lại là được nhớ và tra lại được: người này đã làm gì, cho ai, và có ai xác nhận. Trong nghề mà rủi ro lớn nhất của khách là chọn nhầm người rồi mắc kẹt nhiều năm, danh tính kiểm chứng được chính là sản phẩm.
NhaLapTrinh.com gọi đúng con người làm nghề, ngắn, dễ nhớ, và không phụ thuộc vào nền tảng tìm việc nào có thể đổi luật chơi vào tháng sau.
Tên miền nhắc trong bài: NhaLapTrinh.com