Conrad Cook recently started a Google-based Study Group for learning TADS 3. So I’ve been learning some meta-lessons about learning.
T3 is easily the most powerful system for writing interactive fiction. It’s sophisticated, it’s dense, and it’s not easy to learn. There’s a reason why Inform 7 has become vastly more popular: I7 is ultimately less powerful and arguably more idiosyncratic, but it’s also far easier to get started with, perhaps especially if you’re a novice.
More than a dozen people have joined the study group, and messages have been flying back and forth. What I’ve been observing is that the frustrations I found myself mired in three or four years ago, when I first looked at T3, are mirrored or echoed by some other people in the group — people who are now approaching it for the first time.
T3 comes with five or six book-length manuals, each with its own raison d’etre. There is some overlap, but each manual is different. And there’s no overall index that covers them. Part of the learning process is discovering what’s in each of the manuals, so that you’ll know where to look when you get stuck. Because you’ll get stuck often. And learning where to look for stuff in the manuals is separate from the process of actually learning to write T3 code.
When you’re learning any programming language, I suppose, the two personal traits that will help you the most are patience and being systematic. I try to cultivate the attitude, “Hmm … I wonder why that’s happening.” This is much more productive than, “Why the fuck isn’t it doing what I want?” (The latter is always a temptation, of course.)
Some programming languages are easier to get started with than others, but TADS 3 isn’t just a language; it’s a large, complex library of code. My advice is, just accept the fact that it will take months to learn. Trying to jump around and learn five features at once will only make matters worse.
TADS 3 comes with an IDE (integrated development environment) called Workbench. With Workbench I can look at the call stack or watch the values attached to objects to see how and when they change. Trouble is, both the stack and the objects are so complicated that I can’t get anything useful out of these professional-level tools. Setting breakpoints doesn’t usually help either.
What does seem to help is having a sort of unconscious mental model of the TADS library. I doubt anyone has a complete mental model of that, but after writing two or three games in T3, my unconscious will sometimes (not always!) nudge me in the right direction.