1. A method of recommending an optimization strategy for software, the method comprising: predicting values for empty cells of a sparse matrix, wherein values of non-empty cells of the sparse matrix represent ratings for optimization strategies previously applied to programs; filling the empty cells with the predicted values to produce a complete matrix; determining, for a current program that was not included in the programs of the sparse matrix, a recommended optimization strategy that yields a highest rating from the complete matrix; and providing an indication of the recommended optimization strategy.