Kiến thức và kĩ năng
Học lực và giai đoạn đi học
Về học lực: Cấp 3 tôi học trường THPT Bùi Thị Xuân - TPHCM. Sau đó, tôi đậu vào ngành CNTT đại trà của Khoa học tự nhiên bằng điểm thi Đánh giá năng lực (được 881 điểm so với điểm chuẩn 880). Thành tích học tập ở cấp 3 và đại học tôi tự đánh giá ở mức tạm ổn đến khá.
Tự học: bản thân tôi đề cao việc tự học và sự tìm tòi. Ở cấp 3, tôi đã tìm cách tự học qua các khóa học online thay vì đi học thêm. Nhưng phải đến khi lên Đại học một thời gian thì tôi mới thật sự nghiêm túc và biết cách tự học hiệu quả.
Kiến thức chuyên môn
Nền tảng
Tôi nhận ra điều quan trọng nhất sau khi tốt nghiệp Đại học với tôi đó là tôi xây dựng được 1 nền tảng kiến thức vững về nhiều thứ. Đó không chỉ là lập trình, mà còn là toán học, logic và cách suy nghĩ, các kiến thức về máy tính, về thế giới xung quanh…
Tôi không cho rằng hiện tại mình có thể giải tay suôn sẻ các bài tích phân đạo hàm như thời đi học, nhưng tôi biết về chúng và hiểu các khái niệm ấy nếu được nhắc đến. Bản thân tôi hiện tại, với nguồn tài nguyên phong phú của internet và AI, tôi nghĩ mình hoàn toàn có thể thích ứng với nhiều lĩnh vực và chủ đề khác nhau trong ngành Phần mềm cũng như Khoa học máy tính
Trong thời đại AI, có nhiều luồng tranh luận về việc nên học rộng hay học sâu. Bản thân tôi cho rằng cần phải phối hợp hài hòa cả hai, tôi định hướng mình phát triển theo hướng T-shaped, có kiến thức rộng ở nhiều chủ đề nhưng vẫn cần có kiến thức sâu ở 1 mảng nhất định (cụ thể là backend development trong sự nghiệp của tôi)
Lập trình và khoa học máy tính
Một số ngôn ngữ lập trình và khái niệm tôi từng làm quen :
- Javascript: 1 số chủ đề thú vị trong lập trình hàm (functional programming) như hoisting, lambda. Cơ chế xử lý bất đồng bộ
- Java: Đây là ngôn ngữ chính trong việc phát triển backend của tôi. Tôi tìm hiểu về các chủ đề như java core và OOP, các cú pháp java hiện đại qua từng phiên bản, java concurency,…
- C++ : cú pháp cơ bản, con trỏ và quản lý bộ nhớ
- Python: cú pháp cơ bản và 1 số thư viện liên quan đến AI, data
- Database: cú pháp sql cơ bản và cách tối ưu câu lệnh, indexing, 1 số cơ chế như Isolation level, MVCC, WAL,…
- Mạng máy tính: các khái niệm cơ bản như HTTP, UDP, TCP, Socket, Routing, Proxy,…
- OS và máy tính: hiểu về cách máy tính hoạt động, lịch sử ra đời cũng như một khái niệm như process, thread, scheduling, file system…
- OOP: hiểu và áp dụng rộng rãi các tính chất của lập trình hướng đối tượng trong các project dùng java
- AI: có nền tảng và cập nhật thường xuyên các kiến thức AI như LLM, agent, model
Một số quan điểm của tôi khi học lập trình
Đây là một số quan điểm cá nhân và định hướng của tôi khi bước vào lập trình
-
Không có 1 giải pháp hoàn hảo (there are no silver bullets): Tôi nghĩ ngành lập trình luôn xoay quanh khái niệm trade-off, và mọi lựa chọn đều có những đánh đổi riêng. Do đó điều quan trọng không phải là cố tạo ra một giải pháp hoàn hảo mà là lựa chọn các mảnh ghép phù hợp
-
Abstraction: Khái niệm trừu tượng xuất hiện trong mọi ngách của lập trình. Từ những ngôn ngữ bậc thấp, đến các framework hay công nghệ mới và bây giờ là AI generation. Do đó tôi nghĩ việc có một suy nghĩ trừu tượng và nhận biết được các đánh đổi khi bọc một lớp trừu tượng lên là rất quan trọng với lập trình viên
-
Agentic coding (vibe coding): Tôi nghĩ việc dùng AI để code là một xu thể phát triển tự nhiên và không nên bài xích, mà cần thuận theo để tận dụng sức mạnh của nó. Tuy nhiên, cũng cần phải thận trọng khi sử dụng AI. Sử dụng prompt để AI tạo code có sự mơ hồ nhất định, và AI là non-deterministic (không xác định) khác với compiler. Do đó rất cần việc xác thực lại mã nguồn do AI sinh ra
-
Học tập và định hướng thời AI: Trước khi AI tham gia sâu vào việc lập trình, thì tôi đã có quan điểm rằng software engineer cần có kiến thức rộng về nhiểu thứ và luôn sẵn sàng tìm hiểu những các khái niệm, domain cần thiết để lập trình tốt hơn. Hiện tại thì AI đã làm điều đó trở nên rõ ràng. Bản thân tôi khi lập trình các project như film-db, cũng phải tìm hiểu thêm về UI-UX, hoặc các insight về phim ảnh để thiết kế search engine tốt hơn
-
AI liệu có thay thể lập trình viên ? : Tôi cho rằng AI là một công cụ mạnh hỗ trợ lập trình viên hơn là thay thế. Lịch sử lập trình từ xưa đến nay luôn theo xu hướng tạo ra các công cụ và công nghệ mới để giúp lập trình viên viết code hiệu quả hơn, đồng thời các phần mềm cũng trở nên phức tạp hơn để đáp ứng nhu cầu của thế giới bên ngoài.