Over the course of the last five or six years, I’ve tried to teach myself various programming languages (as a non-programmer) with limited success. There were numerous roadblocks that arose each time — from lack of resource and guidance to life just getting in the way. I wasn’t working towards anything, or framing these tasks in applying my incremental learning in any concrete way.
In one instance in particular, a friend set out to help me learn Ruby, wanting to make me his “test case” to teach and increase my proficiency. After sending a few online resources (which were fun, but never applied what I was learning to a real problem so I knew how they worked together, or help me think critically about a problem), he bought me “The Pragmatic Bookshelf” (also known as “the pickaxe”) and set me on my way, believing all problems would be solved from that point forward and his work was done.
What I learned from that was that pushing a book to a novice isn’t always the best fit solution towards training (and in my case, only further disincentivized me from pursuing learning). It cast the notion of gaining fluency in a language as an insurmountable challenge and only fueled my imposter syndrome, rather than encourage me to continue to work my way through exercises with in-person help and support. Clearer steps about how to link this knowledge would have definitely helped, as well as less implied “well, if you can’t figure it out from this book, you can’t cut it”. Learning how to program (which is still an ongoing exercise for me) is overwhelming enough on its own.