|Think about Loose Coupling|
Re: Existential Crisis (Or: On Becoming a Better Monk)by mstone (Deacon)
|on Dec 05, 2002 at 01:34 UTC||Need Help??|
From your post, it sounds like you want to learn more about programming as a general subject.. the theoretical stuff you're more likely to learn in a classroom than in day-to-day programming. The kind of stuff that will give you enough foundation to teach yourself even more.
I could suggest a whole stack of books that would teach you some aspect of programming theory or other. The problem is that none of them provide enough through-line to show you how learning the theory will have any bearing on your day-to-day programming experience. That tends to be a weakness among self-taught programmers, in fact: getting stuck at the "why should I care about this if it doesn't help me solve problem X?" stage.
Formally-trained programmers go through that same phase, but they get the information anyway. Their colleges say, "you'll care about it because part of the curriculum, and if you don't learn it we'll flunk your ass," which basically holds the book up to the student's nose long enough for the light bulb to go on.
The light-bulb in question has more to do with changing your world view than with solving any specific problem. Programming theory teaches you how to recognize fundamental classes of problems, rather than just "I want to do X," problems. It's less about "how do I do X?" and more about "why should I do X?"
Now, I happen to have spent a fair amount of time mediatating on programming theory, and would be willing to make you a deal: I'll write a series of posts about programming theory if you'll suspend your "okay, but how do I apply this?" instinct long enough to see how everything fits together.
Writing that series would be good exercise for me. It would force me to put my ideas in order, and to think back to the mindset of someone who hasn't been living and breathing the stuff for the last few years. It would also shine a spotlight on any weaknesses in my own understanding: if I can't explain something to someone else, I probably need to spend more time thinking about it myself.