Trong ngành phần mềm, có rất nhiều kiến thức cần học. Để trở thành một developer giỏi, chúng ta phải thường xuyên học hỏi, cập nhật những kiến thức này.
Tuy nhiên, sẽ có lúc bạn thắc mắc, những kiến thức dạng gì quan trọng nhất, mà chúng ta nên bỏ thời gian để học?
Theo mình, có 3 dạng kiến thức quan trọng:
- Kiến thức nền tảng về khoa học máy tính, về kiến trúc phần mềm (software architecture), kiến thức hệ thống (system architecture)
- Kiến thức về ngôn ngữ lập trình/công nghệ được dùng. Đây là những kiến thức thực tế, được áp dụng trong công việc hằng ngày.
- Best practices, đây là những kiến thức rút được dựa theo kinh nghiệm của những người đi trước trong ngành, mà chúng ta nên biết và làm theo. Đây là những thứ trường học không hề dạy!
Trong bài này, mình sẽ chia sẻ về best pratices, cách học hỏi và những lợi ích của chúng nhé.
Best Practices là cái chi chi?
Việt Nam mình không có cách dịch nghĩa cho từ best practice, các bạn có thể tạm hiểu nó là thông lệ tốt nhất hoặc cách làm tốt nhất nhé (ráng học bằng tiếng Anh chứ đừng ráng dịch ra tiếng Việt hết nha, chuối lắm).
Best Practice là tập hợp những cách làm tốt nhất, “đúng đắn nhất”, mang lại hiệu quả cao nhất. Những cách làm tốt nhất này được rút ra thông qua bao mồ hôi nước mắt, thử và sai của những bậc đàn anh đi trước trong ngành.
Ngành mình có vô số best practice, từ code cho tới architure. Một số best practice phổ biến như:
- Viết clean code: Phần lớn thời gian chúng ta bỏ ra để đọc code chứ không phải viết code. Do vậy, clean code sẽ tiết kiệm thời gian khi sau này chúng ta muốn sửa chữa, bảo trì code cũ
- Coding Convention: Trong 1 dự án, cả team sử dụng chung 1 coding convention (cách đặt tên hàm, tên biến, dùng tab hay space). Cách này giúp cho code ngăn nắp và đồng bộ
- Do Not Reinvent The Wheel: Nên sử dụng thư viện/hàm sẵn có nếu có thể. Việc này giúp bạn tiết kiệm thời gian, hạn chế lỗi phát sinh khi tự viết code

Best Practice giúp ích được gì? Tại sao phải tìm hiểu?
Như mình đã nói, Best Practices là những cách làm tốt nhất, được rút ra từ kinh nghiệm. Phía sau mỗi Best Practice là bao nhiêu mồ hôi nước mắt, là những dự án thất bại của những người đi trước:
- Phía sau việc viết clean code là những người chửi thề vì đọc những dòng code dạng var m = 1; if (k || 2) do x();
- Phía sau coding convention là những dự án code loạn xà ngầu, mỗi người viết 1 kiểu như nồi lẩu thập cẩm
- Phía sau việc Do Not Reinvent The Wheel là những dự án thất bại vì developer bỏ 3-4 tháng trời để viết lại database engine, viết lại những chức năng CRUD
Học hỏi những Best Practice rút ra được thông qua những thất bại này sẽ giúp bạn không lặp lại những sai lầm tương tự!

Với những bạn chưa có kinh nghiệm, tìm hiểu về những best practice này chính là cách nhanh nhất và hiệu quả nhất để có thêm kinh nghiệm.
Chưa kể, tuân theo những best practice này sẽ luyện cho bạn những thói quen tốt về sau trong sự nghiệp lập trình,
Học hỏi ở đâu?
Những best practices này thường được chia sẻ rất nhiều trên mạng. Một số nguồn mình hay tìm đọc là:
- Những sách lập trình kinh điển như Code Complete, Clean Code, The Pragmatic Programmer, series sách của Martin Fowler
- Những chia sẻ của các bác lập trình viên senior trên Quora, trên Medium
- Gõ công nghệ mình dùng + best practice. Ví dụ JavaScript Best Practice, Web Security Best Practice.
Ngoài ra, chỉ tìm hiểu thôi không đủ. Cách tốt nhất để biết, để nhớ những best practice này đó là áp dụng chúng vào công việc, vào code bạn viết hằng ngày:
- Tìm hiểu xong về Test-Driven Development (TDD), hãy thử thêm UnitTest trong code xem
- Tìm hiểu xong về Continous Integration (CI), hãy thử cài đặt Jenkin/Travis/CircleCI cho dự án mình đang làm xem
- Vừa đọc xong Clean Code, hãy thử xem lại code mình viết có clean chưa, và sửa cho nó clean xem
Nhớ nhé, đọc nhiều xem nhiều cũng không bằng trực tiếp làm và trải nghiệm đâu!

Đừng học vẹt, áp dụng mù quáng mà hãy hiểu
Best practice là cách tốt nhất trong phần lớn các trường hợp. Tuy nhiên, điều nó không có nghĩa nó là cách duy nhất, hay bắt buộc lúc nào cũng phải làm theo như vậy!
Ở giai đoạn đầu, các bạn có thể tìm hiểu và làm theo best practice để nhớ, để hiểu. Tuy nhiên, sau khi đã có kinh nghiệm, các bạn nên tìm hiểu sâu hơn về best practice đó.
Đừng mù quáng làm theo 100%, mà hãy hiểu rõ những nguyên lý (principal) phía sau, những vấn đề mà nó giải quyết, tại sao nó lại làm như vậy:
- Continous Integration đảm bảo là code có thể dễ dàng được build, liên tục tích hợp. Khi có 1 code bị lỗi, cả team có thể biết và sửa chữa ngay lập tức.
- Dependencies Injection làm giảm sự phụ thuộc giữa các component, giúp ta dễ dàng thay đổi code cũng như viết test.
- Không phải lúc nào ta cũng không nên Reinvent The Wheel. Khi những thư viện có sẵn không đáp ứng được nhu cầu, không phù hợp, hoặc khi bạn muốn học cái mới, ta nên tự viết, tự làm một cái riêng để hiểu nó, để customize.

Kết
Không như những kiến thức nền tảng, Best Practice cũng thường xuyên thay đổi theo sự biến động của công nghệ.
Cách đây vài chục năm, best practice là code phải optimize cho máy chạy, performance là thứ quan trọng nhất. Gần đây, performance vẫn quan trọng, nhưng khả năng bảo trì, khả năng mở rộng phải được ưu tiên hơn.
Do vậy, developer chúng mình cũng nên thường xuyên tìm hiểu, cập nhật những best practice này nhé!
Những bạn nào đã đi làm, rút ra được kinh nghiệm hay bài học xương máu gì thì cứ comment chia sẻ phía dưới nha!
Nguyên lí là principle chứ nhỉ?
LikeLike