Học thuật toán lập trình là một trong những từ khóa được tìm kiếm nhiều nhất trên google về chủ đề Học thuật toán lập trình. Trong bài viết này, coder.com.vn sẽ viết bài Học thuật toán lập trình để làm việc gì trong công việc mới nhất hiện nay
Học thuật toán để… trả lời phỏng vấn
Các người bênh vực thuật toán thường hay bảo rằng: các công ty lớn như Google, Amazon, Facebook cực kỳ để ý tới thuật toán khi phỏng vấn. điều này là hoàn toàn có thật nhé! Bạn sẽ phải viết code lên bảng, giải nghĩa code , thuật toán khi PV ở các doanh nghiệp này.
Mình từng đọc qua 2. cuốn sách Cracking the Coding Interview , Elements of Programming Interview. Hai cuốn này có đề cập tới các bước phỏng vấn của những doanh nghiệp này, cũng giống như toàn bộ những câu hỏi/lời giải về thuật toán mà lập trình viên nên sẵn sàng.
Tuy vậy, không hề doanh nghiệp lập trình nào cũng giống như Google, Amazon, Facebook. Theo kinh nghiệm của mình , bạn bè, các doanh nghiệp Viet Nam chỉ hỏi một số thuật toán căn bản khi tuyển dụng (Bạn mình PV Ansadara bị hỏi thuật toán dầu loang , DFS).
Những doanh nghiệp này cũng cần tuyển người làm việc được ngay, biết cách sử dụng công nghệ. Do vậy, đừng quá chăm chăm vào thuật toán, mà còn phải bỏ thời gian học hỏi , dùng công nghệ nữa nha.
Cũng đừng quá tự tin là giỏi thuật toán thì học công nghệ nhanh thôi. Cần trải qua một thời gian làm việc lâu dài thì mới cầm hết được được điểm hay yếu ớt, kĩ thuật , kinh nghiệm khi sử dụng ngôn ngữ/công nghệ nhé.
Học thuật toán để xử lý lỗi lo, tăng cường tư duy
Thuật toán ở khắp nơi quanh ta. Bản thân Google mạnh mẽ như Vậy là nhờ thuật toán tìm kiếm của nó. công dụng recommendation của Amazon có được cũng nhờ thuật toán. Đến cả các tin tức hiện mỗi ngày tại New Feed trên Facebook của bạn cũng do thuật toán định đoạt.
Một số lĩnh vực trong lập trình cần dùng cực kì nhiều thuật toán như: render đồ hoạ, mã hoá dữ liệu, driver, machine learning, data mining… Mỗi lĩnh vực sẽ cần các thuật toán riêng. Phải tóm vững các thuật toán này thì bạn mới có thể làm việc trong lĩnh vực đó.
Việc giỏi thuật toán cũng giúp bạn tìm ra hướng giải quyết vấn đề nhanh hơn, viết code mạch lạc hơn. tóm vững thuật toán, cấu trúc dữ liệu, bạn sẽ ước tính được độ khó khăn của code, bình chọn code chạy nhanh hay chậm chạp, có scalable nữa không.
Xem thêm: Back End là gì? Phân biệt giữa Front End, Back End và Full Stack mới nhất 2020
Đây đều là những kĩ năng hết sức quan trọng. Để thành một lập trình viên giỏi, bạn nên rành rẽ thuật toán (Cơ bản là được, không cần cao siêu đâu).
Đừng quá thần thánh hoá thuật toán!
Ở Việt Nam, do các kì thi tin học đều chú trọng vào phần thuật toán, giải toán nên chúng ta có xu hướng “thần thánh hoá thuật toán”. điều này gây ra tình trạng nước ta được giải tin học này nọ tuy nhiên chẳng có ứng dụng nào nổi bật cả.
Để lập trình giỏi, ta cần rành thuật toán. tuy vậy, giỏi thuật toán không có nghĩa là bạn sẽ ra đời trình viên giỏi. tại một vài lĩnh vực khác như ứng dụng doanh nghiệp, mobile, phần lớn những tính năng chỉ là “thêm bớt xoá sửa”.
Requirement của các phần mềm này thường điều chỉnh, dẫn tới việc thay đổi code. Lúc này, thuật toán hay, code chạy nhanh không quan trọng bằng việc hiểu đúng requirement, tổ chức dữ liệu, thiết kế cấu trúc code, viết code sao cho dễ đọc, dễ bảo trì.
bên cạnh đó, bản chất của ngành lập trình là kế thừa để phát triển. Mình từng bảo rằng “có nhiều khi cắm đầu vào code là cách đần nhất để giải quyết vấn đề“. Thay vì implement các thuật toán từ đầu, các nàng có thể dùng thư viện đã có sẵn, hoặc thu thập code đã viết , chỉnh sửa lại để phù hợp.
Ví dụ: Thay vì tự viết Tree, Stack, Linked List, các ngôn ngữ lập trình đều đã implement sẵn, ta chỉ việc sử dụng. Đến cả các thuật toán phức tạp như nhận diện khuôn mặt, nhận diện ngôn ngữ cũng có API cả rồi. các thư viện/API này đã được sử dụng nhiều, test nhiều, optimize nhiều nên sẽ nhanh và không gây hại hơn code bạn tự viết.
Xem thêm: Stored Procedure là gì? Cách viết và sử dụng Stored Procedures hiện nay?
Kết
Mới xem qua, thuật toán có vẻ khá khó nhằn và phức tạp. tuy vậy, các kiến thức căn bản về thuật toán cũng rất ít. Quanh đi quẩn lại cũng chỉ có: Cấu trúc dữ liệu Stack, Queue, Binary Tree, Linked List, … và một vài thuật toán như: Dynamic Programming, Backtrack, DFS, … Bạn hoàn toàn có thể tự học và dần nắm vững chúng.
Nếu như bạn không rành thuật toán, không giải được các câu hỏi hại não, bạn vẫn có thể là lập trình viên tốt. Lớp mình ngày xưa có hai đứa vừa học làm freelance, làm website PHP kiêm luôn SEO, thu nhập mỗi tháng cũng khoảng 20-40 triệu.
Nguồn: https://techtalk.vn/