28

Edit and disclaimer: this is not US, and the usage of the word "internship" below is incorrect. It does not refer to an US internship (as I was informed below it means something different). As this is more like an academic environment, this question does not belong on this site. We hire college students to do non-commercial tasks before they are introduced to real projects (such "internship" is also required for them to finish college in my country)

I'm an internship mentor at my (IT) company for a group of several people. I've done this several times before. The task the interns are given is an application (each one works on their own repository). They usually start with bad style code, after that we guide them how to rewrite it properly, using design patterns and clean code, so that they can learn and compare the proper code with their previous mistakes. We usually end up with a very specific set of design patterns and internal architecture.

So a few hours after the internship started one of the interns showed me his completed project. It took me just a few seconds to realise that he obtained the project from (probably) one of the former interns who he knew. The same pieces of complex logic, the same sophisticated mix of design patterns.

I checked the local history of the project in his IDE - all the complex code appeared at the same time with no development. I started asking him questions - he had no idea whatsoever how the application works internally. He immediately became very nervous, instead of answering my questions was basically reading the code from the IDE... I asked him if he is the author of this code - he confirmed he wrote it.

There is absolutely no way he wrote this code, though. Even I couldn't have done this task so perfectly in just hours, and I've been a professional developer for years now.

What should I do with this guy? He was one of the best candidates we interviewed. He definitely knows how to write code. The options are:

  • fire him next thing tomorrow morning, for cheating and lying about it
  • approach him privately and inform him that I know he is not the author of this code, explain that the purpose of the internship is to learn, and by copying the code he is not improving his chances of employment, but ruining them, ask him to delete the code and start over

The thing is, before they started, I made it pretty clear that they will have all the time needed to finish this task, and that it's OK if they will have to change the entire application a few times, because the purpose of all of this is to learn.

Additionally, I feel kind of personally offended, because that intern must think I'm an idiot if he feels like he can get away with something like this.


EDIT: I talked to him. He told me that he "copied parts of the the code from somewhere" because he already knows how to do it all anyway (he didn't, because he couldn't explain anything about that code, but nevermind) and feels like he's better than other interns anyway because he has more experience. So I've given him a task: to add some features to his application - not particularly difficult, but they were never added to any of our "internship" applications before.

After 30 minutes, he resigned from the internship on his own.

closed as off-topic by Dukeling, Thomas Owens, IDrinkandIKnowThings, gnat, Snow Jul 2 at 5:38

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking for advice on a specific choice, such as what job to take or what skills to learn, are difficult to answer objectively and are rarely useful for anyone else. Instead of asking which decision to make, try asking how to make the decision, or for more specific details about one element of the decision. (More information)" – Dukeling, Snow
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 15
    Why are all of the interns working individually on the same assignment after they have been hired? – Thomas Owens Jul 1 at 16:37
  • 11
    "He was one of the best candidates we interviewed. He definitely knows how to write code." How do you know this? If it was sample code he submitted before, maybe that was "borrowed" also. P.S. I like Peter M's answer. – Damila Jul 1 at 16:49
  • 7
    If the intern was able to re-use code, it sounds like you're assigning the same project over and over again. Your narrative seems to back that up. What's the purpose of doing this? What is the structure of your internship program? Are you supposed to be testing/evaluating these interns, or getting them to do meaningful work? Or both? – dwizum Jul 1 at 16:54
  • 7
    FWIW this sounds more like an extended job interview to me than something academic. IMO this is the right place for the question. – Rup Jul 1 at 17:36
  • 10
    This would likely get closed on SE Academia even faster because it's happening at a company, not an academic institution (thus: lacks faculty, deans, grading, course structure, syllabi, etc.). – Daniel R. Collins Jul 2 at 1:15
59

Given that he is an intern and is not likely to understand professionalism in the workplace, I would go with your second option first:

approach him privately and inform him that I know he is not the author of this code, explain that the purpose of the internship is to learn, and by copying the code he is not improving his chances of employment, but ruining them, ask him to delete the code and start over

And in the process explain about honesty, professionalism etc. This is part of real-world learning that is intended through an internship. It would also be beneficial if you can pull up the source code from the original author and show that this intern's code is a direct match in order to prove your assertion about copying.

If on the other hand, he chooses not to do this after your talk, then I would follow up with your first option:

fire him next thing tomorrow morning, for cheating and lying about it

Because, if he gets this far, he is not teachable at the moment and is probably going to be wasting your time in other areas in the future.

And of course you need to remain professional and keep your personal feelings about this intern out of the equation.

  • 4
    Yes, give him the chance and roast him if necessary. – Solar Mike Jul 1 at 16:49
  • I like this sollution, particularly because he may not understand the intent of the assignment. He has approached this as a deadline he needs to get a high mark on, not the learning experience you've tried to make it. – TvZ Jul 1 at 18:08
  • 12
    @AbstractObject, And please do change your assignments slightly every time you have a new batch of students coming in. – Stephan Branczyk Jul 1 at 22:02
  • 6
    Definitely change the assignments, and do it in very subtle ways... say changing an "increase" to a "decrease", or "intra" vs "inter" (intranet vs internet, completely different network requirements). This will catch cheaters much easier because the logic will be completely wrong. – Nelson Jul 2 at 1:23
  • 2
    Honestly, this doesn't seem like a professionalism issue so much as an ethics one. Cheating being a bad thing is drilled into most people from a very young age; by college age, the intern should already know full well what cheating is. I agree that they should get a second chance -- after all, maybe this is their first time realizing that actions have consequences -- but only one second chance, and they need to be watched extremely closely. Cheating on an intro project isn't a huge deal. Cheating on actual work could open the company up to massive lawsuits and fines. – Nic Hartley Jul 2 at 4:16
