30

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?

  • 4
    Your second question is answered in When does a paid research assistant become a co-author? – ff524 Feb 1 '15 at 23:02
  • 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 2 '15 at 14:52
  • 2
    As a programmer, I feel this is related to 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 3 '15 at 4:02
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.

  • 13
    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. – user18072 Feb 2 '15 at 6: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 2 '15 at 6: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 2 '15 at 6:50
  • 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 2 '15 at 19:54
  • 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 3 '15 at 17:03
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.

  • 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 2 '15 at 6:23
  • 2
    As a developer, I can confirm we make more than PHD students. – Code Whisperer Feb 2 '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 2 '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 3 '15 at 4:06
  • 2
    Some undergrads are better than a lot of real programmers. – Peter Shor Jun 22 '17 at 2:04
13

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.
  • 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 1 '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 1 '15 at 23:57
  • 5
    @PeteL.Clark: Buying books to form a reference library is a major exception to that. – aeismail Feb 2 '15 at 4:28
  • 3
    @aeismail: I agree (more than most: I have lots of books). – Pete L. Clark Feb 2 '15 at 4:30
  • 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 2 '15 at 7:58
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
    The Workplace has a question about this that can elaborate on the topic. – Telastyn Feb 3 '15 at 16:26
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?

  • 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 supports Monica Feb 2 '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 2 '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 3 '15 at 4: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 3 '15 at 6: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 3 '15 at 6:18
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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.