He/she has made models/classes, set constants for any seemingly variable aspects of the program (like file paths, ports, IP addresses, strings, etc), functionalized most of the re-usable parts of the codebase, has great comments, a GOOD readme with examples on how to compile and run the program. They probably wrote a script which automatically compiles the program, perhaps a makefile, maybe even included some testing (unit tests) to ensure this program’s input and output works properly and functions within parameters. This person went above and beyond and is probably a senior-level programmer and someone you want to hire. BUT, they did waste a lot of their time and went above the allocated time of three hours. This is someone that is probably incapable of “hacking” of any kind. They are perfectionists, they will often think through a problem, sometimes for weeks, before having any deliverable. And though when they do kick out that deliverable, it will be AWESOME, it may not be what you need, because you didn’t know what you needed until you had it, which is ever-so-often in the software world. This is a solid hire, but you should probably balance your team out with some “hacker” types so that this candidate doesn’t take 7 years to develop a simple program which ends up not being what you needed when a simple proof-of-concept could have been made instead.