Tôi là một kĩ sư, một kĩ sư công nghệ, thế nên việc hiểu và thực hành code review nó là một trong những công việc hằng ngày của tôi. Tuy nhiên việc thực hành code review một cách hiệu quả thực sự là một thách thức. Việc hiểu những lợi ích và khó khăn trong khi tiến hành code reivew sẽ giúp chúng ta hiểu đúng và có cách tiếp cận phù hợp để mang lại giá trị và lợi ích cao nhất.
Các lợi ích nổi bật code review mang lại
Improve code quality
Thông qua code review chất lượng code base được tăng cường, khi bạn thực hành code review một cách có hiệu quả nó thường dẫn đến một số các kết quả như bạn nhận được nhiều feedback có giá trị từ những đồng nghiệp trong team. Và thông qua các tương tác trao đổi kết quả tất yếu là chất lượng code base của bạn được nâng cao
Tìm kiếm và ngăn chặn các lỗi từ sớm
Khi code review đã trở thành một thói quen và bạn cảm thấy thích thú với việc đó, thì bạn có thể mang đến rất nhiều lợi ích cho sản phẩm, bạn có thể ngăn chặn các lỗi từ trước khi chúng xuất hiện, thông qua đọc và review code bạn có thể phát hiện ta những logic tiềm tàng bị sai trong quá trình phát triển, các lỗi về performance hay security issues, dưới con mắt của một lập trình viên đầy kinh nghiệm cũng dễ dàng được phát hiện.
Knowledge transfer
Để một công ty có thể phát triển, thì một trong những cách hiệu quả đó là knowledge transfer, làm thế nào để knowledge có thể được tổng hợp và transfer giữa mọi người trong công ty. Code review cũng là một cách thức để thực thi knowledge transfer, đặc biệt đối với những bạn mới hoặc junior các bạn có thể học hỏi được rất nhiều kinh nghiệm thông qua những comments & feedback có giá trị từ các bạn senior, và dần dà những kiến thức đó trở thành của bạn, giúp bạn có thể deliver được impact lớn hơn.
Build team awareness
Việc hiểu biết những gì mà những thành viên khác trong team đang xử lý, sẽ giúp cho tăng cường team awareness, hơn thế nữa cũng tăng cường ownership trong team, khi mà team own product vậy thì việc contribute cho product từ giai đoạn từ sớm, sẽ mang đến những lợi ích từ sớm, ngăn chặn lỗi, việc address và xử lý issues trên product khi gặp phải cũng sẽ nhanh hơn
Những lợi ích mà code review mang lại là không phải bàn cãi nhưng những vấn đề gặp phải khi tiến hành code review cũng không ít, nó cũng chính là những cản trở để team có thể thực hành và thực sự cảm thấy thoải mái với nó. Chúng ta hãy đi vào một số những trở ngại khi tiến hành code review nhé.Các khó khăn gặp phải
Mất rất nhiều thời gian để nhận được feedback
Code review không được ưu tiên cao trong danh sách các công việc cần làm
Thông thường tôi quan sát thấy rằng, các bạn developer quá tập trung vào việc develop (build feature, fix bugs, refactor code, viết test, meeting…) việc thực hiện code review thường nằm cuối danh sách cần làm. Có lẽ đó cũng là điều dễ hiểu nó phụ thuộc vào công ty vào văn hoá mà công ty xây dựng, tôi cũng quan sát được công ty sẽ ghi nhận đóng góp cá nhân trong việc xây dựng sản phẩm, làm feature, fix bugs…hơn là code review, nó là vấn đề ghi nhận giá trị mà bạn bỏ ra. Tôi cho rằng việc thực hiện code review hiệu quả (có thể đưa ra được những feedbacks & comments có giá trị) thường tốn khá nhiều thời gian của reviewer, trong khi code review có khi còn không được mention trong performance review. Dẫn đến việc nó thường được ưu tiên thấp hơn, và được thực thi “cho đủ” qui trình
Mặc dù cần thời gian để có thể tham gia vào code review hiệu quả (chất lượng + số lượng), nhưng thử nhìn lại các sự kiện quan trọng planning, estimation… mà tôi quan sát được, thường không nhắc đến thời gian cho code review, do thời gian không được tính giành cho code review, nên cũng dễ hiểu mọi người sẽ ưu tiên vào những công việc khác
Code review với số lượng thay đổi quá lớn
Cái này tôi nghĩ là gặp khá thường xuyên trong công việc, đặc biệt công ty tôi là một start up, khi mà mọi thứ phát triển quá nhanh, và cái gì cũng cần làm gấp. Dẫn đến thiếu thời gian để dev, để đảm bảo chất lượng..chứ nói gì đến thời gian cho code review. Do vai trò của code review chưa được thể hiện nên thường thấy, đến một thời điểm nào đó trong tương lai, chúng tôi phải trả nợ bằng technical dev, bằng việc thiếu một số dữ liệu tracking quan trọng, không coverage được hết các edge-case. Và quay lại mục đích chính của code review. Bạn mong đợi gì khi tạo một review request? (với một PRs quá lớn)
Code review không mang đến những feedback có giá trị
Tôi quan sát thấy, có khá ít feedback trong code reviews, vậy nên việc có thể đưa ra được những feedback có giá trị lại càng ít. Do thời gian bỏ ra cho code review cũng “không được tính”, nên thường thấy mọi người làm Code Review rất nhanh, để đảm bảo “qui trình”, để code được merge, hoàn toàn “tin tưởng” vào đồng đội. Có rất nhiều nguyên nhân mà tôi thấy ảnh hưởng đến vấn đề này, từ việc thiếu thời gian để review code, thiếu thông tin về thay đổi cho reviewer, thường thấy là thiếu description thiếu động cơ/lý do thay đổi, thiếu các thông tin liên quan, dẫn đến reviewer không hiểu và không đưa ra được những feedback giá trị. Trong những tình huống này, reviewer rất có thể tập trung vào những vấn đề nhỏ hơn styling, typos, cách đặt tên biến. Hãy nhớ rằng giá trị của bạn mang lại cho Code Author nằm ở các vấn đề cốt lõi, như lỗi, architecture, structure hoặc maintainability
Phần 2 tôi sẽ nói về best practice, các bạn chờ nhé
Comments
Post a Comment