What developers must know about supervised machine learning