“Contribute cho open-source, làm việc trực tiếp với các kỹ sư giỏi ở Google, Microsoft, Meta,… mình thu hoạch được rất nhiều thứ từ kiến thức đến networking.”
Cường Lê - Software Engineer
Mình bắt đầu contribute cho Go từ khoảng năm 2016, trước đấy cũng có sử dụng Go rồi, từ version 1.5 thì phải. Mình nhớ patch đầu tiên mà mình submit là cho thư viện os, liên quan đến việc xử lý sai tham số đặc biệt của shell “-”.
Trong khoảng thời gian làm ở VCCorp, khoảng năm 2013 thì docker nổi lên như 1 giải pháp rất hữu ích cho developer cũng như system admin. Mình thì muốn tìm hiểu sâu hơn, mày mò về source code của nó, sau khi biết nó viết bằng Golang, mà muốn hiểu về nó nên mình phải học Go thôi. Ban đầu học mình cũng dùng như khi tiếp cận với các ngôn ngữ khác thôi. Sau khi càng học, hiểu về Go, tham gia các forum thì mình mới thấy đây là 1 ngôn ngữ rất thú vị. Quan điểm của mình từ trước đến nay không quan trọng lắm về phần ngôn ngữ, nhưng ngôn ngữ nào giúp mình có cách nhìn, tiếp cận mới về hướng giải quyết vấn đề thì khiến mình thấy thú vị và muốn tìm hiểu sâu hơn. Mà khi tham gia cộng đồng Go thì mình học được rất nhiều từ những người nổi tiếng trong tech industry, từ những công ty lớn như Google, Microsoft, Facebook,… Làm việc với họ cũng học hỏi được nhiều thứ hay ho phết.
Có một trải nghiệm đáng nhớ mà mãi mình không quên được khi mình contribute cho Go, mà mình làm phần Go Compiler là chủ yếu. Mình có làm việc với một anh kỹ sư Google, tạm gọi là anh A đi. Anh ấy dành 80% thời gian để làm công việc chính và 20% dành để làm các projects từ các team khác. Lúc anh ấy làm ở Go team, dù chỉ dành có 20% nhưng anh ấy gần như là người có sự am hiểu và nắm rõ nhất phần front-end của Compiler. Anh A có niềm đam mê và tình yêu rất lớn với Go nên mới dành nhiều thời gian ngoài giờ làm việc để phát triển, sắp xếp, fix lỗi,… để source code của Go tốt hơn và dễ đọc dễ hiểu hơn cho user. Cuối năm 2019, khoảng thời gian nghỉ lễ ở Mỹ, thay vì người người nhà nhà nghỉ lễ sung sướng thì anh A đã dành rất nhiều thời gian viết lại phần front-end trong Compiler để nó tốt hơn, viết lại source code cho dễ đọc hơn. Nhưng Manager lại không cho những cái đóng góp này vào phần đánh giá/ performance review của anh ấy, không đánh giá cao những đóng góp của anh ấy cho Go.
Lúc đó mình cảm thấy rất bất công cho anh A nên đã lên Twitter (X bây giờ) và tweet rằng: Tôi sẽ dừng toàn bộ việc contribute cho Go đến khi phía Go team có những đánh giá/nhìn nhận lại khách quan về chuyện này. (Thật ra thì mình chỉ dừng contribute ở tài khoản cá nhân thôi, còn công việc ở công ty thì mình vẫn phải dành 20-30% thời gian để contribute cho Go bằng tài khoản khác, cho phần khác của công ty chứ không liên quan đến Compiler). Bằng một sức mạnh nào đó thì sau này vấn đề cũng đã được giải quyết, cái gì đúng thì ai nhìn vào cũng thấy. Anh Manager đó cũng đã nhận ra được vấn đề, chuyện được giải quyết nên mình cũng quay trở lại và contribute tiếp cho Go. Mình thấy rất vui và cảm thấy tiếng nói của một contributor như mình được lắng nghe. Rõ ràng Go sẽ không thành công giống như bây giờ nếu không có user, mà user thì phải đến từ cộng đồng rồi, nên họ phải lắng nghe mình thôi.
Ngẫm lại, khi contribute cho open-source, mình thấy mình nhận về được rất nhiều thứ. Mình thấy tự hào khi những contributions nhỏ nhỏ của mình có thể giúp cho cộng đồng dev được phát triển nhiều hơn. Ví như phần frontend của Compiler thì mình là một trong vài người đóng góp vào việc tổ chức, viết lại source code cho nó dễ đọc và dễ nêu tên hơn cho những engineers khác khi làm việc với Compiler. Vì ban đầu Go Compiler được viết bằng ngôn ngữ C, version 1.4 (hay 1.5 gì đó), họ có viết 1 cái tool để dịch/ chuyển đổi toàn bộ source code của Compiler viết bằng C sang viết bằng Go, tức là Go compiler bây giờ đã được viết bằng ngôn ngữ Go luôn. Bởi vì việc tự động chuyển đổi từ C sang Go như thế nên source code nó còn rất nhiều cái được tổ chức một cách bất hợp lý. Mà cũng giống như việc tổ chức 1 sự kiện vậy, những phần không hợp lý đó sẽ khiến khi hoạt động sẽ không được trơn tru, không thể làm tốt được. Vì vậy mình rất vui và tự hào khi là 1 trong vài người làm phần lớn phần front-end của Compiler và tổ chức lại nó 1 cách tốt hơn.
Hơn nữa, khi làm việc với rất nhiều kỹ sư giỏi ở Google và các công ty lớn khác, mình cũng có thêm được nhiều kiến thức mới, cả về mặt software engineer, technical,… À, phát triển về cả networking nữa. Một trải nghiệm vui nữa là trước mình có apply 1 job, mà ông CTO cũng là core contributor cho Go, ổng nhìn profile của mình là biết ngay người hay làm việc cùng, nên việc interview cũng diễn ra thuận lợi hơn (haha). Không hẳn là người interviewer bị “bias”, mà họ đã làm việc cùng mình rồi nên biết được các làm việc, mindset, kỹ năng của mình,… nên mình có nhiều lợi thế hơn ứng viên khác.
Còn về phía Go team, mình rất vui vì họ cũng trao cho mình phần thưởng về Google Open Source bonus: họ sẽ pick những người ngoài Google có đóng góp nhất định cho Open source của họ và mình là một trong số đó. Họ có gửi cho mình 1 giấy chứng nhận thôi, nhưng mình rất vui vì Google và Go team có sự công nhận nhất định cho sự cống hiến của mình. Bật mí một chút là cuối tháng 9 tới đây, mình sẽ tham dự GopherCon ở Mỹ và mình sẽ được gặp mặt trực tiếp với những người đã làm việc online từ trước đến giờ nên mình rất vui (à mình mới phỏng vấn thành công Visa hôm qua luôn hehe).