Program Synthesis for the Modern Programmer