Planning for Programming