Expanding on this, writing research code is quite a bit different than writing production code. In particular, requirements can change quickly and drastically. This means that very open designs where you don't hide data (e.g. as is common in OO programming) are often the best designs.
the implication that this threat is not present for production code is completely ridiculous.
Just because you may only use the program once doesn't mean that you can neglect good software engineering practices.
I run into bad code all of the time (some of it mine!) in our research, and it's very frustrating.
But, hey it's not like reproduceable results are important in science or anything.
Ever tried multiple algorithm variants? Wrapping an algorithm in an object and then passing it to the data provisioning code means you can be 100% sure that the only thing that has changed in your code is the algorithm.
Can you be more specific about the nature of your contributions? Writing code would seem analogous to performing experiments, which alone is insufficient to warrant authorship (but should get an acknowledgment).
That said… in my career so far, I don't think I've ever seen a clean example of coding someone else's idea to spec. If you successfully take an idea from concept to working software, or if a research project requires complex software to be written, I think it is almost inevitable that the software developer will end up making a creative contribution.
I'm also a bit suspicious about the justification that you can't be listed because aren't a "scientist". Of course, I don't know the details, but it seems fishy.
eI see software development as somewhat similar to writing a novel - someone could give you an idea, a general outline, even a fairly detailed outline, but the writer who puts it into words will almost inevitably make a meaningful creative contribution.
Here's one way to think about it - if you had two different writers, or software developers, how different would the end product look?
Beyond creative input, there's also the question of liability in case of academic misconduct. I'd question if someone acting in a technician role (say a programming professional) would have a full understanding of the manuscript and so could accept authorship; they may also lack the ability to check the findings of the manuscript which is also problematic.
> If you successfully take an idea from concept to working software, or if a research project requires complex software to be written, I think it is almost inevitable that the software developer will end up making a creative contribution.
I think we need to be careful about how we define creative contribution; there's a line to be drawn somewhere in there between a creative contribution for the sake of the software (i.e., speeding up execution time by 4x for a simulation running on a cluster) versus a creative contribution that enables the research (i.e., a novel real-time optimization algorithm for electrostimulation). The latter certainly warrants authorship, but I don't think the former does.
> I'm also a bit suspicious about the justification that you can't be listed because aren't a "scientist". Of course, I don't know the details, but it seems fishy.
Ditto, which is why I asked. My first thought was that it sounded like scholarly authorship was poorly explained and if so I was hoping to help out with that.
I agree, and the distinction you have made is a big part of why I consider the notion of an academic research programmer to be an intriguing idea. I think you've identified exactly the kind of innovation that isn't really recognized or rewarded through the current academic system. Your "former" example, for example, might still require a high level of innovation (perhaps a novel way of splitting up a calculation so that it can be solved in parallel on a cluster), but this innovation isn't really part of the study itself. How do you recognize this as creative work? And even if it isn't part of the study itself, what if this "solution in parallel" was an essential part of the study (i.e.., solution times without would have been so long that it wouldn't have been possible to refine the model to the point of having usable results?)
So a contribution is only a contribution if it contains an appropriate amount of NIH?
No programmer is going to going to want to work with academics, if they are forced to inject bogus novelty in order to get fair attribution for the real work.
As geebee pointed out, current practice may not be enough to acknowledge the role of technicians, core facilities, etc. in research and the issue is ripe for discussion. Nevertheless, I don't think that changes the meaning of scholarly authorship.
It is problematic when a team of scientists collaborate with a product group (not research software engineers but regular developers). In the limited projects I've been involved in, we ask if any product group engineer wants to collaborate on a paper we are writing. No one is typically interested and we would at least add them to acknowledgements. I found product group developers were interested in collaborating for patent submissions. I definitely don't want to generalize but take this as a data point.
FWIW product engineers usually get bonuses for patents, so there's the obvious incentive of $5k in your pocket.
Also, if you're on a patent, you get the cube (and the cash).
There are plenty of Principal RSDEs and some become Managers of technical leaders of teams, which sometimes even include researchers.
But of course, the track is not as clear and common as for plain Researcher or SDE (in a product team).
PS: As far as I know, the patent bonus are there for all (though I can't comment on values).