Yếu thuật toán nhưng thạo công nghệ, framework

Xin chào các ac, hiện tại em là sinh viên năm 4 ngành cntt nhưng em đang gặp 1 vấn đề chí mạng là yếu dsa và nền toán hơi có giới hạn. nhưng e vẫn không hiểu sao nếu làm projects thực tế thì vẫn khả năng tư duy logic để xử lí được vẫn có thể tư duy định hình được luồng đi hệ thống và xử lí được, em có dành ra để học thuật toán nhưng có vẻ không vào được tí nào… toàn thời gian chính e toàn tìm hiểu các công nghệ , framwork, mới web, app,v.v đều rất hứng thú (tức cá nhân em sẻ dùng các công nghệ, framwork để giải quyết bài toán cho hệ thống và khách hàng) còn đụng đến dsa thì e chịu cứng. khả năng hard code nếu k dùng AI vẫn gõ tốt ạ. mn cho e xin lời khuyên từ nhiều góc độ khác nhau. tks mn

Information technology based on logic and logic roots in mathematics. If you are weak in math, your studies will be like a castle built on sand. Any wave of water will destroy it.

You confuse a work tool with a concept or idea. A framework or other IT development app is simply a tool, like a hammer or a wrench, used to work on an entity or concept based on data structure, logic, and algorithms. For example, DSA (Data Structures and Algorithms) is an entity or a concept composed of various sub-entities such as conceptual structure (logical architecture), data structure, basic algorithms, and so on. From this perspective, a tool like a framework is useless because it is not suitable for solving an entire concept like DSA.

In IT, you need to have an abstract understanding, an imagination of the work you want to materialize or create. This abstract understanding is a combination of mathematical, logical, and structural processes (or sequences) that form the final entity as a concept. Without abstract understanding, all sophisticated tools like frameworks, AI development apps, and so on are like useless junk. This is what is called IT development.

If you want to make progress, you should examine yourself to see whether you are able to train your abstract imagination or not.

Chào bạn, mình hiểu rất rõ tình trạng của bạn vì đây là vấn đề phổ biến với nhiều sinh viên IT. Mình sẽ chia sẻ từ nhiều góc độ khác nhau để bạn có cái nhìn toàn diện.

Góc nhìn thực tế từ thị trường

Điều quan trọng: Trong thực tế công việc, khả năng giải quyết vấn đề và xây dựng sản phẩm (như bạn đang làm) quan trọng hơn rất nhiều so với việc giải các bài toán DSA phức tạp. Đa số các công ty không cần bạn viết thuật toán sắp xếp từ đầu - họ cần bạn xây dựng được hệ thống hoạt động tốt.

Góc nhìn từ kinh nghiệm của senior dev

Bạn không cô đơn: Nhiều developer giỏi cũng từng “sợ” DSA nhưng vẫn thành công. Sự khác biệt là họ tìm cách học DSA thông qua thực tế thay vì học lý thuyết khô khan.

Gợi ý thực tế:

  • Khi xây dựng project, mỗi khi gặp performance issues, hãy tìm hiểu cách optimize - đây chính là DSA thực tế
  • Ví dụ: Khi query database chậm, bạn sẽ học về indexing (một dạng tree structure)
  • Khi xử lý nhiều data, bạn sẽ học về caching, pagination - đều liên quan đến DSA

Góc nhìn từ phương pháp học

Thay đổi cách tiếp cận:

  • Đừng học DSA như môn học thuần túy
  • Hãy học khi cần thiết: “Mình cần optimize cái này, vậy thuật toán nào phù hợp?”
  • Dùng visualizer để hiểu thay vì nhớ code: VisuAlgo.net là tool tuyệt vời

Lộ trình thực tế 3 tháng:

  • Tháng 1: Focus vào 3 cấu trúc cơ bản nhất - Array, HashMap, Stack/Queue
  • Tháng 2: Học Tree và Graph thông qua việc hiểu cách database indexing hoạt động
  • Tháng 3: Luyện 1-2 bài DSA/tuần trên LeetCode easy/medium, nhưng chọn bài có context thực tế

Góc nhìn từ kỹ năng mềm

Điểm mạnh của bạn:

  • Khả năng tư duy hệ thống và xây dựng sản phẩm - đây là skill cực kỳ quan trọng
  • Kỹ năng self-learning tốt khi tự tìm hiểu công nghệ mới
  • Hard code tốt - nền tảng vững chắc

Lời khuyên cụ thể:

  1. Tiếp tục đam mê của bạn: Đừng bỏ việc học công nghệ mới, đây là lợi thế cạnh tranh
  2. Học DSA theo kiểu “just-in-time”: Khi nào cần thì học, không cần học trước
  3. Build portfolio mạnh: Focus vào các project có giải quyết vấn đề thực tế, có thể kèm phần giải thích cách bạn optimize performance

Gợi ý hành động ngay từ hôm nay

  1. Chọn 1 project hiện tại của bạn, tìm 1 chỗ có thể optimize (VD: search functionality)
  2. Implement simple optimization: Dùng HashMap thay vì loop qua array
  3. Document lại quá trình: Viết blog post chia sẻ cách bạn cải thiện performance, đây sẽ là portfolio rất đẹp

