Năm 2024 cũng đã sắp hết, và một năm mới nữa sắp đến. Có lẽ bây giờ là thời điểm thích hợp nhất cho mình đặt ra những mục tiêu phát triển kiến thức của bản thân trong năm tiếp theo.
Toán Rời Rạc
Đây là một trong những chủ đề mình mong muốn tìm hiểu thêm đã lâu, nhưng 6 tháng gần đây mới thực sự có cơ hội ngồi xuống và ôn lại những gì mình từng được học. Là một người xuất thân không phải gốc từ các ngành liên quan đến IT (CompSci, SE, etc) càng đi làm lâu và tìm hiểu nhiều mình càng thấy được nhiều thiếu xót trong việc hiểu gốc rễ của các vấn đề.
Mình không nói đến các vấn đề về business hay technical mà mình hay gặp phải trong công việc, mà mình thấy khó khăn trong việc hiểu những lý do tại sao một phần mềm, đoạn code lại được viết như vậy và tại sao nó lại nhanh đến thế. Các ứng dụng real-time như ngân hàng hay theo dõi hành trình máy bay tại sao có thể có hiệu suất vượt trội như vậy? Rất nhiều câu hỏi được đặt ra, và nó khiến mình thực sự muốn tự tạo ra chúng, và mình đã quyết định chọn một lĩnh vực mới cho bản thân đó chính là compiler/interpreter.
Sau khi tìm hiểu rất nhiều thứ liên quan đến domain này, mình nhận ra mình cần phải học thêm về Toán rời rạc (Discrete Maths), sâu hơn nữa về cấu trúc dữ liệu và giải thuật, nhiều hơn nữa lý thuyết (Ví dụ như Theory of Computation). Nhưng chung quy lại Toán sẽ là phần mà mình tin rằng sẽ giúp mình hiểu được phần, hoặc ít nhất giúp mình tự tin giải thích được những điều mình còn thắc mắc.
Một số khoá học và sách hiện tại mình đang theo học:
- Rosen, Discrete Mathematics and Its Applications, 7th Edition - Amazon
- Single Variable Calculus - MIT Open Learning library
- Mathematics for Computer Science - MIT Open Learning library
- Discrete Maths - Youtube Playlist
Thiết kế Compiler và tìm hiểu sơ lược về kiến trúc máy tính
Đương nhiên mình không thể học mãi lý thuyết mà không thực sự bắt tay vào làm nó. Điều đó sẽ giúp mình thực sự hiểu và nhớ những kiến thức mình đã được học và hiểu được những tradeoffs có thể có khi sử dụng các kỹ thuật khác nhau. Mình cũng mong rằng khi mình tìm hiểu được những phần này, mình cũng sẽ rõ hơn về tổng quan các phần mềm, và cùng có thể viết một số bài chia sẻ về góc nhìn của cá nhân. Hiện tại mình đã code thử một phần liên quan đến lexical analysis nhưng vẫn chưa thể coi là ổn. Mình chắc chắn sẽ còn phải học và thực hành nhiều trong phần này. Một số khoá học và sách hiện tại mình đang theo học:
- Engineering a Compiler - Amazon
- Compilers - Principles, Techniques & Tools - Amazon
- Writing a Compiler - Amazon
- Nand2Tetris - Webpage
Đóng góp vào các dự án mã nguồn mở
Mặc dù mục tiêu chính hiện tại của mình liên quan đến compiler, tuy nhiên mình vẫn muốn có thể có một chút đóng góp cho các mảng khác để những kỹ năng hiện tại không mai một đi. Và cách làm tốt nhất trong thời gian rảnh mình có thể nghĩ ra đó chính là đóng góp vào những dự án opensource. Đây là một trong những điều mình chưa bao giờ làm trước đây, tuy nhiên sau một khoảng thời gian đi làm đủ lâu, mình đã cảm thấy tự tin hơn rất nhiều về kỹ năng của mình, đặc biệt là khi liên quan đến research và thực hành. Do đó, đây có lẽ là một trong những mục tiêu mình mong muốn đạt được trong năm 2025, đóng góp vào ít nhất 1 dự án mã nguồn mở. Nghe 1 có vẻ khiêm tốn, nhưng ai cũng phải bắt đầu từ đâu đó và mình mong rằng mình có thể đạt mục tiêu này càng sớm càng tốt.
Cách mình tìm hiện tại đang nghĩ đến hiện có là đi dạo trên Github và các nhóm tìm kiếm người trên Reddit. Mặc dù mình sử dụng Reddit chưa lâu nhưng mình cảm thấy cộng đồng trên đó khá năng động, và tương tác tương đối nhanh chóng giữa người với người khác hẳn với các nên tảng mạng xã hội khác.
Lời kết
Đây chỉ là những mục tiêu chính của mình đặt ra cho bản thân, và mình mong rằng mình sắp tới mình sẽ có một bước đệm đủ lớn để giúp mình thực sự tập trung vào phát triển mạnh hơn nữa kiến thức của mình cũng như đóng góp nhiều hơn cho cộng đồng IT nói chung.
Còn mọi người thì sao? Năm nay mọi người dự định sẽ làm gì và học tập phát triển như thế nào?
Chúc mừng năm mới!!!