Web Developer có cần học cấu trúc dữ liệu và giải thuật 23?

Cập nhật ngày: 16/04/2024 - Đã có 806 lượt xem bài viết này!
Web Developer có cần học cấu trúc dữ liệu và giải thuật 23?
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

Web Developer có cần học cấu trúc dữ liệu và giải thuật 23?

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.

 

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".

 

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

}

Chúng ta cần trả về một array những UITableViewRowAction

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

    let delete = UITableViewRowAction(style: .default, title: "Delete") { (action, indexPath) in
        // delete item at indexPath
        let item = self.items[indexPath.row]
        self.context.delete(item)
        (UIApplication.shared.delegate as! AppDelegate).saveContext()

        self.items.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .fade)

    }

    let share = UITableViewRowAction(style: .default, title: "Share") { (action, indexPath) in
        // share item at indexPath
        print("Share")

    }

    return [delete,share]

}

Ẩn bàn phím

Nếu bạn để ý ở trong phần 1, bàn phím không tự động ẩn sau khi người dùng ấn nút Return, chúng ta sẽ cùng nhau fix lỗi này. Tại class:

 

class addItemViewController: UIViewController, UITextViewDelegate {
...

Bạn cần để class addItemViewController conform UITextViewDelegate protocol. Sau đó tại method viewDidLoad chúng ta 

 

override func viewDidLoad() {
  super.viewDidLoad()
  itemEntryTextView?.delegate = self
}

 

Bạn đang muốn tìm kiếm 1 công việc với mức thu nhập cao.
✅ Hoặc là bạn đang muốn chuyển đổi công việc mà chưa biết theo học ngành nghề gì cho tốt.
✅ Giới thiệu với bạn Chương trình đào tạo nhân sự dài hạn trong 12 tháng với những điều đặc biệt mà chỉ có tại IMIC và đây cũng chính là sự lựa chọn phù hợp nhất dành cho bạn:
👉 Thứ nhất: Học viên được đào tạo bài bản kỹ năng, kiến thức chuyên môn lý thuyết, thực hành, thực chiến nhiều dự án và chia sẻ những kinh nghiệm thực tế từ Chuyên gia có nhiều năm kinh nghiệm dự án cũng như tâm huyết truyền nghề.
👉 Thứ hai: Được ký hợp đồng cam kết chất lượng đào tạo cũng như mức lương sau tốt nghiệp và đi làm tại các đối tác tuyển dụng của IMIC. Trả lại học phí nếu không đúng những gì đã ký kết.
👉 Thứ ba: Cam kết hỗ trợ giới thiệu công việc sang đối tác tuyển dụng trong vòng 10 năm liên tục.
👉 Thứ tư: Được hỗ trợ tài chính với mức lãi suất 0 đồng qua ngân hàng VIB Bank.
👉  Có 4 Chương trình đào tạo nhân sự dài hạn dành cho bạn lựa chọn theo học. Gồm có:
1)  Data Scientist full-stack
2)  Embedded System & IoT development full-stack
3)  Game development full-stack
4)  Web development full-stack 
✅ Cảm ơn bạn đã dành thời gian lắng nghe những chia sẻ của mình. Và tuyệt vời hơn nữa nếu IMIC được góp phần vào sự thành công của bạn. 
✅ Hãy liên hệ ngay với Phòng tư vấn tuyển sinh để được hỗ trợ về thủ tục nhập học.
✅ Chúc bạn luôn có nhiều sức khỏe và thành công!

 

Tham khảo các khóa đào tạo nhân sự qua danh mục