Bạn đang đi đúng hướng. Đừng để DSA làm mất đi đam mê xây dựng sản phẩm của bạn. Trong thực tế, khả năng deliver sản phẩm hoạt động tốt quan trọng hơn việc bạn có thể viết quicksort từ đầu hay không.

1 Like

Không cần phải làm nặng DSA đâu. Nếu tư duy không tốt thì cứ framework mà vả thôi. Tôi làm tốt DSA nhưng khi đụng việc thực tế vẫn phải dùng framework. Mục tiêu của framework là tối ưu thời gian phát triển. Chỉ khi dữ liệu mất chục ngàn, triệu record thì mới lo thôi. Chứ outsource 1, 2 con web app thông thường thì có gì mà phải lo DSA? Bạn xây web/app cho Google hay Meta mà phải lo chuyện đó?

Còn Toán thì dẹp đi, xong THPTQG thì quăng một bên nếu bạn không đi nghiên cứu hay muốn học chuyên sâu phục vụ chuyên môn thì học cũng không ích lắm đâu. Dev chả ông nào dùng quá nhiều đạo hàm tích phân đâu, trừ những ông elite mảng AI.

Qua cách bạn viết thì trình dev không phải dạng tốt. Cứ dùng đồ có sẵn là đc rồi.

1 Like

Tóm tắt quan điểm của Duck Gia

Duck Gia cho rằng:

  • DSA và Toán không cần thiết cho lập trình thực tế
  • Framework đã giải quyết mọi vấn đề
  • Chỉ cần “dùng đồ có sẵn” là đủ

Phân tích chi tiết

1. Về DSA và framework

  • Đúng: Framework giúp tăng tốc phát triển
  • Sai: Framework không thay thế hiểu biết về cấu trúc dữ liệu
  • Ví dụ: Khi gặp performance issue với React app có 10k components, không hiểu Big-O sẽ không biết tối ưu ở đâu

2. Về quy mô dữ liệu

  • “Chỉ khi triệu record mới lo” - đây là mindset nguy hiểm
  • Ngay cả với 1k users, O(n²) vs O(n log n) đã tạo ra khác biệt rõ rệt
  • Startup thất bại không chỉ vì tech stack, mà vì không scale được khi tăng trưởng

3. Về Toán học

  • Đúng: Dev thường không dùng đạo hàm
  • Sai: Toán trong lập trình không chỉ là calculus
  • Linear algebra cho graphics, statistics cho ML, discrete math cho algorithms

4. Về mindset "cứ dùng đồ có sẵn"

  • Đây là mindset “code monkey”, không phải engineer
  • Khi có bug trong library/framework, không hiểu internals thì stuck
  • Senior dev khác junior ở chỗ biết “when” và “why”, không chỉ “how”

Kết luận

Ý kiến này phản ánh một mindset phổ biến nhưng ngắn hạn. Trong thị trường việc làm hiện tại:

  • Junior dev có thể “vả framework” được
  • Nhưng để lên senior/staff level, cần hiểu fundamentals

Lời khuyên: Học DSA và Toán không để “dùng hằng ngày”, mà để:

  • Debug nhanh hơn
  • Design tốt hơn
  • Và quan trọng nhất: không bị “lock-in” vào bất kỳ framework nào

Ý kiến của Duck Gia phản ánh một thực tế phổ biến trong giới lập trình: nhiều người chỉ học đủ để “làm được việc” mà không đầu tư vào nền tảng. Quan điểm “cứ framework mà vả” nghe có vẻ thực tế nhưng lại là một cái bẫy ngọt ngào. Khi bạn chỉ biết dùng đồ có sẵn, bạn sẽ luôn phụ thuộc vào những gì người khác đã viết sẵn. Đến khi gặp vấn đề không có trong tài liệu, hoặc khi cần tối ưu hiệu năng cho một tính năng quan trọng, bạn sẽ bị tê liệt vì không hiểu cơ chế hoạt động bên trong.

Việc coi DSA và toán học là “không cần thiết” cho lập trình thực tế cũng là một hiểu lầm lớn. DSA không chỉ là việc viết lại quicksort hay binary search từ đầu - nó là cách bạn hiểu được tại sao một cách tiếp cận lại tốt hơn cách khác, tại sao cái này chạy nhanh hơn cái kia. Ngay cả khi làm những “con web app thông thường”, việc không hiểu độ phức tạp thuật toán có thể khiến bạn tạo ra những hệ thống chậm chạp, không thể scale khi user tăng lên chỉ vài trăm người.

Quan trọng nhất, mindset “chỉ học những gì dùng được ngay” sẽ khiến bạn mãi mãi chỉ là một code monkey. Những người thực sự tạo ra sự khác biệt - dù là trong AI, web development, hay bất kỳ lĩnh vực nào - đều có nền tảng vững chắc về khoa học máy tính. Họ không chỉ biết “làm thế nào” mà còn hiểu “tại sao phải làm như vậy”.

1 Like

Bravo!
Gen Z is shortening development work with frameworks, IDEs, Spring, and the like. If a Gen Z suddenly finds himself in an IT environment where Notepad or Gedit is the only editor for development work, he immediately panics.
Today, a Gen Z is perfectly familiar with smartphones, but if a nut on his bike comes loose, he’ll take it to the repair shop.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?