Làm thế nào để nâng cao kỹ năng giải quyết vấn đề

Làm thế nào để nâng cao kỹ năng giải quyết vấn đề

Kỹ năng giải quyết vấn đề là một kỹ năng rất quan trọng, giúp cho bạn xử lý các vấn đề một cách tốt hơn, hiệu quả hơn. Vậy làm thế nào để rèn luyện kỹ năng này. Các bước mình trình bày dưới đây sẽ phần nào đó giúp các bạn rèn luyện tốt hơn.

1.  Đọc hiểu vấn đề một cách rõ ràng.
Nhiều người thường hay vội vàng khi giải quyết một vấn đề. Họ không tìm hiểu kỹ càng vấn đề đã vội đặt tay vào viết vài dòng code, và rồi, họ dừng lại và cảm thấy bế tắc. Khoan nào, đừng quá vội vàng thế chứ. Nếu bạn không hiểu vấn đề, thì làm sao bạn có thể giải quyết được vấn đề chứ, phải không.
Bạn hãy bình tĩnh, dành thời gian đọc vấn đề thật kỹ, đọc ít nhất 5, 6 lần, trong khi đọc nếu có một câu, một từ thắc mắc, liền hỏi ngay. Giả dụ ta có một vấn đề cần giải quyết, chẳng hạn như đảo ngược một xâu ký tự (tất nhiên không dùng hàm có sẵn rồi). Giả dụ bạn thắc mắc: Ủa, đảo ngược một xâu là gì vậy nhỉ?, thì bạn liền tìm cách giải quyết thắc mắc của mình liền: Hỏi google, khi nào bí quá thì hỏi bạn bè, thầy cô.
Tóm lại, bạn phải hiểu được rằng bạn đang cố gắng giải quyết vấn đề gì, thì lúc đó bạn mới đi tìm phương án cho vấn đề của bạn được.
2.  Giải quyết vấn đề với một mức độ dễ hơn
Bạn đã từng nghe rằng: Một bài toán lớn chia ra làm nhiều bài toán nhỏ để giải quyết
Đừng bắt tay vào giải quyết một vấn đề lớn, lúc đó bạn sẽ khóc thét đấy. Bạn hãy biến chúng thành một bài toán với mức độ dễ hơn. Như ví dụ hồi nãy, ta có thể đơn giản thành đảo ngược xâu gồm 2 ký tự chẳng hạn. Vẫn còn quá khó ư? Vậy đảo ngược một xâu gồm 1 ký tự xem. Với một ký tự thì chúng ta không bàn gì nhé. Còn với 2 ký tự, bạn thấy rõ ràng đó là phép tráo đổi vị trí cho nhau. Đơn giản vậy thôi phải không nào.
3.  Viết từng bước thủ công
Sau khi giải quyết được rồi, bạn viết các bước ra giấy: Bước 1, bước 2, bước 3,…. Có thể không cần giấy cũng được, nhưng bạn phải xác định rõ từng bước từng bước như thế, và rồi đó chính là thuật toán mà bạn tạo ra.
4.  Giải quyết vấn đề tăng mức độ lên
Sau khi giải quyết ổn thỏa rồi, bạn tăng độ khó lên một chút. Uhm vậy nếu ta tăng kích thước lên x=3 thì sao nhỉ. Lúc này mình đoán là bạn sẽ chạy từ đầu đến giữa, đảo vị trí cái đầu tiên cho cái cuối cùng, và giữ phần tử ở giữa lại. Well, chúng ta giải quyết được rồi, nhưng giải quyết bằng cách thủ công nhé. Xin nhấn mạnh là bằng cách thủ công, thủ công, thủ công.
5.  Chuyển các bước bạn ghi sang code
Okay, giờ thì chuyển các bước của bạn thành các dòng code nào. Nếu các bước của bạn rõ ràng, thì việc chuyển các dòng code cũng không có gì là khó khăn cả. Lưu ý khi viết code là bạn nên viết tổng quát về một cái khung trước (viết dòng lệnh nhập, xử lí, xuất), rồi sau đó bắt đầu viết thêm vào phần xử lý. Giả dụ trong phần xử lý, bài toán của bạn chia thành nhiều bài toán nhỏ, thì bạn viết một cái khung cho bài toán lớn đó, rồi bắt đầu viết chi tiết cho các bài toán nhỏ.
6.  Chạy chương trình, cố gắng mở rộng trường hợp ra và giải quyết chúng
Bạn chạy chương trình và thấy rằng có một số trường hợp chạy không đúng. Hãy cố gắng mở rộng dần, khái quát hóa code của bạn để xử lý được tất cả trường hợp, và cuối cùng bạn đã có một bài code hoàn chỉnh.

Lời kết: Đối với bản thân mình, đây là các cách để giải quyết bất kỳ một vấn đề nào. Tất nhiên bạn sẽ thấy khó trong việc đọc hiểu vấn đề, mở rộng vấn đề,… Tuy nhiên theo thời gian, rèn luyện càng nhiều thì những kỹ năng nhỏ này sẽ dần được cải thiện hơn! Vì thế tiêu đề bài viết mình là “Làm thế nào để nâng cao kỹ năng giải quyết vấn đề”, chứ không phải là “Làm thế nào để giải quyết vấn đề”.
Nội dung bài viết có tham khảo từ John Sonmez kết hợp với kiến thức mình có.

Người viết: Lê Công Diễn
Mang đi nhớ ghi nguồn

Nhận xét

Bài đăng phổ biến từ blog này

Deploy project Springboot MIỄN PHÍ sử dụng Render

Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)

API và HTTP - Một số khái niệm cơ bản cần biết về Web (Phần 2)