Như những bạn khác đã comment ở trên, tớ cũng cảm thấy cậu đang bị confuse và nhầm lẫn giữa việc “giỏi toán” thì “viết code hay, chạy nhanh, tối ưu”. Nó giống như việc cậu nghe nói mấy người giàu có, thành công thường ngủ ít, và cậu ngủ ít với hi vọng thành công được như họ.
Tớ có thể thấy cậu là software developer ở lĩnh vực fintech, đang ở mức “senior” (ít nhất về mặt title). Tớ không biết cậu định tiến xa đi đâu nữa, cơ mà tớ khá chắc cậu không cần giỏi toán để có thể làm được ở lĩnh vực này. Như @hungaya đã chỉ ra, trừ khi cậu cần sử dụng toán học vì cậu cần làm những công việc khoa học, hay mô phỏng thực tế…, còn với software developer ở fintech, tớ không thấy lợi ích gì rõ rệt.
Ở buổi phỏng vấn cậu mô tả, cũng như việc mô tả anh bạn “code hay, tối ưu, chạy nhanh”, cho thấy cậu khá kém về giải thuật. Đó là điểm yếu khiến cậu đưa ra các giải pháp cài đặt thiếu hiệu quả hơn, cơ mà nó cũng không quá nghiêm trọng với ngành fintech. Cậu có thể cải thiện nó, cơ mà cá nhân tớ, học giải thuật sẽ chỉ giúp cậu:
- Train tư duy logic. Toán, chơi cờ vua, giải câu đố… cũng là thứ làm điều tương tự với cậu.
Nó tương tự như cậu đi nâng tạ - vốn chẳng giải quyết được việc gì - để train cơ bắp của cậu.
- Đi phỏng vấn. Cậu cần clear vòng coding test ở rất nhiều buổi phỏng vấn.
- Hiểu rõ hơn bản chất những công nghệ, hệ thống hoạt động ra sao ở mức độ cài đặt, khi cậu cần nghiên cứu sâu cài đặt của nó. Nếu cậu chỉ đơn thuần sử dụng công nghệ và làm trên tầng bề mặt của công nghệ, cậu chắc cũng không cần lắm về giải thuật.
Ở mức senior, tớ nghĩ cậu sẽ có xu hướng viết code ít hơn, design nhiều hơn, thậm chí đôi khi làm công việc tổ chức, lên kế hoạch, mentor và quản lý nhiều hơn. Các vấn đề cậu cần giải quyết sẽ không chỉ ở từng method/variable, hay 1 software cụ thể, mà là vấn đề ở quy mô lớn hơn. Giải thuật chắc chắn không có nhiều ích lợi khi cậu design system hay làm các việc tớ đề cập ở trên, mà những practice @lethienhoang.eth mô tả ở trên mới giúp cậu rõ rệt hơn. Thậm chí, cậu còn cần nhiều hiểu biết hơn về system design ở quy mô kiến trúc lớn hơn, để làm công việc của một senior engineer/developer.
Nếu cậu vẫn muốn bỏ thời gian quý báu của mình để học giải thuật, cậu nên cân nhắc đọc comment của @noname00. Cơ mà bỏ thời gian của cậu để học toán, thì tớ nghĩ nó khá lãng phí với vị trí của cậu (trừ khi cậu muốn đổi lĩnh vực có nhiều yếu tố khoa học, và cần nhiều toán hơn).
Bản thân tớ thấy ngay cả việc ôn giải thuật để chuyển việc đã rất mất thời gian và tương đối vô dụng rồi (đừng hiểu nhầm, tớ có kiến thức tốt về giải thuật, cơ mà để chuyển việc, tớ vẫn cần luyện tập lại trên leetcode để luyện lại khả năng viết code kiểu đó nhanh hơn).