It is vitally important to remember which cards have been discarded, particularly by the opponent. As cards discarded from the hand may be used by the opponent, it is important to avoid cards that the opponent may be interested in.
Generally, a card should not be taken from the discard pile unless it completes a set or run. For example, although aces are generally desirable cards because of their low point count, taking one ace with only one in hand (called "speculating") warns the opponent not to discard any others. This makes establishing a set of aces virtually impossible except by the luck of the draw.
Middle cards are far more strategically important than low cards or face cards as they can be used in far more sets and runs. The 7 can be used in more combinations than any other value in the deck. Once again, aces, although they have a low point value, can only form a run with a 2-3 combination, whereas a 7 can be used with a 5-6, 6-8, or 8-9, as well as longer runs.
Constantly discarding "from the top" (i.e. from the king down) will soon teach the opponent to save pairs of high cards in the knowledge that the matching set of a run will soon be discarded. Although high cards count more, a good player varies the cards they discard in order to make the discards less predictable and give less of a clue to what they are saving.
A player with a "knock" usually should do so as soon as possible, and not attempt to work to a lower knock or gin. The player should beware the possibility that the opponent can knock lower and obtain an undercut, however. This is common if the game is coming down to the bottom of the pile. In the mid-game (when about half the cards in the draw pile have been used), the decision to knock or "go for gin" hinges on how many "free cards" (ones not yet seen by the player) could give the player gin on the next draw, which could range from zero (all possible gin cards are known to be held by the opponent or are in the discard pile) on up to 5 or so (rarely higher).
When drawing from the stock, wise players put that card at random in their hands, close their cards, reopen them and only then pick a card to discard. In that way, the opponent does not know how many cards you have saved from the stock.