21

The intern has proven that you cannot trust him. He has disobeyed direct instructions and then lied about it to your face. This is a failing of professionalism, but it's also a moral failing, and one that he should have been quit of already. His record looks good... but how much of that record is actually true? How much of that work was his, and how much was cheated? He literally jumped to cheating as his go-to technique upon showing up at the job, in spite of being told that it was in no way necessary, and without actually trying to understand what he was turning in.

In your position, I would have serious questions as to the reliability of the information that led you to conclude that he was "one of the best candidates we interviewed". If, taking those into account, you think that there is still some quality in him that makes him worth trying to salvage, then you have to determine if you think that you personally have what it takes to change an ingrained pattern of cheating and lying about it. If you have a degree of confidence that you can actually change him (as opposed to just getting him to pretend to contrition and then try to cover his tracks better) then you can make that attempt.

Personally, I'd fire him. Make it cold. Make it hard. Make it abundantly clear to him that his behavior is completely unacceptable in the professional world and that he's burned his bridges with you. Then let the other interns know what happened and why. They'll find it a good encouragement for doing it the right way, it might be enough of a wake-up call to get him back on a better track, and you wont' have to deal with him or the office politics shenanigans he'll try to pull regardless. Someone who's happy to cheat and lie about it is not going to shy from pulling office politics shenanigans, especially if they have reason to think they're on thin ice.

  • 5
    @Niko1978 "This fraud", "I'd also inform his university about this unethical behaviour" seriously? He's just a kid, starting to learn how to act on real world. I mean, everyone done some embarrassing, unprofessional stuff at beginning of their career, you probably can't remember yours! What you or he will achieve if you destroy his career before it even starts? This is just to extreme. – Hamed Jul 2 at 9:45
  • @Hamed if he's already been cheating his way through school (highly likely) then this isn't an isolated event, and it is an event that he should already know is wrong. If his school isn't on the honor system, then he'd probably be able to recover. If it is on the honor system, he deserved what he gets. – Ben Barden Jul 2 at 13:15
  • @BenBarden Well I'm not saying there souldn't be any punishment for wrong behavior, I even understand if a company decide not to proceed any further with him (I'm not encourage it though). But calling him fraud and tell the university? That's just too much. As a mentor, you always need to try teaching first, if not worked, then let the guy go. – Hamed Jul 2 at 14:26
  • @Hamed he is a fraud, and there's pretty strong reason to believe he's been cheating at university already. Are you saying that evidence of probable university cheating isn't something that the university should be told about? – Ben Barden Jul 2 at 14:37
  • 1
    @BenBarden First, you don't know that, that's just an assumption. Second, you know university and company are very different experiences, you need to shape a junior or intern to what you need/want. Third, why giving up on him this soon? he is still very young. "once criminal, always criminal" isn't true specially when the guy is in the beginning of his career. – Hamed Jul 2 at 14:45
3

The only flaw I seen on your otherwise excellent suggestion to

approach him privately and inform him that I know he is not the author of this code, explain that the purpose of the internship is to learn, and by copying the code he is not improving his chances of employment, but ruining them, ask him to delete the code and start over

is that you're still trusting your guts to judge he has cheated. If I was a friend of yours and you told me this story, I'd buy it - but I'd prefer to have a bit more of evidence before confronting him and making a relevant decision. And, after all, solving a problem by copying a working solution that you've found online is an accepted practice in the real world - says some stranger on StackExchange.

So I'd give him a new assignment. Since they've managed to perform that great in the previous assignment, you now want to level up a bit and test how good they are. Make sure you haven't given this assignment to someone before - and that it's not a verbatim copy&paste from the internet - and ask this person to complete it.

If they manage to do it great - wow, you've found a great guy, don't lose him!

If they fail miserably - as both you & I suspect he will - let him know that you've caught him early, that they've done wrong by failing your trust, and give them a second chance to enjoy the opportunity of learning something useful from people who has the experience he will need soon.

It'd be the heck of a lesson, and - now, or in a couple of year's time - he'll probably be thankful for that.

  • 4
    While copying a working solution is acceptable practice, claiming you wrote it is not. – Erik Jul 2 at 5:21
  • 2
    Also, copying is ONLY an acceptable practice if you are able to understand the code you copy, so you can make modifications/extensions as needed. Usually people spend a lot of time knowing how the library/code works (Not necessarily every line, but definitely enough to not having to read it to answer questions). – Sander Skovgaard Hansen Jul 2 at 5:41
  • This approach means that the work to help the interns now doubles because that one cheater needs extra support for his special project, while all others work on the same project and can get group support. I would not advise to go that route. – Alexander Jul 2 at 7:40
  • 3
    I did what you suggested after talking to him. He told me that he copied the code "from somewhere" because he already knows how to do it all and feels like he's better than other interns anyway. He was then told to add some unique features to his application. After 30 minutes, he resigned from the internship. – AbstractObject Jul 2 at 12:16
  • On the job, one needs to be very careful about copying, and get approval to do so. An intern should follow the same procedures even if the code will not be used or released. The copyright and/or license affects whether and how a particular piece of code can be used. – Patricia Shanahan Jul 2 at 12:52

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