Những nhà phát triển thật sự giỏi rất hiếm. Năng suất của họ cao gấp 3 lần so với một nhà phát triển trung bình và 10 lần so với một nhà phát triển tồi (Nguồn: The Mythical Man Month). Vậy những developer giỏi có những bí quyết gì để làm nên sự khác biệt?
Dưới đây là danh sách 19 điều các developer giỏi làm hàng ngày. Chúng ta hãy xem đó là gì và liệu bạn có làm như họ hay không. Hoặc bạn có những có những kinh nghiệm gì có thể chia sẻ ngoài những điều dưới đây.
1/Quy tắc 3
Quy tắc 3 (Rule of 3) là một quy tắc cơ cấu lại code để quyết định khi nào một đoạn code được sao chép nên được thay thế bằng một procedure. Rule of 3 nói rằng bạn được phép sao chép và dán code một lần, nhưng khi cùng một đoạn code được sao chép ba lần, nó sẽ được trích xuất thành một procedure mới. Ý tưởng chính là làm cho code / procedure trở nên khái quát để có thể được sử dụng lại ở nhiều nơi.
Sự trùng lặp trong lập trình hầu như luôn cho thấy code được thiết kế kém hoặc thói quen viết code kém. Sao chép là một thói quen xấu vì nó làm cho code khó bảo trì hơn. Khi một đoạn code sao chép cần thay đổi, bất kỳ ai duy trì code sẽ phải thay đổi nó ở tất cả các vị trí một cách chính xác. Quá trình này dễ xảy ra lỗi và thường dẫn đến sự cố. Nếu code chỉ tồn tại ở một nơi, thì nó có thể dễ dàng thay đổi ở đó. Quy tắc Rule of 3 này thậm chí có thể được áp dụng cho số lượng nhỏ các dòng code, hoặc thậm chí các dòng code đơn lẻ.
2/Nhất quán là vua
Hãy nhất quán (consistent) với cấu trúc và cách bạn viết code. Điều này có thể giúp đảm bảo tính dễ đọc và khả năng bảo trì của ứng dụng của bạn.
Hãy thử và đưa ra các tiêu chuẩn lập trình, giúp đảm bảo tính nhất quán. Nó phải ngắn gọn như quy ước đặt tên cho các biến của bạn. Một vấn đề lớn khác là cấu trúc của ứng dụng, cần phải rõ ràng nơi mà nhà phát triển cần thực hiện các thay đổi hoặc thêm một cái gì đó mới.
3/Giảm nesting
Một if
bên trong if có thể lộn xộn và rất khó đọc. Đôi khi bạn có thể không giải quyết được vấn đề này nhưng hãy luôn xem xét cấu trúc code của bạn.
Điều này cũng tương tự đối với else if
. Tránh nếu có thể vì điều này đôi khi có thể làm cho mã khó đọc hơn.
Một guard clause là một cách hiệu quả để giúp bạn làm điều này!
Một guard clause chỉ đơn giản là một kiểm tra để ngay lập tức thoát khỏi hàm, với một câu lệnh trả về hoặc một ngoại lệ.
Đoạn code sau không có guard clause:
Có guard clause:
4/Hãy nghĩ về bức tranh lớn hơn
Hiểu được bức tranh lớn hơn là rất quan trọng, điều này sẽ làm cho các chi tiết nhỏ hơn dễ theo dõi hơn. Khi bạn hiểu được bức tranh toàn cảnh hơn, bạn sẽ không mất quá nhiều thời gian để tìm ra chi tiết nhỏ.
5/Dành thời gian nghĩ cách đặt tên
Đặt tên cho mọi thứ trong lập trình là một trong những điều khó nhất bạn có thể làm. Đây có thể là đặt tên cho một lớp, phương thức hoặc thậm chí một biến.
Các nhà phát triển giỏi dành thời gian nghĩ về những cái tên có liên quan vì họ biết điều này giúp dễ đọc!
6/Tránh nợ kỹ thuật
Ước lượng cao có thể giúp tránh nợ kỹ thuật (technical debt). Viết code tốt nhất có thể nếu không bạn sẽ phải quay lại nhiều lần.
Nợ kỹ thuật là một khái niệm trong phát triển phần mềm phản ánh chi phí ẩn của việc phải làm lại gây ra bởi việc chọn một giải pháp dễ dàng (hạn chế) ngay từ đầu thay vì sử dụng một cách tiếp cận tốt hơn sẽ mất nhiều thời gian hơn
7/Đánh giá cao
Có thể là một điều kỳ lạ và tùy thuộc vào bộ phận bạn làm việc, và bạn có thể không thích điểm này nhưng bạn sẽ thấy các nhà phát triển giỏi có những ước lượng cao hơn thay vì vừa đủ cho các tác vụ họ phài làm. Họ biết rằng mọi thứ luôn mất nhiều thời gian hơn mong đợi và việc thêm một khoảng thời gian vào ước tính thực sự có thể giúp bạn làm đúng.
Điều này thực sự có thể giúp giải quyết vấn đề “Nợ kỹ thuật là xấu” ở trên. Nếu bạn đánh giá thấp hoặc ước tính thời gian chỉ xem xét con đường ngắn nhất, điều này thực sự có thể tạo ra nợ kỹ thuật vì bạn sẽ chỉ có thời gian để làm cho chức năng hoạt động hơn là làm cho code sạch và dễ bảo trì.
8/Tài liệu và comment code
Tài liệu và các code comments giúp lưu giữ ngữ cảnh và chia sẻ kiến thức. Bạn sẽ nghe những người có kinh nghiệm hỏi liệu bạn có thể ghi lại quá trình đó không hoặc họ sẽ đánh giá code của bạn không tốt vì thiếu các comment cần thiết.
9/Hãy tự tin xóa code xấu
Bạn sẽ thấy rất nhiều nhà phát triển kém tự tin ghi chú (commnet out) những khối mã dài và để chúng ở đó. Kiểm soát phiên bản ra đời là có mục đích của nó. Các nhà developer giỏi không ngại xóa những đoạn code xấu.
10/Dành thời gian đánh giá code
Các nhà phát triển giỏi sẽ dành nhiều thời gian hơn cho việc đánh giá mã (review code) và biết tầm quan trọng của việc đánh giá mã:
- Giúp tìm ra lỗi sớm
- Cải thiện kỹ năng của nhà phát triển và giúp những người còn lại trong nhóm thực hiện các phương pháp hay.
- Chia sẻ kiến thức
- Thiết kế và triển khai nhất quán
Quy trình đánh giá code tốt nhất mà các lập trình viên giỏi thường thực hiện là:
- Một nhiệm vụ nhỏ với ít rủi chỉ cần 1 developer đánh giá.
- Một thay đổi quy mô vừa / lớn hoặc một thay đổi rủi ro nên được đánh giá bởi 3 developers, một trong số họ là senior devloper.
- Một thay đổi cực kỳ rủi ro hoặc một phần mới của ứng dụng đang được phát triển nên có một cuộc họp được đặt trước (để có sự chuẩn bị) với 3 developers trong đó có ít nhất một trong số họ là developer chính. Họ sẽ cùng nhau xem xét từng dòng và đưa ra quan điểm.
11/Viết bài kiểm thử chặt chẽ
Bạn sẽ nhận thấy rằng các nhà phát triển có kinh nghiệm sẽ mất nhiều thời gian hơn để viết các bài kiểm thử chặt chẽ.
Có các bài kiểm thử tốt giúp bạn mở rộng quy mô ứng dụng của mình một cách tự tin hơn và giúp giảm các lỗi.
12/Dành thời gian thiết kế
Trước khi đi sâu vào lập trình, các developer giỏi phải suy nghĩ kỹ và chia thành nhiều phần nhỏ. Điều này giúp họ chuẩn bị tốt hơn về cách mọi thứ khớp với nhau và tạo code sạch hơn.
13/Tập trung vào các nguyên tắc cơ bản chứ không phải cú pháp
Đây là một vấn đề lớn! Các developer giỏi thích tìm hiểu các nguyên tắc cơ bản thay vì quá tập trung vào cú pháp. Điều này giúp họ tìm ra vấn đề hiệu quả hơn. Điều này cũng có thể giúp họ google các vấn đề với sự hiểu biết tốt hơn.
14/Biến Google thành người bạn tốt nhất
Các developer giỏi là những chuyên gia Googling để giúp họ giải quyết các vấn đề của mình. Điều này giúp ích vì điểm trên “Tập trung vào các nguyên tắc cơ bản chứ không phải cú pháp”.
Bởi vì họ đã tập trung vào các nguyên tắc cơ bản nên họ biết những cụm từ cần tìm kiếm trên Google. Điều này rất khó thực hiện nếu bạn bị ám ảnh bởi việc học cú pháp!
15/Hãy chắc chắn code hoạt động trước, làm cho tốt hơn sau
Bạn thấy điều này rất nhiều với những nhà phát triển yếu, họ dường như dành rất nhiều thời gian để làm cho code trông đẹp đẽ lúc ban đầu nhưng sau đó lại loay hoay tìm hiểu tại sao code họ viết ra không hoạt động.
Các nhà phát triển giỏi có được một con làm việc sớm rõ ràng hơn, giúp họ xác định sớm bất kỳ vấn đề nào trước khi làm cho nó trở nên tốt đẹp. Điều này có thể giúp các dự án diễn ra suôn sẻ hơn rất nhiều.
16/Quản lý rủi ro và giải quyết vấn đề
Các nhà phát triển cấp cao có thể xác định rủi ro, có thể phân tích các vấn đề phức tạp thông qua việc áp dụng các mẫu thiết kế và có thể giải quyết các vấn đề khác nhau môt cách độc lập do kinh nghiệm trong quá khứ.
17/Hỏi câu hỏi
Các nhà phát triển giỏi muốn biết mọi thứ. Họ không ngại đặt câu hỏi ngay cả khi chúng nghe có vẻ cực kỳ đơn giản. Đây có thể là những câu hỏi liên quan đến kỹ thuật hoặc quy trình kinh doanh.
Hiểu được nhu cầu kinh doanh giúp họ viết code tốt hơn! Họ không sợ đặt câu hỏi vì họ tự tin vào khả năng của mình.
18/Giữ logic ngoài cơ sở dữ liệu bất cứ khi nào có thể
Điểm này phụ thuộc vào loại ứng dụng mà bạn đang xây dựng và chỉ khi nó không ảnh hưởng đến hiệu suất. Các developer giỏi biết giữ các truy vấn cơ sở dữ liệu của họ thành các hoạt động CRUD đơn giản.
Create, read (aka retrieve), update, and delete (Tạo, đọc (hay còn gọi là truy xuất), cập nhật và xóa)
Sau đó, lớp logic nghiệp vụ sẽ kết hợp tất cả điều này lại với nhau. Điều này giúp các nhà phát triển biết phải tìm logic nghiệp vụ ở đâu. Điều này có thể trở nên lộn xộn rất nhanh nếu bạn có logic trong các truy vấn cơ sở dữ liệu và trong code!
19/KISS
Keep It simple Stupid
Các developer giỏi biết rằng giữ cho mã đơn giản là điều tốt nhất nên làm. Dù đôi khi điều đó tạo ra nhiều dòng code hơn. Bạn sẽ thấy rất nhiều nhà phát triển non kinh nghiệm hơn tạo ra một lớp lót như bên dưới.
Điều này có hiệu quả nhưng đọc điều này là cực kỳ khó!
Kết luận
Đây là những gì các lập trình viên giỏi thường làm hàng ngày. Bạn sẽ thấy rất nhiều trong số đó không liên quan đến lập trình mà là quy trình và cách họ tiếp cận các nhiệm vụ. Tuy nhiên, 19 điều trên không phải là tất cả và chắc chắn rằng còn rất nhiều thứ khác để thêm vào danh sách này. Bạn hãy bổ sung bên dưới phần bình luận các suy nghĩ của bạn
Bài viết này dựa trên bài viếtcủa Daniel Anderson Full stack lead developer, Manchester(UK) đăng trên javascript.plainenglish.io có tham khảo thêm thông tin trong Important Programming “Rules of Thumb“
Photo by Andy Holmes on Unsplash