From Symbolic Tasks to Code Generation: Diversification Yields Better Task Performers