|
I read what the author has written, and if I’m still interested, I look at the code itself. I try to answer, in my own mind, questions such as these: Does the author clearly explain his or her motivation, goals, and plans for the software? Are these reasonable, in view of the complexity of the problem, the state of the art, and the personnel and other resources likely to be available? If special expertise is required, does the author have it? Is the author familiar with others’ relevant prior work, such as existing software, industry standards, and notable books and papers? Is terminology, of the problem domain and of computing in general, used correctly? Are the basic design decisions reasonable, and if unconventional, adequately justified? Is the target platform relevant to users? Is the implementation language widely used, especially suited to the problem domain, or both? Are existing libraries and platform facilities used, and if not, are there good explanations for what is being re-implemented and why? How much progress has actually been made, and how does this compare with the author’s own assessment of that progress? Does the code do what is claimed? Are there any major parts that are missing? Are the algorithms and data structures suitable? Does the code follow a consistent style? Are there comments? Are errors and exceptions handled? |