Competitive Programming và lợi ích của việc master thuật toán

Mình cũng từng nói. Học thuật toán quá nhiều làm gì để rồi ra có dùng đâu, đi phỏng vấn không có dự án người ta mới hỏi thuật toán để kiểm tra trình độ thôi. Tuy nhiên trong một số ứng dụng đặc thù, một số mảng khác của IT như ứng dụng Google Maps, Now, ngành Computer Science, … thì thuật toán là một phần không thể thiếu. Bài viết sau đây mình sẽ điểm những cái hay của thuật toán dành cho những ai đam mê giải thuật và những bạn ngành CS nhé …

Competitive Programming là gì?

Nói đơn giản thì đây là cuộc thi lập trình mà người lập trình viên sẽ phải giải quyết vấn đề được giám khảo đưa ra bằng code. Đây thực sự là môi trường rèn luyện giải thuật tuyệt vời dành cho những bạn nào thích cảm giác thi đua, cạnh tranh. Việc thi cùng với những master thuật toán sẽ giúp bạn ngộ ra được nhiều điều cũng như học hỏi được cách người đó tư duy, tiếp cận một bài toán. Quy mô của những cuộc thi rất đa dạng từ thi 1 chọi 1, thi nhóm cho tới thi toàn thế giới.

Lợi ích của Competitive Programming

Làm đẹp CV, trở thành một ứng viên mà các công ty công nghệ mong muốn

Có thể bạn đã biết, các công ty, tập đoàn lớn về công nghệ như Viettel, FPT, Google, … đều thường xuyên có những hoạt động tài trợ cho các cuộc thi lập trình dành cho sinh viên nhằm thu hút nhân tài. Việc góp tên trên bảng thành tích của các cuộc thi lập trình sẽ là một điểm cộng lớn giúp bạn trở thành ứng viên sáng giá trong tầm ngắm của họ

Các tập đoàn lớn thường xuyên tổ chức cuộc thi giải thuật tìm kiếm nhân tài.Các tập đoàn lớn thường xuyên tổ chức cuộc thi giải thuật tìm kiếm nhân tài.

Rèn luyện bạn trở nên nhanh hơn, chính xác hơn, tập trung hơn

Trong cuộc thi, bạn sẽ phải xử lý các tình huống trong bầu không khí hết sức căng thẳng: hoàn thành trước deadline hoặc chấp nhận thua cuộc. Vì vậy, đây sẽ là dịp training cho bạn cách tập trung hoàn toàn vào task để có thể hoàn thành task đó một cách không chỉ nhanh mà phải thật chính xác.

Kỹ năng xử lý tình huống

Các vấn đề, bài toán được đưa ra trong cuộc thi lập trình rất đa dạng và phức tạp, bạn sẽ không bị shock khi sau này bước vào công việc thực tế đối mặt với đa dạng các thể loại vấn đề, tình huống khác nhau

Kỹ năng làm việc nhóm hiệu quả

Đây là một kỹ năng vô cùng quan trọng mà hầu hết job nào cũng đều yêu cầu phải có (đương nhiên là ở các mức level khác nhau).

Trong các cuộc thi về lập trình, các bạn sẽ phải làm việc theo team, tức là nhiều người cùng hoàn thành 1 task lớn, nên cả team cần phải phối hợp với nhau sao cho hiệu quả nhất.

Người leader đóng một vai trò cực kỳ quan trọng, phải biết được điểm mạnh — điểm yếu của từng team member và có sự phân chia trách nhiệm cho phù hợp. Chính vì vậy, mình có 1 lời khuyên cho các bạn là nên ít nhất 1 lần tự đề cử làm leader, các bạn sẽ thấy mình trưởng thành hơn rất nhiều đó ;)

Một nhóm thành công cần có thành viên giỏi và một người lãnh đạo tài tình.Một nhóm thành công cần có thành viên giỏi và một người lãnh đạo tài tình.

Bệ phóng cho sự nghiệp coding

Nói chốt lại, việc tham gia nhiều các cuộc thi lập trình từ khi còn là SV không có nghĩa là bạn chắc chắn sẽ được offer 1 job khủng ngay khi mới ra trường, nhưng nó chắc chắn sẽ là 1 điểm highlight trên resume của bạn. Đâu có nhà tuyển dụng nào lại dễ dàng bỏ qua một ứng viên có khả năng làm việc nhóm tốt, xử lý vấn đề khó hiệu quả, làm việc được dưới áp lực cao, quản lý thời gian tốt, ….vân vân và mây mây đâu đúng ko? ;)

Các trang rèn luyện giải thuật

  • Exercism.io: Trang web này là bước khởi đầu để bạn học thuật toán, trang không chuyên về thuật toán nhưng chuyên về cách dùng ngôn ngữ lập trình. Đây là một nguồn học thuật toán khá thú vị để bạn học thêm một ngôn ngữ mới. Bạn cũng có thể vừa làm vừa xem bài giải của người khác nhưng hãy vững tâm không để “sách giải" làm sa ngã nhé.

  • hackerrank.com: Trang này chắc không ai mà không biết nhỉ, từ junior cho đến senior, từ developer cho đến tuyển dụng. Trang này cũng chia mức đô easy/medium/hard. Có cái rất tiện của trang này đó là bạn viết code, cho chạy trực tiếp và xem kết quả được luôn, nếu giải không được, không biết fix sao thì có mục dicussion, bạn vào đó xem lời giải. Trang này cũng được các nhà tuyển dụng lấy làm công cụ test trình độ ứng viên đó!

  • codeforces.com: Trùm cuối xuất hiện đây, lý do mình để trang web này cuối cùng là vì nơi đây bạn có thể chứng minh tài năng của mình với cả thế giới. Trang này cho phép bạn tham gia những cuộc thi hàng tuần, hàng tháng từ đó tính điểm và leo top. Điểm càng cao sẽ càng có giá trị như leo rank trong game vậy nè.

Kết luận

Đây là những lợi ích hay ho cho những bạn đam mê bộ môn giải thuật. Với ý kiến cá nhân mình thì việc giải thuật chỉ nên học khi bạn là sinh viên những năm đầu, hoặc bạn có ý định ứng tuyển các công ty tại thung lũng Silicon (Google, Facebook, …). Thị trường Việt Nam thì vẫn ưu tiên lập trình ứng dụng hơn nhé.

Happy Coding!

Nguồn tham khảo: noron.vn, topdev.vn