How to Design Programs (2014)
I am self taught, I worked as a lawyer for six years and four of those were spent prepping for a career change - self-teaching comp sci and software dev in the evenings, then working as a volunteer a few years in. (I come from an engineering family and should have just done it from the start, but oh well.)I'm not sure if it's still on the platform, but about a year into my self studying I took a series of courses on edX that used this system. I think it was called Systematic Program Design, but I could be misremembering. Anyways, the courses were incredible. I completely credit them with beginning to turn me from a coder into a software dev. The system they provide just locked into my brain like it had always been there.I almost didn't take it because it used Racket, and I questioned its general applicability for that reason. I'm so glad I pushed those concerns aside, because in addition to introducing me to software design principles, it introduced me to Lisp in a way that also completely changed my thinking about what programming itself could be.I've now been a paid dev for 2.5 years. I don't really explicitly use the system from the course in my daily work, but the knowledge contained within it has molded my entire understanding of the field.The course literally changed my life.