Cấu trúc dữ liệu và giải thuật có cần thiết với một Web Developer không?

Algorithms & Data Structures

Có nhiều lập trình viên đến gặp tôi và hỏi rất 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?"

Tuy nhiên trong video dưới đây, chàng trai này có hỏi tôi một câu hỏi hơi khác so với hầu hết các lập trình viên web khác. Nếu bạn là một web developer thì sao? Có nên học giải thuật và cấu trúc dữ liệu không? Hãy xem video:

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

Tôi - tác giả bài viết sẽ trả lời câu hỏi này ngay tại đâ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 về việc học giải thuật và cấu trúc dữ liệu không cao nếu bạn đang là một lập trình viên backend. Còn nếu bạn không chắc là một lập trình viên backend hay lập trình viên frontend như thế nào bạn có thể tìm hiểu tại đây. Điều đó không có nghĩa là bạn không cần biết về nó và nó không giúp ích gì cho bạn. Hãy suy nghĩ một chút về điều này.

Nếu bạn đang làm công việc chủ yếu như một web developer 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 sự điều khiển, hiệu ứng và không cần sử dụng nhiều dữ liệu, nhưng điều đó không có nghĩa là bạn không bao giờ làm thứ gì đó yêu cầu giải thuật hoặc cấu trúc dữ liệu.

Algorithms

Bạn 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 dụng cụ khác nhau trong đó. Bây giờ, bạn chỉ có khả năng sử dụng búa, tô vít và một vài thứ khác. Bạn có thể tìm ra cách sử dụng đinh, búa, tô vít và vít cho mọi thứ bạn cần, nhưng đó có thể không phải là cách tốt nhất và hiệu quả nhất.

Nếu là một web developer, có thể bạn không cần một hộp công cụ phức tạp nhưng khi có những thứ đó, bạn sẽ làm được nhiều thứ hơn. Như đã nói ở trên, một web developer không cần những thứ này mà vẫ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 đã biết, nhưng nếu bạn không hiểu về những công cụ này, không thực sự học và hiểu cấu trúc dữ liệu và giải thuật bạn sẽ không thấy 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 nếu không biết những thứ này, bạn vẫn có thể có một công việc và làm tốt nó nhưng bạn không biết cái mà bạn đang thiếu. Đây là một trong những thứ bạn không biết, bởi khi có thêm kiến thức bạn sẽ nhìn nhận mọi thứ theo cách khác. 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 cái đinh. Đó là kiểu tâm lý mà bạn có thể gặp phải khi không có một lượng lớn kiến thức và kỹ năng trong lĩnh vực phát triển phần mềm.

Giải thuật

Về cơ bản có thể nói, nếu bạn đang bắt đầu và muốn tham gia vào lĩnh vực phát triển web, bạn không cần quá lo lắng về cấu trúc dữ liệu và giải thuật. Bởi 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à web, nơi các bootcamp có thể giúp bạn.

Nhiều lập trình viên cao cấp hoặc các lập trình viên có kinh nghiệm đã đến các bootcamp và sau đó họ nói: "Oh, bullcamps" - Vì sao họ gọi chúng là bullcamps? “Các bootcamp là bullshit bởi chúng không dạy bạn những kiến thức thực sự về khoa học máy tính. Bạn không học về cách tạo ra giải thuật, cấu trúc dữ liệu và tất cả các công cụ cơ bản. Bạn chỉ học phần phát triển web - bạn chưa thực sự là một lập trình viên”.

Cấu trúc dữ liệu và giải thuật có cần thiết với một Web Developer không?

Không đúng? Nhưng bạn không thể dừng lại ở đó. Boot Camp là một điểm khởi đầu tuyệt vời. Nếu bạn có đủ kiến thức và kinh nghiệm, bạn có thể bắt đầu làm việc trong lĩnh vực phát triển web. Tuy nhiên, đó vẫn là chưa đủ, 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 lập trình viên tốt nghiệp từ các trường đại học đã được học cấu trúc dữ liệu và giải thuật. Họ vượt qua các bài kiểm tra, sau đó bước vào thế giới thực và quên mất cách sử dụng hoặc lợi ích mà nó mang lại.

Nếu 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 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 hoặc thực sự cần sử dụng, bạn sẽ thấy nó không hữu ích và quên chúng ngay. Nhưng nếu bạn đã làm việc này và làm việc như một người thợ mộc hoặc một thứ tương tự thì khi giới thiệu các công cụ đó với bạn, bạn sẽ thấy cách sử dụng các công cụ này giúp công việc trở nên dễ dàng hơn và nhớ chúng. Hơn nữa, bạn còn thấy rằng nó mang 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ị với bạn.

Điều này thực sự hữu ích. Mở rộng khả năng của bản thâ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ụ sẽ giúp họ làm việc hiệu quả hơn. Đó là những gì mà bạn cần phải suy nghĩ. Để tổng hợp lại những gì mà mình vừa nói ở trên, tôi muốn nói rằng: "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 đó 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à có được lợi ích từ chúng".

Tác giả: John Sonmez

Tham khảo thêm một số bài viết:

Chúc các bạn vui vẻ!

Thứ Năm, 08/02/2018 16:35
4,34 👨 1.066