- It needs to work. And by work I mean execute without crashing.
- It needs to do what you expect it to do.
- It needs to have code you can actually read and debug.
- No Syntax Errors
- No Warnings (from the compiler)
- It has tests (yes, even asserts)
- It passes test.
- It logs errors.
- It does not crash.
- Someone who doesn't know you won't kill you for writing completely illegible code.
- It has instructions. For the user.