Ask HN: What’s the biggest difference between professional coding and academia?
1–10 of 54 posts
Re: Ask HN: What’s the biggest difference between professional coding and academia?
#2Re: Ask HN: What’s the biggest difference between professional coding and academia?
#3Academia only worries about getting results for publishing. Testability, maintainability, clean design, all take a back seat because once the paper is done the author will likely never touch the code again.
Re: Ask HN: What’s the biggest difference between professional coding and academia?
#4Re: Ask HN: What’s the biggest difference between professional coding and academia?
#5Re: Ask HN: What’s the biggest difference between professional coding and academia?
#6In production software, this is flipped. Every feature claim needs to have an associated test, as it's a contract with your user. But when it comes to performance, everyone just waves their hands.
I'm being a little glib. But production software has to work. You'll spend far more time dealing with all of the "less interesting" details and edge cases than with research software. As ams6110 points out, this means more focus on testing, maintenance and good design. But I do want to emphasize testing - sometimes you'll spend more time testing something than actually implementing it. There's also often many more residual effects from dependencies elsewhere in the ecosystem you're working in. That's not typical in academic software.
Re: Ask HN: What’s the biggest difference between professional coding and academia?
#7Professional is often whatever works
This is fairly common with many academic vs professional differences, btw
Re: Ask HN: What’s the biggest difference between professional coding and academia?
#8This informs my design choices quite a bit.
Re: Ask HN: What’s the biggest difference between professional coding and academia?
#9If any of it ever becomes commercially released or whatever, there'll need to be a complete rewrite that makes it usable and maintainable by people other than yourself. But most of the code will never get to that point because most of what you've done up until about a week ago is wrong and worthless, and the current, correct-until-next-week iteration is stuck together with duct tape.
Speed only matters on the infrequent hot paths, which is why Python is popular. The rule of thumb is nobody cares about speed / resource consumption until it needs to run on a cluster, but then you care a lot because cluster time is metered and simulations can get huge. Fortran is still fairly popular because many math libraries are on it and porting would require huge effort from a very small group of very busy people.
Most of the coders are not software engineers and don't know / don't follow best practices; on the other hand the popular best practices are not designed for their use-case and frequently don't fit. Versioning (of the I-don't-know-which-of-the-fifty-copies-on-my-laptop-is-the-right-one type) is a big issue. Data loss happens. Git/Github/etc has steep learning curve, but so does all the various workflow systems designed for research use.
Re: Ask HN: What’s the biggest difference between professional coding and academia?
#10Ironically, an academic might get to spend a higher percentage of their time on pure coding than a professional coder does. They have other concerns. Maintainable code is not part of the desired outcome. It's consumable and expendable, not durable, so any time spent making it any better than "just barely good enough" is wasted. Why build a tank when all you need is a bicycle?
[1] At least the expectation. Some academic code lives on far longer than its authors intended, and some non-academic code vanishes pretty darn quickly. But in general, both the intent and the expectation is that non-academic code will live longer.