Nếu bạn quyết định trở thành một Java Jedi thì con đường phía trước khá là dài đấy 😁
Hãy bắt đầu bằng việc code mỗi ngày. Thực hành song song với học một chút lý thuyết. Bước đầu tiên là tiếp cận Java Core. Đây là chìa khóa quan trọng quyết định sự thành bại của bạn. Bước này được chia thành nhiều level (chi tiết bên dưới). Bước thứ hai là học những công nghệ khác nhau mà mọi lập trình viên nên biết. Bước cuối cùng phụ thuộc vào cụ thể những gì bạn muốn làm.
Bước một: Java Core +
Level 0: Java Syntax
Bước này giống như việc bạn học viết từng chữ cái ABC nhưng là áp dụng với Java. Ban đầu bạn chỉ được dạy đơn lẻ từng chữ cái, từ đó có thể ghép chúng thành các từ rồi câu văn. Việc học một ngôn ngữ lập trình cũng tương tự, bạn đừng lo lắng. Bạn sẽ hiểu hơn về cú pháp của Java qua quá trình thực hành.
Các chủ đề bạn cần tìm hiểu:
- Object là gì?
- Class là gì?
- Phương thức (method) trong Java là gì?
- Các dữ liệu nguyên thủy (primitive types)
- Loại String
- Các toán tử cơ bản (basic operators) trong Java
- Câu lệnh điều khiển if - else
- Vòng lặp trong Java (for, while)
- Mảng
Level 1: Lập trình hướng đối tượng (Object-oriented programming, viết tắt là OOP)
OOP không phải là chủ đề khó nhất trong lập trình song nó lại vô cùng quan trọng. Bạn cần đọc hiểu và thực hành các nguyên lý hướng đối tượng. Hãy chăm thực hành và đọc nhiều sách lên (ví dụ quyển Core Java của Cay Horstmann vàGary Cornell, quyển Object-Oriented Analysis and Design của McLaughlin)
Các chủ đề bạn cần tìm hiểu:
- Tính kế thừa
- Tính trừu tượng
- Tính đóng gói
- Tính đa hình
Level 2: Java Collections
Bạn có thể gọi một nhóm các đối tượng được biểu diễn dưới dạng một unit là Collection. Java cung cấp Collection Framework.
Bạn cần tìm hiểu về các cấu trúc dữ liệu có kiểu interface Java Collection (java.util.Collection) và interface Map (java.util.Map). Có thể coi chúng là hai interface "gốc rễ" chính của các Java collection class.
Level 3: Các ngoại lệ trong Java
Một ngoại lệ là một tình huống bất thường phát sinh trong quá trình thực hiện chương trình. Cơ chế này đơn giản hóa rất nhiều việc bắt lỗi trong các chương trình. Tất cả các class ngoại lệ đều là lớp con kế thừa từ java.lang.Exception . Mọi học viên học Java nên biết rõ điều đó.
Level 4: Các luồng vào (input)/ luồng ra (output) trong Java
Java thực hiện các hoạt động Input và Output thông qua Stream. Bạn có thể tưởng tượng một stream giống như một dòng dữ liệu liên tục. Điều này có thể hơi khó đối với người mới bắt đầu. Tuy nhiên khi đã hiểu về nó, bạn sẽ khám phá ý nghĩa ẩn thực sự của System.out.println ().
Level 5: Giải thuật (algorithms) và puzzles
Vậy còn giải thuật thì sao? Các lập trình viên vẫn luôn tranh luận về giá trị của việc học cách các thuật toán sắp xếp và tìm kiếm. Trong quá trình tìm hiểu về collection và cấu trúc dữ liệu, bạn sẽ được tìm hiểu về các phương thức sắp xếp / tìm kiếm. Java cũng giống như hầu hết các ngôn ngữ khác đều có thư viện giúp triển khai các thuật toán sắp xếp và tìm kiếm. Nghĩa là bạn chỉ việc lôi ra sử dụng. Nếu vậy, bạn có cần thiết phải biết về cách code chúng hay không?
Câu trả lời là - bạn nên học nó để rèn luyện khả năng tư duy như một kỹ sư phần mềm. Nó rất hữu ích khi bạn muốn tự phát triển thuật toán của riêng mình dựa trên những gì đã có. Các thuật toán sắp xếp và tìm kiếm phổ biến đều có thể dễ dàng search được trên mạng. Hãy tìm hiểu sau đó thử tạo ra một cái gì đó của riêng bạn >.<
Luyện tập nhiều các câu đố, giải bài tập cựu kì hữu ích cho bạn. Bạn có thể luyện tập trên Hackerrank hay Codefight. Vừa học vừa chơi.
Level 6: Đa luồng trong Java
Qua level 0, tất cả mọi người đều đã có thể tự viết chương trình Hello World. Tuy nhiên làm thế nào để có thể đồng thời chạy câu lệnh in ra HelloWorld??? Bạn cần tìm hiểu về đa luồng. Đây là một topic Java nâng cao.
Level 7: Java Patterns
Đến level này, bạn đã có thể viết được một vài chương trình thậm chí là một ứng dụng Java nhỏ. Tuy nhiên như vậy đã đủ chưa? Code không chỉ cần chạy được mà còn cần tối lưu. Để viết code như một pro thực thụ, bạn cần học về design pattern. Design pattern giải quyết nhiều vấn đề chung mà các nhà phát triển phần mềm gặp phải trong quá trình lập trình. Các pattern này được được đúc kết từ kinh nghiệm của nhiều lập trình viên, trải qua nhiều lần thử nghiệm và fix lỗi trong thời gian đáng kể.
Level 8: Unit testing
Một kỹ năng quan trọng cần thiết mà bất kỳ lập trình viên nào cũng cần biết đó là viết các unit test. Bạn nên tạo thói quen viết test cho các project của mình. Việc kiểm tra bằng unit test hữu ích hơn nhiều so với kiểm tra bằng console output. Viết unit test cũng là công việc mà nhiều công ty yêu cầu các fresher hay junior thực hiện.
Level 9: Lambdas
Lambdas xuất hiện từ Java 8. Tôi khuyên bạn nên tìm hiểu nó.
Level 10: Tuần tự hóa trong JSON, RMI, HttpUrlConnection, socket
Các topic này dành cho các lập trình viên Java trung cấp và cao cấp hơn.
Vậy nên thực hành ở đâu để đạt từ level 0 đến level 10 ?
w3resource - đây là một trang web tốt và rất nổi tiếng cho các nhà phát triển web.
GeeksForGeeks - (đặc biệt là algorithms and puzzles) - tài nguyên rất hay với nhiều nhiệm vụ và các khóa học khác nhau.
Bước 2: Các tiện ích bổ sung
Các lập trình viên Java không chỉ sử dụng Java core mà còn nhiều công nghệ khác nhau. Một trong số công nghệ đó đã trở thành một tiêu chuẩn, buộc tất cả các dev đều phải biết. Tuy nhiên, điều đó không có nghĩa là bạn phải biết các hết các công nghệ này và biết sâu như Java Core. Hãy tìm hiểu từng chút trong quá trình học tập và làm việc thực tế.
Git có hệ thống kiểm soát phiên bản được sử dụng rộng rãi nhất để theo dõi những thay đổi trong các file máy tính và điều phối công việc trên các file đó giữa nhiều người. Vì vậy, nếu bạn muốn trở thành một lập trình viên chuyên nghiệp, hiểu Git là một yêu cầu thiết yếu. Hầu như mọi công ty phần mềm đều sử dụng Git.
JavaScript. Đây là ngôn ngữ kịch bản hướng đối tượng đa nền tảng này được tìm thấy trong trình duyệt web. JavaScript có thể kết nối với các đối tượng trong môi trường của nó để cung cấp quyền kiểm soát theo chương trình đối với chúng. Vì vậy, JavaScript có ở khắp mọi nơi và ngay cả khi bạn không muốn làm việc với tư cách là lập trình viên frontend, từ JavaScript vẫn là một tiện ích bổ sung tốt cho CV của bạn nếu bạn hiểu rõ về nó.
SQL. Được định nghĩa bởi Wikipedia là Ngôn ngữ truy vấn có cấu trúc là ngôn ngữ miền chuyên biệt được dùng để trong lập trình và được thiết kế để quản lý các dữ liệu được lưu giữ trong hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) hoặc để xử lý luồng trong hệ thống quản lý luồng dữ liệu quan hệ (RDSMS). Nó rất dễ học ở cấp độ mới bắt đầu. Hầu như mọi lập trình viên đều đã sử dụng SQL.
Bước 3: Trở thành master
Hầu hết các lập trình viên Java đều làm việc trong hai mảng: di động hoặc enterprise projects. Sau khi bạn có được kiến thức cốt lõi trong 2 bước đầu tiên, chúng ta chia thành 2 nhánh khác nhau. Ngắn gọn như sau:
Các công nghệ di động
Kiến thức về Java mở ra thế giới phát triển Android vô cùng rộng lớn. Hãy tham khảo một nơi tuyệt vời để bắt đầu học lập trình Android như Google Developers Training
Enterprise projects
Bao gồm nhiều công nghệ yêu cầu bạn phải tự học thêm (Spring, Hibernate, ...) . Sẽ tốt hơn nếu bạn tham gia vòa một khóa học cụ thể về nó hoặc được đào tạo on job. Có rất nhiều khóa học miễn phí trên Udemy bạn có thể tham khảo.
Bài viết được tham khảo tại đây, hi vọng nó hữu ích đối với bạn!
Bình luận