3 ms·
I don't think there's any stigma about producing good code. There are several main issues: 1) New PhD students don't know how to code. Very few students have a
by joshvm 11y ago
I don't think there's any stigma about producing good code. There are several main issues:
1) New PhD students don't know how to code. Very few students have any serious coding experience before entering grad school.
2) There is often nothing in place to teach people how to write maintainable code.
3) Even if they do know how to program, that's very different from knowing about good software architecture.
4) You can't publish a paper simply because your code is pretty. As beautiful as that code is, it's only the output that matters.
Professors simply do not have time to write code. Like many academics at his level, my supervisor chairs a number of international panels, he's usually got meetings all day, every day. He's got papers to review from everyone in the group and so on. Coding is therefore usually assigned to either PhD students or Postdocs, who are simply PhDs who have learned what not to do.
Time pressure is immense in academia, which is ironic given how slowly things happen. You've always got a conference or paper deadline coming up which means the focus is on results, not beautiful code. If the code works: yay, if not, bodge until it works. If the code is used by other people to process data then it gets worse, because now you've got to support whatever crappy interface the first version supported. And so academic code is littered with poor or conflicting documentation, weird interfaces that make no sense and require perfectly formatted data or everything breaks.
Sooner or later people leave and the codebase gets dumped on the fresh students. They look with horror at the mess they've been given and think "I don't have time to rewrite everything" and the cycle continues. Really what's often needed is a bit of funding for someone to come in and completely rewrite all the legacy code that the group uses from scratch.
The best possible thing academics can do is open source their software, even if it's licensed as non-commercial. Another route is to specifically task someone with commercialising the software.