Content of review 1, reviewed on September 27, 2014

Reviewer's report:

This is a well-written and useful summary of the pitfalls and best practices of software engineering. Although many of these are well-established in the software community, many bioinformaticians coming to software development from a research route may not be aware of these valuable lessons. Of course, some of the points can be debated (e.g. it can be argued that some thought needs to be paid to optimization at the outset) but the point is that you should understand the rule before you break it.

Minor essential revisions:

The commentary would benefit from a "what next" section. The reader is convinced that they need to write well-engineered structured programs. They have a rough sense of traps to avoid. How do they learn more? I do not have an extensive list of resources to recommend. But as a start, I think the Mozilla labs software carpentry project deserves a mention http://software-carpentry.org/index.html

Discretionary revisions:

  1. citation for GOTOs: "Dijkstra, Edsger W. "Letters to the editor: go to statement considered harmful." Communications of the ACM 11.3 (1968): 147-148."

  2. the final paragraph of point #10 alludes to 'second system syndrome' as described in the still-relevant classic "the mythical man month", which would be a useful source to cite

  3. The recommendation to use a VCS is a bit buried in point #10, and there is no mention of VCS hosting solutions like github or bitbucket. In this day and age I would argue there is no excuse for not putting your software here, no matter how small. "Commit early, commit often" is another lesson I find cannot be drummed in enough

  4. For point #4, I like to emphasize test-driven development, which is a major point of many modern software development methodologies

  5. Point #8 seems to be conflating spaghetti code with poor module construction. But this is a nitpicking point, they are broadly analogousSigned Chris Mungall cjmungall@lbl.gov Level of interest:An article of importance in its field Quality of written English:Acceptable Declaration of competing interests: I declare that I have no competing interests

Source

    © 2014 the Reviewer (CC BY 3.0 - source).

References

    Janna, H., Kenneth, H., Christoph, S. 2014. Ten recommendations for software engineering in research. GigaScience.