Theo mình để học lập trình hiệu quả,vấn đề không phải là ngôn ngữ mà chủ yếu là ở tư duy logic.
Muốn phát triển tốt tư duy lôgic có lẽ đúng là phải mất một thời gian khá dài như VCQ đã nói.và cũng phải tốn tương đối thời gian để ngồi tập code bài từ dễ tới khó dần.
Với những thuật toán phức tạp thì sau này,mặc dù ra trường đi làm cũng chẳng dùng tới,xong việc code và debug tốt chương trình giúp mình có tư duy mạch lạc hơn và hiểu cơ chế hoạt động của chương trình một cách đầy đủ hơn.
Theo ý kiến riêng mình,đầu tiên nên kiên trì với những bài toán đơn giản (với những bạn mới bắt đầu học)
Sau đó nên xem qua các giải thuật khó và thông minh hơn(cái này hay,nhưng mình thấy ra trường ít dùng)- cái này có nhiều trong các tài liệu về giải thuật (mình thích đọc nhất là của Thầy Lê Minh Hoàng - trường sư phạm thì phải)
Tiếp đến là tập code sao cho chuẩn và ngắn gọn,sáng sủa,cái này cũng mất nhiều thời gian.
ví như : việc đặt tên hàm,tên biến sao cho gợi nhớ,sử dụng biến toàn cục,cục bộ thế nào để tránh lãng phí,cấp phát động và quản lý bộ nhớ (với những ngôn ngữ trung gian như Pascal,C,C++..)..quan trọng hơn là chương trình của bạn phải dễ đọc,dễ bảo trì,và nâng cấp nữa.Đôi khi bạn phải hy sinh thời gian tính để lấy một thuật toán chỉ đáp ứng được khoảng 80-90% yêu cầu thôi nhưng dễ bảo trì và dễ sửa chữa hơn (cái này bạn tham khảo thêm trong các giáo trình dạy về Kỹ Thuật Lập Trình).
Cuối cùng Bạn cần tập làm một debuger lão luyện.Nó giúp bạn hiểu cùng một vấn đề dưới các cách nhìn khác nhau.từ đó đưa ra nhận định và cách code đúng đắn nhất.
Chúc các bạn học tốt