Ở phần 1 mình đã chia sẻ về tài liệu và kinh nghiệm học Java, OOP Level 1, Level 2. Với level này các bạn cần dành ra 40-50 giờ tự học. Kết quả của Level 2 là bạn sẽ cần thành thạo các syntax ngôn ngữ Java và kiến thức nền tảng của lập trình hướng đối tượng.
Level 1. Tìm hiểu cú pháp Java
Đã cập nhật tại đây
Level 2. Tìm hiểu cơ bản Lập trình hướng đối tượng
Đã cập nhật tại đây
Level 3. Advanced Java Core
Level 3 là nội dung nâng cao của Level 1 (Các syntax Java). Mình rất tâm đắc với bộ đánh giá chứng chỉ của oracle là OCA (Oracle Certified Associate) , OCP (Oracle Certified Professional). Ở mức này có rất nhiều tài liệu để các bạn tự học. Mình list ra 2 cuốn mình đã học theo là OCA Java SE 8 và OCP Java SE 8.
Bạn tải tài liệu OCA, OCP tại đây: https://drive.google.com/file/d/1FBxKHtZdvuKrdJk9rqYwLrATUdtVxJ_r/view?usp=sharing và https://drive.google.com/file/d/13aVyrarw1Rfb_wNfsqJnT3q4YI8Rz1Lm/view?usp=sharing
Hai cuốn này đã giúp mình tiết kiệm thời gian học Java Core rất nhiều. Sách khá dài (mỗi cuốn khoảng 700 trang), nhưng bạn có thể skip các nội dung đã biết từ Level 1, Level 2.
Thời gian để đạt trình độ Level 3 sẽ khoảng 40 giờ. Tài liệu Java Core đề cập nhiều kiến thức và chi tiết nên có thể bạn sẽ bị bối rối và khó hiểu. Vì vậy bạn phải bắt tay vào implement thì bạn mới “ngấm” được sâu sắc. Mình nhắc lại, để đạt level này, việc quan trọng là dành nhiều thời gian cho THỰC HÀNH để tiến bộ.
Nếu phần 1 bạn đã học bài bản thì phần 3 này sẽ học rất nhanh. Hầu như các khái niệm đề cập bạn đều đã được nghe qua. Ở phần 3 Advance Java Core sẽ giải thích chi tiết, đi sâu vào các trường hợp cụ thể. Tóm lại trong phần 3 này các khái niệm bạn sẽ hiểu sâu sắc gồm có
– Java Basic: Class, java compile, java package, access modifiers
– Data Types: Primative variable, Object reference, Operation, String, Array, HashMap
– Methods: Override, Overload, Scope, Constructor, Flow Control
– Inheritance: Abstract Class, Base Class, Interface, Casting, Polymorphism, Is-a, Has-a2
– Exception: Throw, Custom Exception, Assertion, Try Catch
– Generics & Collection: List, Set, Queue, Comparator, Sorting, Search
– IO, String: java.io.File, byte stream, Format Date, Number, currency
– Thread & Concurrency: Runable, Excutor, Lifecycle thread, Deadlock, Atomic Variable
Phần nội dung Thread Concurrency sẽ là phần khó hiểu và phải đầu tư thời gian hơn cả. Theo kinh nghiệm của mình thì bạn nên kết hợp đọc tài liệu và thực hành code trong cuốn OCA, OCP, đồng thời tìm hiểu các khái niệm qua blog tiếng Việt như kipalog, viblo …
Các bạn học xong Level 3, có lẽ rất tự tin để được A trở lên môn OOP và Apply vị trí lập trình Java fresher và junior rồi 😀 Chỉ cần đầu tư 60 giờ học thôi 😉
Level 4. Hiểu về Design Pattern
Design Pattern là là mẫu thiết kế mô tả một vấn đề xảy ra lặp đi lặp lại, và trình bày trọng tâm của giải pháp cho vấn đề đó, theo cách mà bạn có thể dùng đi dùng lại được hiệu quả. Nói thì cao siêu nhưng thực ra design pattern xuất hiện rất nhiều trong code, có thể bạn chưa nhận ra chúng thôi :D.
Ví dụ như khi kết nối đến cơ sở dữ liệu, bạn sẽ khởi tạo một object duy nhất trong lần sử dụng. Bạn sẽ dùng pattern singleton … Khi bài toán của bạn trở nên phức tạp, có nhiều sự thay đổi hơn, lúc đó khoảng cách giữa lập trình viên giỏi và người chưa có kinh nghiệm là rất chênh lệch. Để lên “level” trong sự nghiệp của Developer thì kiến thức Design Pattern là “Must-have”.
Mình chia sẻ 2 tài liệu mà mình đã học hiệu quả là cuốn “Design pattern for dummies” và “Head first design patterns“. Tải tài liệu tại đây: https://drive.google.com/file/d/1f0XBSsmDQU_TDaHZQAfbuBiT4ddDIyK0/view?usp=sharing và https://drive.google.com/file/d/1Lz9XVV1Buh0LXTpcVGUpTFNg6f9CrR2X/view?usp=sharing
Thật sự với kiến thức về design pattern sẽ rất hiệu quả nếu bạn trải qua vài dự án nghiêm túc và phức tạp. Bởi nội dung trong sách sẽ đề cập đến nhiều tình huống thực tế và developer sẽ gặp phải. Ví dụ như bài toán trong sách sẽ đề cập kiểu như thế này: Công ty Grab hồi đầu chỉ có chức năng Book xe và thanh toán Online. Tuy nhiên sau 6 tháng, bên sản phẩm “đòi” tính năng Đặt đồ ăn, Giao hàng, … Những yêu cầu này nếu không có thiết kế kiến trúc hệ thống, design pattern tốt thì có lẽ rất lâu mới có thêm được tính năng. Thậm chí phải bỏ code cũ đi xây lại.
Hai cuốn này kiến thức khá tương tự nhau. Tùy theo bản thích phong cách trình bày nào thì sẽ follow cuốn đó. Quyển Design pattern for dummies rất hợp với bạn thích hiểu sâu sắc thiết kế và bài toán thực tế. Còn quyển “Head first design patterns” sẽ tiếp cận rất tự nhiên và trình bày “dễ” hiểu hơn.
Ngoài ra, vì kiến thức Design Patterns sẽ phức tạp, bạn nên search ví dụ về patterns qua blog công nghệ (cả blog người Việt và nước ngoài). Thời gian để Master Level Design Patterns này thật sự rất khó đánh giá. Thời gian các bạn đọc và thực hành theo cuốn này sẽ cần khoảng 50 giờ. Để lên trình độ và áp dụng thành thạo thì việc tham gia dự án thực tế là rất cần thiết. Đặc biệt ở level này, nếu bạn có Mentor (người đi trước) thì học sẽ nhanh và đỡ nản hơn. Hi vọng sau 1-2 năm làm Java các bạn sẽ áp dụng được 1/3 số mẫu patterns là rất tốt rồi :D.
Level 5.1 Dành cho phát triển Mobile
Level 5.2 Dành cho phát triển Web
Level 5.3 Dành cho phân tích dữ liệu
Updating
Hiện tại chúng mình đang tìm Developer vị trí Front-End và Fullstack để đồng hành với BeeCost Team. Các bạn tìm hiểu thêm về Team và thông tin tuyển dụng ở đây nhé. Nội dung cho Level 5 sẽ rất dài nên các bạn nhớ đăng kí theo dõi nha <3
Cảm ơn bạn đã ủng hộ BeeCost !