Các phương hướng học tập nói chung hay học lập trình nói riêng đều có sự hiện diện của 2 cách thức tiếp cận cơ bản tuy trái ngược nhau nhưng lại có thể bổ sung cho nhau.