31

I was wondering if it would be ethical for a PhD student in the field of Computer Science to hire a programmer in an specific domain; so that he could focus more on the algorithmic or mathematical part of the thesis. Would that be something ethical to do? Should the PhD student include this assistant as a co-author in the articles?

Jeromy Anglim
  • 20,310
  • 9
  • 72
  • 108
Layla
  • 8,737
  • 7
  • 48
  • 85
  • 4
  • 4
  • 10
    Ethics aside, it is a bit abnormal. Usually in academia this sort of situation is solved via collaboration. I would strongly recommend that you seek out another academic to collaborate with rather than hiring out the work - it'll save you having to spend the money and you get the bonus of a networking opportunity. Double points, in fact, since you will be the originator of the project and bringing this opportunity to others - academia is full of talented people just waiting for someone to throw them a fresh problem. – J... Feb 02 '15 at 14:52
  • 2
    As a programmer, I feel this is related to https://academia.stackexchange.com/questions/37370. If you're concerned that your code will be horrible but you'll want to release it anyway, then hiring someone who can make it be non-horrible might be a sensible investment. A matter of how much it's worth to you to have non-horrible code vs code you wrote yourself. Given that the top-rated answer in effect says "your horrible code is fine, there's no major benefit to it being not-horrible", maybe it shouldn't be worth much :-) – Steve Jessop Feb 03 '15 at 04:02

6 Answers6

33

I don't think it is inherently unethical to do this. If all relevant parties know about it and you scrupulously acknowledge this other person's work, then I see no specific problem.

Whether it is advisable is a different question...and one you should certainly ask your advisor. I have to say that it does not sound like such a good idea to me. Your thesis work is for you to do...almost by definition. It is perfectly fine to get help from others on your thesis, and some people are better programmers than others (even in CS, I imagine), so getting some pointers from a friend is actually a good idea. But paying someone to do a part of your thesis work just doesn't sound good to me. Either the programming is an important part of your thesis or it isn't. If it is, you should do it yourself. If it isn't, maybe you don't need to do it at all, or don't need to do it to the degree that an outside professional would.

There is also the issue of the impression this subcontracting would make on others. Perhaps the cultural norms in your field are very different from mine (again: ask your advisor), but I would have a rather negative impression of a PhD student who did this: they don't seem to be very committed to their own work.

Added: To be clear, I am interpreting the question as meaning that the doctoral student himself is doing the hiring: i.e., that this is his idea and he is using his own funds. (If his university is giving him funding and simply asking him to pick someone to work with, then even asking the question "Is it ethical?" becomes less plausible.)

In terms of suspecting that this is not a good idea, I hope I was clear that this is my personal opinion, with experience from a field (mathematics) which is rather closely related to CS but is not necessarily identical. As I said, the OP should consult their advisor about this. However, for what it's worth I find it hard to believe that the reaction will be "Sure, spend your money." While not unethical on the OP's part, it seems, shall we say, suboptimal if both advisor and student feel that this is the best way to proceed.

