If you like MOOCs and video training, checkout this introductory course for absolute beginners:
"How to Code: Simple Data" on edX, by Gregor Gregor Kiczales from the University of British Columbia.
https://courses.edx.org/courses/course-v1:UBCx+HtC1x+2T2017/...
The course teaches the Racket language, but proceeds at a rapid pace. It follows the "How to Design Programs" methodology developed in the 1990s (?) at MIT (and elsewhere). This is a test-driven-design method, AFAICT. (I think the MOOC author co-developed it while at MIT).
Someone has ported all the SICP exercises to Racket, so you can follow along with that book, too.
https://en.wikipedia.org/wiki/Structure_and_Interpretation_o...
There is a follow-up course, "How to Code: Complex data" but I didn't take it.