Bài viết được dịch từ: simpleprogrammer.com

Nhiều lập trình viên tới gặp tôi và hỏi nhiều câu hỏi khác nhau, nhưng một câu hỏi dường như được hầu hết các lập trình viên quan tâm là: 

"Jonh, tôi có cần học giải thuật và/hoặc cấu trúc dữ liệu không?"

Đây là câu hỏi từ Vinny: "Chào John, tôi muốn bắt đầu bằng cách nói rằng những kiến thức bạn chia sẻ thật đáng kinh ngạc. Tôi rất cảm kích những gì bạn đã làm. Bây giờ, câu hỏi của tôi (và tôi chắc chắn là của nhiều lập trình viên khác) là: Cấu trúc dữ liệu và giải thuật quan trọng như thế nào với một web developer? Và nếu chúng quan trọng, chúng được sử dụng chủ yếu như thế nào? Cảm ơn, Vinny."

Tôi sẽ hoàn toàn trung thực ở đây. Là một web developer đang muốn tìm hiểu về giải thuật và cấu trúc dữ liệu, sự cần thiết của nó là không cao hơn nếu như bạn đang là một backend developer. Nếu bạn không chắc thế nào là một backend developer hoặc thế nào là một front-end developer bạn có thể xem video này. Điều đó không có nghĩa là bạn không cần biết nó và cũng không có nghĩa là nó không giúp ích gì cho bạn. Hãy suy nghĩ về điều này một chút.

Nếu bạn đang làm việc chủ yếu như một web developer và chủ yếu trên frontend, bạn sẽ làm nhiều thứ với giao diện người dùng. Bạn sẽ tạo ra nhiều các điểu khiển và các hiệu ứng và không cần sử dụng nhiều dữ liệu, nhưng nó không có nghĩa là bạn sẽ không bao giờ làm một thứ gì đó, cái yêu cầu một giải thuật hoặc cấu trúc dữ liệu.

Có thể hình dung, giải thuật và cấu trúc dữ liệu giống như một hộp công cụ với nhiều công cụ trong đó. Bây giờ, bạn chỉ có khả năng sử dụng một cái búa, một cái tô vít và một vài thứ khác. Bạn có thể tìm ra cách để sử dụng đinh và búa, tô vít và vít cho mọi thứ bạn cần, nhưng nó có thể không phải là cách tốt nhất và hiệu quả nhất.

Tham khảo các khóa học lập trình online, onlab, và thực tập lập trình tại TechMaster

Là một web developer, bạn có thể không cần một hộp công cụ phức tạp, nhưng nếu bạn có những thứ đó, nếu bạn có nó, bạn sẽ làm được nhiều thứ hơn. Như tôi đã nói, là một web developer, bạn có thể không cần những thứ này và bạn có thể tìm ra cách giải quyết với những công cụ có sẵn và kiến thức bạn đã biết, nhưng nếu bạn không hiểu những công cụ này, nếu bạn không thực sự học và thực sự hiểu cấu trúc dữ liệu và giải thuật bạn sẽ không thể thấy các cơ hội mà bạn có thể sử dụng chúng.

Bạn sẽ có một chút ngây thơ. Là một  web developer không biết những thứ này bạn vẫn có thể có một công việc và có thể làm tốt, nhưng bạn không biết cái bạn đang thiếu. Đây là một trong những thứ bạn không biết. Khi bạn có nhiều kiến thức bạn sẽ thấy những thứ khác nhau. Có một câu nói rằng khi bạn có một cái búa mọi thứ khác sẽ giống một cái đinh. Đó là kiểu tâm lý mà bạn có thể gặp phải khi bạn không có một lượng lớn các kiến thức và kỹ năng trong lĩnh vực phát triển phần mềm.

Về cơ bản có thể nói như thế này, nếu bạn đang bắt đầu, nếu bạn muốn tham gia vào lĩnh vực phát triển web, bạn không cần lo lắng quá nhiều về cấu trúc dữ liệu và giải thuật. Bạn không nhất thiết phải có một nền tảng kiến thức khoa học máy tính vững chắc. Đây là nơi các bootcamp có thể giúp bạn. Nhiều senior developer hoặc các developer có kinh nghiệm đã đến các bootcamp và sau đó họ nói: "Oh, bullcamps" - Vì saohọ gọi chúng là bullcamps? Các bootcamp là bullshit bởi vì chúng không dạy bạn những kiến thức thực sự của khoa học máy tính. Bạn chỉ học phần phát triển web của nó - bạn chưa phải là một lập trình viên thực sự.

Nhưng các bootcamp là một nơi khởi đầu tốt. Bạn có thể bắt đầu tại một bootcamp,để có đủ kiến thức và kinh nghiệm để bắt đầu làm việc trong lĩnh vực phát triển web. Sau đó, hãy quay lại học cấu trúc dữ liệu và giải thuật. Nó cung cấp cho bạn kiến thức và sự hiểu biết sâu sắc hơn về lĩnh vực của bạn. Nhiều developer tốt nghiệp từ các trường đại học, họ đã học cấu trúc dữ liệu và giải thuật trong trường. Họ vượt qua các bài kiểm tra và sau đó bước vào thế giới thực và quên mất chúng vì không thấy cách chúng thực sự được sử dụng hoặc giúp ích cho họ. Nếu có một người thợ mộc giỏi cho bạn xem hộp công cụ của họ và chỉ cho bạn thấy cách sử dụng máy tiện và các thứ khác, nhưng bạn chưa từng làm một thứ gì thực sự cần sử dụng chúng bạn sẽ thấy nó không hữu ích và sẽ quên chúng. Nhưng nếu bạn đã làm việc này, nếu bạn đã làm việc như một người thợ mộc hoặc một thứ tương tự và giờ tôi giới thiệu các công cụ với bạn, chỉ cho bạn thấy cách bạn có thể sử dụng các công cụ này để giúp công việc của bạn dễ dàng hơn, bạn sẽ nhớ chúng. Nó có nhiều ý nghĩa. Bạn sẽ hiểu tác dụng của những công cụ và nó sẽ có giá trị hơn với bạn.

Nó thực sự mở rộng khả năng của bạn và bạn có thể nhìn nhận vấn đề tốt hơn thông qua lăng kính của một người có nhiều kiến thức, người có hộp công cụ và chúng giúp họ làm việc hiệu quả hơn. Đó là những gì bạn phải suy nghĩ. Để kết thúc tôi muốn nói: "Nếu hiện tại bạn là một web developer, bạn nên đầu tư thời gian để học cấu trúc dữ liệu và giải thuật. Nếu hiện tại bạn chưa phải là một web developer, nhưng muốn làm công việc này, đừng lo lắng về chúng trừ khi bạn cần nó cho một cuộc phỏng vấn. Hãy bắt đầu làm việc, bắt đầu xây dựng một cái gì đó thực sự và sau đó bắt đầu học một vài cấu trúc dữ liệu và giải thuật, bạn sẽ thấy cách bạn có thể sử dụng chúng và lợi ích chúng đem lại".