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 đề”.
Người
viết: Lê Công Diễn
Mang đi nhớ ghi nguồn
Nhận xét
Đăng nhận xét