Pete L. Clark
  • 130,631
  • 25
  • 361
  • 522
  • 1
    Research assistants are very common. In some things, they are a necessity. And, having suffered horrible research code, I wish more people had hired professional developers to do at least, part of their design. – Davidmh Feb 02 '15 at 06:15
  • 14
    The bigger problem is that academia hasn't decided that coding is 1) hard and 2) intimate to academia. Sounds like the OP is smart enough to realize this and this is their attempt at a solution. –  Feb 02 '15 at 06:17
  • 2
    @Davidmh: If the department or university wants to hire research assistants for a project (presumably one that has scope beyond that of the OP's thesis work, but maybe some PhD students have their very own paid assistants), that would be fine. The OP spending their own money hiring some outsider is a different matter. My main advice was to ask her advisor, but I find it hard to believe that the advisor's response will be "Sure, spend your own money on this project". – Pete L. Clark Feb 02 '15 at 06:26
  • 4
    @PeteL.Clark I agree doing it out of the OP's own money is a very bad idea. But I wanted to point out that doing all the work oneself is not always possible or necessarily advisable. – Davidmh Feb 02 '15 at 06:50
  • 1
    @Davidmh I think that one should not do everything oneself is pretty much universally accepted. I think the main question here is whether it is a good idea to outsource part of your (!) PhD work to a contractor. – xLeitix Feb 02 '15 at 08:02
  • 3
    @AAA, I don't think academia is in the dark about how difficult coding is. Thing is, if something is hard, a professional can charge a lot of money to do it. Grad students, on the other hand, are cheap. – Shep Feb 02 '15 at 19:54
  • 1
    @Shep yeah thinking said grad student is doing a good job is just being in the dark about how difficult coding is. a professional can do it cheaper than the hoard of grad students you hire to do it badly, but no one notices that it's done badly because that's the norm... –  Feb 02 '15 at 20:26
  • 3
    Maybe this should be its own question but: Pete, I'd been thinking that one of my grad students and I might supervise an REU/UROP to automate a bunch of algebraic geometry computations; she is currently doing them by hand. It's nontrivial that these computations are finite at all -- that's her first result. She has also already shown me interesting patterns in the hand computed data, where more data would be helpful. I thought that having supervised an REU rather than done the coding would only look good for her on the job market. Do you think a significant number of schools would disagree? – David E Speyer Feb 03 '15 at 17:03
  • 2
    @David: I don't really have strong feelings about this either way. I suppose that without specific evidence to the contrary, I tend to think that those who supervise REUs are "really behind" what comes of out of the REUs. So if your student supervised an REU and your letter documented her contributions to the project, then it sounds good to me. – Pete L. Clark Feb 03 '15 at 18:41
19

Sure, but I doubt you can afford it.

Let's see what the options are:

  • You can hire an undergrad part-time to write some of your code, but chances are that you'll spend more time digging up their bugs and teaching them it would take to write the code yourself. Probably not worth it.1

  • Or you could get a real programmer, but a good professional programmer is going to cost much more than a Ph.D. student makes, and probably even more than they cost (In the US the university takes a huge cut for each grad student in a grant, roughly equal to the student's stipend). Probably not worth it unless you are independently rich.

    Making matters worse, even a professional software engineer isn't able to read your mind. Their job is to take extremely large systems with many moving parts and make them managable. As a computer science Ph.D. you're probably focusing more heavily on one particular componnet, which you're going to have to understand well enough to write the code yourself.

In either case it doesn't sound like a very good deal for you.


1Note that this only apply if your end goal is simply to avoid coding yourself. On the other hand, advising and supervising are extremely valuable skills and as an academic your job isn't just to do your work but to support the field as a whole. By taking on undergraduates you're potentially doing more for the field than you could ever do by hiring a professional, and future employers will take note. Furthermore, if you treat them as researchers in their own right they might have some valuable insights, but your question was specific to hiring them just to write code.

Shep
  • 429
  • 2
  • 8
  • 7
    +1 for mentioning the cost issue. An industry level programmer (even at a beginner stage) makes considerably more money than a PhD student. However, if the programmer is being paid using by the institution or by the adviser's grant, then it might not be such a problem. – Abbas Javan Jafari Feb 02 '15 at 06:23
  • 2
    As a developer, I can confirm we make more than PHD students. – Code Whisperer Feb 02 '15 at 18:18
  • 2
    @AbbasJavanJafari, it is true that a grant could include a programmer's salary. In practice I haven't seen it much, probably because (outside the case of a huge research group) the funding agency is going to wonder why they should pay twice a grad student's salary to improve the efficiency of a grad student by 50%. They'd see more results by hiring two more grad students. Also a lot of the grant is supposedly paying for "education", not professional software. – Shep Feb 02 '15 at 20:19
  • @Shep, I agree, It is highly unlikely, unless it is a big industry related project and programming plays a major part. Otherwise, it is extremely hard to convince others to pay you to hire additional help when they are paying you to to the job and if you can't do it then maybe they should find someone else entirely. – Abbas Javan Jafari Feb 03 '15 at 04:06
  • @itcouldevenbeaboat: As a former PhD student, I can oh-so-painfully confirm we make less than software developers! Woe is us etc... – einpoklum Nov 01 '15 at 10:11
  • 2
    Some undergrads are better than a lot of real programmers. – Peter Shor Jun 22 '17 at 02:04
  • I must say it's an honor to be downvoted by @PeterShor. I would agree that I was a bit dismissive of undergraduates, but I've never seen a lot of success when researchers treat them as tools to "just write the code". As researchers in their own right, I would agree with you. – Shep Mar 10 '18 at 16:06
14

I am going to outline why I think it is ethical and contrast this with the case described in the question Is it ethically questionable for me (an undergraduate) to hire “research assistants”?. Also, I am answering with a perspective from Germany.

tl;dr: Yes, it is ethical and it is routinely done.

The question linked above explicitly asks a similar question from the point of view of an undergrad. At that stage of education, as is also pointed out in RoboKaren's answer there, certain restrictions (might usually) apply (and in many cases, keep applying up to a Master's degree):

  • It is expected that the student works on their own.
  • The tasks are reasonably "low-level" in a way that it is realistic and expected that everything is done by one person.
  • The tasks are likely to aim at demonstrating skills with a lesser emphasis on producing a real product. (That doesn't mean that, e.g., Bachelor theses cannot yield an impressive small software. But in general, what is created is a prototype rather than a marketable full-fledged product.)

Once entering doctoral candidacy, however, some changes occur:

  • There is not necessarily a requirement that the doctoral candidate does everything on their own. (Please check the rules specific to your university to see whether this applies to you.) The doctoral candidate is supposed to choose the direction and make decisions on higher and lower levels, but that does not mean that they have to write every line of code themselves after the conceptual idea has been documented, or that they have to personally accompany all 50+ participants of a user study.
  • Related to that, the tasks are sufficiently large that they can be distributed to several people. If the research is funded by a third party, it is often the case that more than one person is funded by that project, so quite some work is done in collaboration.
  • While the software produced during doctoral candidacy is often still in a very ... say ... unfinished state, it is indeed expected that real research results are being produced. That means (related to the aforementioned user study example) that it is not sufficient that the doctoral candidate demonstrates once that they can conduct a user study by observing five participants, but actual user studies with several dozens of participants, and more than one such study, have to be done. There is no point in "torturing" any single person by having them ask the same questions 50 times, when the same can be achieved by distributing the workload to several persons.

Therefore, as long as the doctoral candidate is "in charge" of the conceptual development of the research and its results, it is completely acceptable to outsource some subtasks. One more point is that the doctoral candidate is supposed to acquire some first practical experience at hiring and leading a team of people.

With that said, I get back to my above statement that it is routinely done, in order to provide some exemplary real-world scenarios. I can think of both paid and unpaid variants of this:

  • In some places, doctoral candidates can often employ one or more student research assistants (usually Bachelor/Master students), for example, for support in coding. Note that these students are not paid personally by the doctoral candidates, but that their funding is provided by the same sources as the funding of the doctoral candidates themselves. Hence, they are not only allowed, but explicitly meant to work on the same projects as the doctoral candidates. (Still, these student research assistants are "hired" by the doctoral candidate. The doctoral candidate will have the idea that some tasks could be delegated, they devise and publish the job offer, they check applicants in interviews and pick the most suitable one, and they decide about what those student research assistants get to do. The only time the student research assistants normally get in touch with anyone beside the doctoral candidate who hired them is for signing their contract, which happens at some HR department of the university.)
  • Moreover, when doctoral candidates supervise a Bachelor's or a Master's thesis, they often define the topic and requirements in a way so the results from that thesis provide some input to their own doctoral thesis. Like this, it is also a form of outsourcing some of the work that eventually contributes to the doctoral research.

EDIT: Lastly, I would like to add a more concrete hypothetical example to illustrate what kinds of tasks might be performed by such a "supporting programmer":

Imagine a doctoral candidate who does research in the area of HCI to develop some new GUI elements. The creative research part of the work consists in learning about related work, developing a new concept for a GUI control, and drawing some sketches of it on a sheet of paper, as well as designing/choosing some test tasks to validate the hypotheses underlying the design.

Before this can be converted into a publication, much more work has to be done, though. An interactive prototype has to be programmed, based on the sketched design. It will have to be made to look somewhat fancy (3D/glossy look, animations, etc., whatever fanciness contemporary software GUIs usually feature), as otherwise, study participants tend to be extremely distracted by a directly visible lack of fanciness and unable to see through to the actual novelties of the GUI concept being tested, thus totally distorting results in the qualitative part of any study. Then, to ensure tasks cannot be criticized as unrealistic, some real, or at least real-looking, data has to be integrated into the prototype. That usually means adding code to load (and possibly import/convert) one or more existing datasets. If user behaviour is to be recorded and/or timed, the prototype needs to be prepared for that, as well, by writing certain interactions into a database etc.

The whole last paragraph does not contain a single "scientifically creative" piece of research, this is just straightforward work that has to be done, and it typically takes a few weeks to get right. Toward the end of the paragraph, we're even way out of the actual research domain of HCI and deep in low-level things such as I/O and database access. All of that latter paragraph is perfectly suitable for outsourcing, and a doctoral candidate will not automatically be expected to have done all of this by their own hands.

EDIT2: Another note, as various of the other answers refer to code quality: It is true that in the case of hiring students as described above, the quality of the produced code might be less than what would be provided by a professional programmer (typically not available in the settings I have described in this answer). However

  • capable students learn quickly (in particular when they are given actual tasks, not practice tasks)
  • even though the produced software is supposed to be somewhat stable, it will usually still be a "prototype" for a limited amount of uses and thus does not have the same expectations for maintainability or security as production-level code
  • doctoral candidates are free to choose and reject suitable and unsuitable applicants to their student research assistant job, respectively (and it's totally fine to hire someone for only a month first to check out how they perform)
  • as university staff, the doctoral candidate also has a partial responsibility to give less skilled students a chance to improve, and thus should expect that not every student supervised or hired is the greatest genius around; this comes back to gathering experience in leading a team, as that will often mean a combination of diverging skill levels during the later work life of the doctoral candidate, as well.
O. R. Mapper
  • 18,363
  • 3
  • 46
  • 84
  • 8
    "Note that these students are not paid personally by the doctoral candidates, but that their funding is provided by the same sources as the funding of the doctoral candidates themselves. Hence, they are not only allowed, but explicitly meant to work on the same projects as the doctoral candidates." This is an important point: I took the OP's question to mean that the candidate is paying for the programming out of his own pocket. This does not seem like a good idea to me. If the institution itself is paying for an assistant, that's something else entirely. – Pete L. Clark Feb 01 '15 at 23:52
  • The question asked by the undergrad is about hiring an assistant to pursue "outside" research interests, not thesis research or research that is "officially" part of his/her education. So it's very different in that sense. – ff524 Feb 01 '15 at 23:52
  • 14
    In fact, I would go so far as saying that "Do not spend your own money on your academic research" is a good general rule of thumb. – Pete L. Clark Feb 01 '15 at 23:57
  • 5
    @PeteL.Clark: Buying books to form a reference library is a major exception to that. – aeismail Feb 02 '15 at 04:28
  • 3
    @aeismail: I agree (more than most: I have lots of books). – Pete L. Clark Feb 02 '15 at 04:30
  • @PeteL.Clark: Actually, I don't see any difference between (1) personally paying for that programmer or (2) using a programmer hired by the university concerning the ethics. To me, the difference between these is that (2) happens very commonly, while (1) is hardly ever feasible financially for the doctoral candidate. With (2), it is still entirely the doctoral candidate who posts the job offer, who picks the programmer, and who assigns tasks to the programmer. Your answer sounds more like you generally oppose the concept of outsourcing any work related to the doctoral thesis. I have added ... – O. R. Mapper Feb 02 '15 at 06:25
  • ... a concrete example of a hypothetical research project where such outsourcing would be appropriate in my opinion (or, particularly, some CS research that crucially relies on some programming, which hence needs to be done, while at the same time obviously not being part of the "creative scientific contribution" that should be the doctoral candidate's own doing). – O. R. Mapper Feb 02 '15 at 06:27
  • @ff524: You're right; I may have been distracted by the first paragraph in RoboKaren's answer to that question, which implies thesis research or similar. – O. R. Mapper Feb 02 '15 at 06:35
  • @O.R. Mapper: I don't think it makes an ethical difference on the OP's part: as I said, I don't find the practice unethical. However, the more I think about it, the more I worry that it may be, if not unethical, then certainly not a best practice, for the university to cheerfully watch students spend their own money on their thesis research. In particular, in your concrete example the university doesn't sound very supportive of the candidate if they expect this to be paid for out of pocket. – Pete L. Clark Feb 02 '15 at 06:43
  • @PeteL.Clark: That is certainly true (and to be clear, I have never encountered a case where a doctoral candidate would have paid such an assistant programmer themselves; at the same time, I have hardly ever met any doctoral candidates over here who did not at one point or another hire a student research assistant via the university). I agree that concerning the payment, the university could be judged ethically differently; the situation for the doctoral candidate and the programmer would be entirely the same, save for minor formal differences (who signs the contract, who transfers the money). – O. R. Mapper Feb 02 '15 at 07:34
  • 4
    @O.R.Mapper: The ethical issues arise if the research assistant tries to hide the fact that he or she is not doing the work, and passes the "subcontracted" work as his or her own. In principle, paying the student with university funds should make this much harder. – aeismail Feb 02 '15 at 07:58
  • 2
    +1. I like this answer for the example GUI research project. As an undergrad doing independent software development, I would get things done a lot faster if I had even one more person working on my current project. Tasks such as database construction/management, REST API construction, client-side GUI design and controller functions for server and client are all my responsibility. In reality, these tasks could be distributed. I'm sure that in many kinds of research, specific aspects of the programming can be assigned to another individual without much need for domain-specific knowledge. – Chris Cirefice Feb 02 '15 at 15:37
2

I recommend that you consider your career goals. If you intend to enter a career as a software developer, then I would argue that it may be ethical with credits given but is not a good practice.

I have been a hiring manager and instructor in software development for the last two decades, and one constant that I have encountered is that the more educated software developers are, the worse their code is.

They can solve complex problems in code but their code is generally not maintainable. This is something that I have had zero success correcting. This has become such a problem that resumes for software developers with a PhD or double-masters go to the bottom of the resume stack, under candidates with no degrees.

1

I will disagree with the other answers almost completely. If you are in a CS PHD (unless you are in strictly Theoretical Computer Science) and you cannot even code your own algorithms during the PHD, then you are in the wrong business. It is perfectly OK to collaborate (not pay) with other people on writing / sharing the code but putting someone else to code for you (because you cannot do it) is silly to borderline dangerous. You cannot separate the algorithm from the code (unless again you are in strictly Theoretical Computer Science) and how the algorithm performs (on an actual experiment) is in direct correlation with the algorithm's implementation.

How are you going to check if your hired programmer did a correct implementation? You cannot, unless you go exhaustively through his code, which actually might take you longer than implementing your version of the algorithm. But even then, you will never be quite sure. What you are going to do when you think of a new minor optimization? Write him an email, wait for him to implement it and get the answer 2 days later? Good luck finishing your paper in the next 3 years for such a workflow. But even if you manage to finish it, there will always be that 1% chance that something went wrong in his implementation and all your hypotheses will go up in smoke, when someone else implements your algorithm on his own and proves you wrong. What will you do then? Blame it on him? How will you be able to answer the questions about your work that someone else did for you? And say you manage to finish the first paper with the hired help and then he goes to another job. What are you going to do on your next paper? Hire someone else to maintain and expand the previous programmer's code?

Also as a PHD or a postdoc you may be put in charge (as a technical manager) of a research program close to your expertise that might be of significantly larger scale than a research paper. How you will tell your peers or more junior colleagues what to do, if you always rely on someone else to code for you. How can you separate what is doable or not within the project's timeframe if you never implemented not even your algorithms yourself.

When you become more senior (postdoc and beyond) others might actually write more code than you on your co-authored papers. But even then, you must be able to check their code for mistakes, inconsistencies and must be able to predict how the code / algorithm will perform on selected test-cases (unless again you are in strictly Theoretical Computer Science). This is not something you learn by pseudocode, high-level abstraction or shortcuts but it is something you learn by paying your dues by hours of debugging, coding and failed experiments. You cannot get a PHD in Math by letting someone else do the proofs for you. Why you assume CS is any different?

Alexandros
  • 18,921
  • 3
  • 49
  • 84
  • This answer mixes the PhD student's ability to do something up with whether they ethically should/have to this something themselves which are IMHO very different issues. OTOH it is true that outsourcing does not reduce the work to zero for the PhD student, and may result in a net negative gain. (±0) – cbeleites unhappy with SX Feb 02 '15 at 18:32
  • 1
    I wonder where you take the premise "cannot even code your own algorithms" from. By the same logic, you would have to conclude that every software developer who has progressed in their career to become a team leader or something higher is incapable of coding because they outsource a part of their coding tasks to other developers. – O. R. Mapper Feb 02 '15 at 20:25
  • @O.R.Mapper. Why not every PHD student hire his own programmer, according to OP's idea? So, in a lab with 5 PHD students, we can have an additional 5 "personal programmers". Of course those programmers should attend meetings with the supervisors since they do all the coding anyway and be co-authors at the related papers at the same time. So that the PHD students can think about algorithms for a month and sit idle for the next six months required for the implementation of the algorithms. Sounds reasonable to you? – Alexandros Feb 03 '15 at 04:17
  • @Alexandros: As I have pointed out in my answer, it is absolutely normal in some places that more or less all doctoral candidates hire one or more students for support, e.g. in programming. They do not attend meetings with supervisors because supervisors do not care or talk about programming, hence those meetings are not related to programming. It's the doctoral candidates' task to appropriately instruct those supporting students how to do those low-level tasks, after having discussed the "big picture" on a higher level with their supervisors. – O. R. Mapper Feb 03 '15 at 06:16
  • @Alexandros: "So that the PHD students can think about algorithms for a month and sit idle for the next six months" - that's simply not how things work. The hiring and outsourcing is done for the very reason that typically, doctoral candidates do not "sit idle" for even only one month and hence have no time for time-consuming, but ultimately straightforward work such as programming based on a clear specification. – O. R. Mapper Feb 03 '15 at 06:18
  • @Alexandros: As a thought experiment, scale things up one or two more levels. Do you see any professors spend months on writing code, hunting down memory leaks and debugging, because otherwise they would be sitting idle for months without anything to do? – O. R. Mapper Feb 03 '15 at 06:25
0

If most of the programming work could easily fit in a general library, you can support someone to do an open source library.

It is not an ethical issue to reuse open source software.

But make sure that this piece of software will be well documented and available to help other people that work in your domain.