One challeging problem amuzed me today: the best way to work with short lived attributes on long lived objects. Like the iron throne, sometimes the attribute, in this case the Westeros King changes constantly and you don't want to check always the value, in this case the current king:
public class IronThrone{
private KingChecker _kingChecker;
public IronThrone(KingChecker kingChecker){
_kingChecker = kingChecker;
}