Essential Elements of Experimental Programming