Đọc mã nguồn mở là cách học từ những người giỏi mà không cần quen biết họ. Hãy chọn một dự án nhỏ mà bạn đã từng dùng, đọc có mục đích như tìm xem họ xử lý một việc cụ thể thế nào, và đọc cả những cuộc thảo luận xoay quanh mã. Đừng bắt đầu bằng một dự án khổng lồ có hàng nghìn người đóng góp.
Chào bạn, đây là Nhà Lập Trình. Người học vẽ thì chép tranh của hoạ sĩ lớn, người học viết thì đọc sách của nhà văn giỏi. Người học lập trình có một kho báu tương tự mà nhiều người bỏ qua: hàng triệu dự án mã nguồn mở, ai cũng đọc được. Tập này mình kể cách đọc chúng cho có lợi.
Vì sao đọc mã người giỏi lại quan trọng?
Khi tự học hoặc làm trong một đội nhỏ, bạn chỉ thấy một vài cách viết mã: của mình và của vài đồng nghiệp. Bạn không biết còn những cách tốt hơn, vì chưa bao giờ thấy chúng.
Mã nguồn mở của những dự án được dùng rộng rãi thường đã qua tay rất nhiều người đọc, góp ý, sửa. Nó không hoàn hảo, nhưng nó cho bạn thấy người ta tổ chức một dự án lớn thế nào, đặt tên thế nào, xử lý lỗi thế nào, viết thử nghiệm thế nào.
Đọc nhiều, bạn bắt đầu có cảm nhận về mã tốt. Giống như người đọc nhiều sách sẽ nhận ra câu văn hay mà không cần ai giải thích ngữ pháp. Cảm nhận đó rồi sẽ chảy vào mã của chính bạn.
Và bạn học được những thủ thuật nhỏ không có trong sách: một cách xử lý trường hợp đặc biệt gọn gàng, một cách tổ chức tệp cấu hình hợp lý, một cách viết thông báo lỗi dễ hiểu.
Chọn dự án vừa sức
Sai lầm phổ biến là mở ngay những dự án khổng lồ nổi tiếng nhất. Bạn sẽ ngợp trong hàng nghìn tệp, những khái niệm chưa từng nghe, và bỏ cuộc sau một buổi tối.
Hãy bắt đầu với dự án nhỏ, vài chục đến vài trăm tệp, làm một việc rõ ràng. Tốt nhất là một thư viện bạn đã từng dùng trong dự án của mình. Bạn đã biết nó làm gì từ bên ngoài, giờ bạn xem nó làm thế nào từ bên trong.
Chọn dự án đang còn được chăm sóc: có người trả lời câu hỏi, có thay đổi gần đây. Dự án bỏ hoang nhiều năm có thể dùng những cách viết đã cũ.
Chọn dự án dùng ngôn ngữ bạn đã khá quen. Đọc mã người giỏi trong một ngôn ngữ lạ là hai việc khó chồng lên nhau. Khi đã quen cách đọc, bạn có thể mở rộng sang ngôn ngữ khác.
Đọc có mục đích, không đọc lan man
Đừng mở dự án ra và đọc bâng quơ. Hãy đặt một câu hỏi cụ thể. Thư viện xử lý ngày giờ này đổi múi giờ thế nào? Thư viện gửi thư này xử lý khi máy chủ thư không trả lời thế nào? Công cụ dòng lệnh này đọc tham số ra sao?
Với câu hỏi trong đầu, bạn biết mình cần tìm tệp nào, bỏ qua tệp nào. Bạn đọc sâu một con đường thay vì đọc nông mọi thứ.
Khi tìm thấy câu trả lời, dừng lại và tự hỏi: nếu là mình thì mình sẽ viết thế nào? Cách của họ khác mình ở đâu? Vì sao họ chọn cách đó? Có khi bạn thấy cách của họ tốt hơn hẳn. Có khi bạn thấy họ phải xử lý những trường hợp bạn chưa từng nghĩ tới.
Một bạn lập trình ở Hải Phòng kể bạn ấy có thói quen mỗi tuần chọn một câu hỏi và đi tìm câu trả lời trong một dự án mở. Sau một năm, bạn ấy có một cuốn sổ ghi hơn năm mươi cách xử lý hay, và nói đó là thứ giúp mình lên tay nhanh nhất.
Phần quý nhất nằm ngoài mã
Mã nguồn mở không chỉ có mã. Nó có những cuộc thảo luận: báo lỗi của người dùng, đề xuất thay đổi, những lượt góp ý qua lại trước khi một thay đổi được chấp nhận. Đây là phần mà nhiều người bỏ qua, và cũng là phần quý nhất.
Đọc một đề xuất thay đổi bị từ chối, kèm lý do từ chối, bạn học được người giữ dự án quan tâm điều gì: tính tương thích với phiên bản cũ, hiệu năng, sự đơn giản. Đọc một cuộc tranh luận giữa hai người giỏi về hai cách làm, bạn học được cách cân nhắc đánh đổi.
Bạn cũng học được cách người giỏi góp ý cho nhau: cụ thể, lịch sự, có lý do. Đây là kỹ năng rất cần khi bạn đi làm và xem lại mã cho đồng nghiệp.
Và bạn thấy rằng người giỏi cũng viết sai, cũng bị góp ý, cũng sửa đi sửa lại. Điều đó làm bạn bớt sợ khi mã của chính mình bị góp ý.
Từ người đọc sang người đóng góp
Khi đã đọc một dự án đủ lâu, bạn sẽ thấy những chỗ có thể làm tốt hơn: một lỗi chính tả trong tài liệu, một thông báo lỗi khó hiểu, một trường hợp chưa được xử lý. Đó là lúc thử đóng góp.
Bắt đầu nhỏ. Sửa tài liệu, thêm một ví dụ, viết thêm một bài thử nghiệm. Nhiều dự án đánh dấu sẵn những việc phù hợp cho người mới. Đọc kỹ hướng dẫn đóng góp của dự án trước khi gửi.
Lần đầu gửi đóng góp, bạn có thể nhận về nhiều góp ý và phải sửa vài lần. Đừng nản. Đó là buổi học miễn phí với người giỏi mà bạn khó có được ở nơi khác.
Đóng góp cũng là thứ bạn có thể kể khi phỏng vấn. Không phải vì nó hoành tráng, mà vì nó cho thấy bạn đọc được mã người lạ, làm việc được với người lạ, và nhận góp ý được. Ba điều đó nhà tuyển dụng rất muốn thấy.
Câu hỏi thường gặp
Mã nguồn mở là gì?
Là phần mềm có mã nguồn công khai, ai cũng đọc được, và tuỳ giấy phép có thể được sửa, dùng lại hoặc phân phối. Nhiều công cụ và thư viện phổ biến mà lập trình viên dùng hằng ngày là mã nguồn mở.
Người mới học có đọc được mã nguồn mở không?
Được, nếu chọn dự án nhỏ, dùng ngôn ngữ đã quen và đọc với một câu hỏi cụ thể. Đừng bắt đầu bằng dự án khổng lồ, vì dễ ngợp và nản.
Có được sao chép mã nguồn mở vào dự án của mình không?
Tuỳ vào giấy phép của từng dự án. Có giấy phép cho dùng thoải mái chỉ cần ghi nguồn, có giấy phép yêu cầu dự án của bạn cũng phải công khai mã. Hãy đọc giấy phép trước khi dùng.
Đóng góp mã nguồn mở có cần giỏi tiếng Anh không?
Phần lớn dự án lớn trao đổi bằng tiếng Anh, nhưng chỉ cần đọc hiểu và viết câu đơn giản rõ ràng. Nhiều người bắt đầu đóng góp khi tiếng Anh còn khá cơ bản và tiến bộ dần qua trao đổi.
Đóng góp mã nguồn mở có giúp xin việc không?
Có thể giúp, vì nó cho thấy bạn đọc được mã người khác, làm việc với người lạ và nhận góp ý tốt. Nhưng nó không bắt buộc, dự án cá nhân có người dùng thật cũng có giá trị tương tự.