Chắc hẳn các bạn muốn biết làm như thế nào để trở thành một Java Developer “xịn”. Hôm nay tôi sẽ giới thiệu một số nội dung cũng như công nghệ mà các bạn bắt buộc phải học để trở thành một Java Developer giỏi.

1. Tìm hiểu về JVM (Java Virtual Machine)

Ở phần này, chúng ta tìm hiểu các thành phần cấu tạo của máy ảo JVM, nó hoạt động như thế nào, JIT, JVM Option, Garbage Collections và Collector hoạt động ra sao để hiểu được nguyên lý hoạt động của một ứng dụng Java.

2. Tìm hiểu Java Performance

Ở phần này chúng ta sẽ tìm hiểu sâu hơn về ứng dụng Java được triển khai như thế nào và làm cách nào để tăng hiệu năng (năng suất) ứng dụng của mình. Cải thiện bộ nhớ, lưu trữ các biến, object của ứng dụng trong bộ nhớ. Tối ưu chương trình Java giúp chương trình nhanh hơn.

Nếu có thời gian các bạn nên đọc cuốn sách “Java Performance: The Definitive Guide”.

3. Java API và Library

Nếu các bạn muốn học được các ví dụ, cách viết code hay thì nên đào sâu vào các thư viện có sẵn trong Java. Trong bộ core của Java có rất nhiều cách viết code hay mình có thể học hỏi nhiều thứ từ những thư viện này. Có hơn 20 loại thư viện và API được dùng thường xuyên trong Java. Nắm được cách viết này ta sẽ nâng cao kỹ năng viết code rất nhiều.

4. Học Java 8

Hiện nay, Java phiên bản 14 đã ra đời tuy nhiên cũng rất ít developer Java sử dụng hết các chức năng mới này. Hầu hết các Java Developer thường sử dụng Java 7 là nhiều.

Tất cả các công việc tuyển dụng về vị trí Java các nhà tuyển dụng thường đòi hỏi các lập trình viên phải nắm được các chức năng quan trọng của Java 8 như Lambdas và Stream API. Nếu như không trả lời được các kỹ thuật trên thì rất khó để các nhà tuyển dụng đánh giá cao mình.

5. Spring Boot

Ngày nay, hầu hết các công ty sử dụng các framework của Java như Spring MVC, Spring Boot, Spring Cloud để xây dựng các ứng dụng về web, Rest API, và Microservice. Chính vì vậy nếu mình là một lập trình viên Java thì mình phải biết và sử dụng được Spring Boot. Như vậy mới có thể tham gia vào các dự án ở công ty Java.

6. Cloud và Microservice

Năm này qua năm nọ, kiến trúc của một hệ thống dần dần thay đổi. Cách đây khoảng 10 năm trước, các ứng dụng đều xây dựng trên kiến trúc nguyên khối (monolithic). Kiến trúc nguyên khối bao gồm Controller, Service, Repository chung với nhau. Tính phụ thuộc giữa các module rất cao. Chính vì vậy mà khả năng mở rộng (scale) rất hạn chế. Và ngày nay mọi người đang chuyển dần các ứng dụng theo kiến trúc nguyên khối (monolithic) sang kiến trúc Microservice (độc lập các modules). Chính vì vậy mà tính phụ thuộc các module rất thấp nên dễ dàng thay thế , cải tiến và mở rộng (scale).

7. Học Design Pattern và các Best Practice của Coding

Hầu hết các framework chúng ta dùng đều sử dụng Design Pattern. Nó giúp cho các framework trở nên linh động, khả năng mở rộng cao mà không phải đập code đi viết lại. Nắm được Design Pattern sẽ giúp chúng ta viết code một cách tối ưu, hiệu quả. Khả năng mở rộng, nâng cấp cho hệ thống sau này.

Hiện nay có hơn 25 bản Design Pattern phục vụ cho việc tạo đối tượng, cấu trúc các đối tượng và hành vi các đối tượng. Mỗi Pattern đều có những mục đích riêng giúp mình nâng cấp sau này các chức năng mà không phải đập hết các code cũ và viết lại cái mới.

8. Refactoring

Sẽ có những lúc mình đọc code của người khác và muốn sửa lại làm cho nó dễ đọc hơn, để bảo trì và nâng cấp. Thì Refactoring là những kỹ thuật giúp mình làm được điều đó. Refactoring gồm các kỹ thuật tách hàm, biến, class phức tạp , khó hiểu thành những dòng code nhỏ hơn, dễ hiểu hơn nhưng vẫn đảm bảo chức năng chạy đúng. Hiện nay, có hơn 20 kỹ thuật để giúp mình viết lại, chỉnh sửa code có sẵn để nó trở nên nhỏ gọn và dễ hiểu.

9. Devops

Đối với một lập trình Java hiện đại, ngoài việc viết code mình cũng phải trang bị các kiến thức về Devops. Mình phải biết các kỹ thuật và tool để thực hiện các công việc tự động build, tự động tích hợp và tự động deploy (triển khai) sản phẩm. Các công nghệ mà lập trình viên Java cần trang bị là Docker, K8s , Ansible, Jenkins.

10. Unit Test

Một lập trình viên chuyên nghiệp, tay nghề cao thì việc đầu tiên trước khi họ viết code thì họ sẽ viết Unit Test trước. Để đảm bảo một chức năng chạy luôn đúng thì lập trình viên phải viết tất cả các Test case xảy ra đối với chức năng đó. Lập trình viên dự đoán những tình huống xảy ra thông qua việc viết các Unit Test. Thực tế các dự án mà tôi làm cho thấy, những dự án nào có Unit Test bao phủ 80% thì đó là những dự án có chất lượng tốt. Để đạt 80% cũng là việc rất khó nhưng team luôn đặt ra mục tiêu là 80% các chức năng phải được bao phủ bởi Unit Test nếu không thì sẽ không được release cho khách hàng.

Trong Java thì tôi hay sử dụng JUnit và Mockito để làm Unit Test cho các chức năng của sản phẩm.

Kết luận

Để trở thành một lập trình viên Java chuyên nghiệp thì còn phải học rất nhiều cái khác nữa. Nhưng chỉ cần các em biết được 10 chủ đề ở trên thì là quá tuyệt rồi. Ở các công ty Java, họ mong muốn tìm được một người có kỹ năng đạt được 10 điều trên. Đó cũng chính là các kỹ thuật bắt buộc mà một Dev Java mong muốn trở thành Senior Java.

Author: Lê Vũ Nguyên

Đăng ký nhận bộ tài liệu học Java trên 2 trang giấy tại đây

Xem thêm: Java Coding Bootcamp là gì? Tổng quan về Java Coding Bootcamp


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.