My academic background is in linguistics, and I'm often asked how I got into software development.
My senior year I took an introductory computer science course, and I fell in love. At the same time, I was working as a research assistant for a computational linguist, for which I ended up learning some Python. I ended up spending a lot of my senior year teaching myself how to code (probably to the detriment of my senior thesis...).
There's actually a good amount of overlap in programming and linguistics, or at least I find that my brain processes problems in these two disciplines in a similar way. In linguistics classes focussed on morphology and syntax (formal linguistics), you often get problem sets which consist of a number of sentences in another language, accompanied by their English glosses, or translations. You then have to figure out how the language works: what is the sentence structure, how are different tenses indicated, what is the case system, etc. You know the input and the output, and based on that you have to recognize the patterns in order to figure out how it works.
This is how I approach a new programming language or a code base I am not yet familiar with: I have the input, and I can run it to get the output. Then it's a matter of recognizing different patterns and taking it apart piece by piece.