Whenever we code, there are both formal rules we must follow and informal habits we adopt to make things easier on ourselves. These "best practices" are common in mainstream programming textbooks, but have received less attention in the IF world than perhaps they deserve.
One of the most common, nearly genre-defining parser errors is the dreaded "You can't see any such thing," which all too often appears in reference to something the story just narrated your character seeing. In Chapter 4 of my upcoming Inform 7 book, I introduce an IF best practice called BENT designed to help minimize this problem. Those who want to get BENT should Bracket Every Notable Thing in descriptive text: make every object that could sensibly be interacted with by the player a text substitution.
The description of Base of the Tower is "Behind [the building] [a steel girder] rises from [the sand], one of three legs of [the huge electrical tower] looming like some gargantuan spider into blackness above you. [A tumbleweed] drifts lazily against the rusted metal among [scrawny weeds] and [bits of trash]. The desert stretches in all directions except back south towards the building."
Why would you do this? To mangle a metaphor, it keeps you from writing nouns your parser can't cash. Now, it's not just a game-level problem that "EXAMINE GIRDER" is not a recognized command: you've made it a compiler-level problem, too. Having told Inform that something called "the steel girder" exists in your story world, it won't let you compile your story until you've created that object, instead giving you a problem message explaining that it doesn't yet exist.
More importantly, BENT forces you to think about the gameplay implications of the words you type. If you're describing the piles of trash, and you write something like this:
The description of trash is "Aluminum pop cans, newspaper pages, plastic bags, and other junk rest in precarious piles underneath the steel girder."
...bracketing all that stuff may cause you to realize that you're just creating a lot of red herrings and frustration for both yourself and the player. Instead, you might refine your description to this:
The description of bits of trash is "Worthless and forgotten, drifting against snags like non-biodegradable snow."
...which requires nothing to be bracketed, and correctly signals to your player that this item is not important to the story.
What counts as notable is subjective, of course. In this example I've left out "gargantuan spider" since it's part of a metaphor (the player really can't see any such thing) and "blackness" since it's an abstract concept. Synonym words like "legs" must be dealt with differently, too (through Understand rules). But the hope is that adopting BENT will get you in the habit of looking for ways to keep the parser's mental model of the story world in line with the player's.