91

I'm seeking advice on how to handle a high risk opportunity.

My employer recently had to do some layoffs due to changing the underlying technologies used for its products (ie: moving from C to C++, migrating from CVS to GIT, etc). For some stupid reason, they insisted that most of the developers would only be given 3 months notice, but they'd actually have to work it rather than being given 3 months' payout. One of the senior guys that was laid off got a nice 5 month payout, while the rest of us have to work at a job we now hate, and some of my co-workers actually have to train underpaid replacements.

So, everyone is being less than accomodating, griping over verbal language barriers, etc. I am in a very unique situation though. I'm working for about 6 more weeks before I have to turn in my keycard, and have been looking for new work. Due to shoddy IT policies, all the devs have access to the same master password for our data and versioning servers. One IT person (not me, fortunately) decided to do something very mean: he migrated the CVS repo with all our code to GIT, but just the HEAD revision, and there are no copies to be found of the server data from the old CVS server.

The code builds fine with the new GIT server, so we thought everything was fine. Wrong! We checked out the latest copy of a key piece of code (40,000 lines) that our products depend on. Someone (we can't determine whom, since it seems DHCP lease logs and SSH "last" logs don't go far enough back, "admin" user account used to do this), and someone ran it through a parser that:

  • Removed ALL comments (these are key, since we have massive lookup tables of register values and bitfields).
  • Removed all indentation.
  • Swapped all integer literals so they are decimal rather than hex, so the bitfield values aren't apparent.
  • Renamed all functions to useless, non-descriptive names.

An example would be:

Old Code

#include <iostream.h>

main()
{
    initDevice();
    int i = 0x8001; // Set MSB and LSB to enable diagnostic mode on older models.
    cout << "Hello World!";
    shutdownDevice();

    return 0;
}

New Code

#include <iostream.h>
main()
{
foo_0001();
int i = 32769;
cout << "Hello World!";
foo_0082();
return 0;
}

Remember, this was done against about 40,000 lines of code in hundreds of files.

Nobody noticed this because the automated build jobs just kept running fine. Now that things need to be changed, we're pretty much up the creek without a paddle. Me and a few of the other devs know a lot of this code, having written it, but it would be a massive undertaking to correct this mess so that it's at least usable to the point where we can make improvements, support new products with it, etc. Management is furious, and one of the software managers literally threw stuff around his office in a shouting rage when they found out no backups can be found. They have time-based backups, but it seems this change went in several weeks ago, so the oldest backup is this junk code too.

About a half year ago, I was doing remote work from home. The company encourages us to put in extra time via VPN, but it doesn't count as "working time". It's basically a way to get extra work after 5pm out of us for free. There is no policy against using personal computing resources to do work. I have a copy of the pre-SNAFU code base.

The workplace environment isn't great, but pays a LOT more than what I'd make elsewhere. When I'm let go in 6 weeks, it's going to be a pain paying the mortgage and supporting my family, but we'll survive. Is there any way I can capitalize on this? I've though out the following scenarios, and need advice on which route to take. Keep in mind I'm being 100% honest when I state that I was NOT the person who sabotaged the code base:

  • Tell the owners I have a spare copy of the code.
    • Maybe they let me keep my job, chances are they won't.
    • I can't really demand they draft a new job offer for me, since it reeks of blackmail/extortion, and they could probably take me to court. They may even think I engineered the sabotage itself.
    • Very high risk, minimal reward.
  • Tell the owners I worked so diligently on the project, which I did, that I have most of it memorized, but it would probably take me 2 years to completely recreate.
    • Safest option I can think of.
    • I actually have about 70% of that stuff committed to head, or know how to fix most of this in about 6 months.
    • Helps me pay the bills for a while yet.
  • Tell them the same as above, and that I can fix it, but we'd need to negotiate a better pay rate (3x current rate) as an external contractor.
    • Only problem compared to above is it might make them think I'm the saboteur. Not something I want them to think.
  • Leave the situation alone, and part ways in 6 weeks.
    • Obviously safest choice.

I don't feel I have any duty to volunteer the code to the company free of charge. I'm not IT support, and I'm not responsible for them not know how to do backup testing. Also, I'm not happy having to help train people that will replace me and my friends. I want to benefit from this situation so I'm not digging into my savings to pay the mortgage while I job hunt, and I don't want to make the owners suspect I caused this and come after me with lawyers, burning up my savings even faster.

Are there any legal routes where I can prosper from this complete disaster?

Update

It turns out I was mistaken. I never had a copy of the code.

The shouting manager has been sacked, so at least some good came of this.

All of us on notice were called into a meeting room with the CTO and head of the legal team, and they laid out the whole story I just described, and in clear words, said "you little parasitic ****eating ****wads ... we know it was one of you", and demanded us all to sign a written agreement noting that we claimed we had no part in the whole thing, with a legalese-ish clause at the bottom granting them rights to check our personal e-mail to confirm this.

One of the senior developers told everyone not to sign a thing, as there was no way it could benefit us. Nobody signed a thing.

I will simply stay away from this and ride out the next 6 weeks with a smile on my face. Sorry for multiple accounts, trying to protect my privacy.

And no, Jake/Jacob isn't my real name.

Final Update

First, here's "hello world" encrypted with the password I've used on the past few throwaway e-mail accounts. Pipe it through openssl enc -d -a -aes-256-cbc with my account password for this account and the previous two ones for proof.

U2FsdGVkX1/Q0Xq+Ium6X5BxoZ7ZhhpLtz7ltU+/WrM=

Anyhow, today was insane. Some crazy person on the team found this post and shared it with the team. Of course, the interim software manager got to see it. Well, someone e-mailed management with a demand for payment via bitcoin. No idea if they actually have the code or not. For all we know, it's a troll taking things too far.

Thank you for the sound advice. Staying clear of this. I'm still amazed they haven't just paid off the devs and sent them packing, rather than forcing a group of spiteful devs to train their replacements.

And to address one of the comments: yes, it's a "salary dump". The C developers are fluent in C++ as well, along with CVS, SVN, git, mercurial, etc.

Yes, I thought I had a copy of the code, but I was mistaken. It was a separate project that wasn't altered, not that it matters. I've decided to quit today, and will just zero-wipe my personal HDD at home. Problem solved.

Jake
  • 3
  • 1
Jacob
  • 607
  • 1
  • 6
  • 4
  • 2
    Comments are not for extended discussion; this conversation has been moved to chat. – enderland Mar 04 '16 at 19:08
  • 10
    Because OP totally changed question after garnering lots of initial votes. As it stands the whole things is confusing and useless. – blankip Mar 04 '16 at 19:11
  • 3
    Well, hopefully the management learned a lesson: When you fire employees there's a reason you escort them from the building that very day and pay them off – Wayne Werner Nov 03 '16 at 18:35
  • Wow! Bitcoin ransoms, stolen data, OP changing his/her story to potentially cover tracks, hashed data in the question out of super paranoia? This belongs on dailyWTF. – Cloud Nov 22 '16 at 05:47
  • 2
    @DevNull I know right!? I was gripped. – Grimm The Opiner Jun 30 '17 at 10:14
  • @GrimmTheOpiner The way this reads, it sounds like OP could have helped out his/her company, but decided it either wasn't worth the risk or wasn't profitable, and destroyed unintended backups. Hopefully the company learned about the concept of "garden leave" as WayneWerner points out. – Cloud Jun 30 '17 at 12:19
  • 1
    @DevNull ...destroyed unintended backups, wow, I didn't think of that. I took the statement that they 'didn't have them after all' at face value. Now I can see them, relaxed in an office chair, telling their management as an almost imperceptible twitch moves one corner of their mouth! – Grimm The Opiner Jun 30 '17 at 13:02
  • 1
    @GrimmTheOpiner Yeah, after looking at the edits, it sounds like OP did indeed have the data, and just backtracked after his/her boss found this post. Surprised OP didn't just delete it, but SE tends to prevent deletions once there are high quality answers. Once OP realized that there was no way to benefit from this situation, he/she likely just destroyed all evidence and moved on. Bitcoin ransoms, lol. This is one of the funniest SE:WP questions I've found. – Cloud Jun 30 '17 at 15:08
  • "with my account password for this account" — we all know that StackExchange doesn't store passwords, only their hashes, so even if you implied an admin could check it, no, they could not.

    – Display Name Sep 04 '17 at 05:47

10 Answers10

69

This is not a decision you want to spend a long time contemplating: the longer you take to act the more suspicious it will look when you eventually come forward.

I really see three options:

1. Honesty

In this situation you are - somewhat - putting yourself at this company's mercy, and also counting on their generosity, which may be ... silly.

You go to your boss and say:

Listen, I was working from home 8 months ago and have an older version of the program on my personal machine. Here's a USB with it, it's yours.

If this person is a decent human being he will thank you from the bottom of his/her heart, and will offer you a reward. You could potentially ask for one at this point.

I know you guys are letting us all go, but if you were to offer me a bonus for helping you out I wouldn't refuse it. Have a great day.

You keep your dignity, and you take the moral high ground.

2. Stay Safe

If you're dealing with vengeful, irrational, and nasty people, then just keep quiet. If you suspect that any attempt to help them would end in you being accused of plotting against them then you're better off simply leaving in 6 weeks and washing your hands of it all.

However, at that point the company probably goes bankrupt, and a lot of people end up losing their jobs. It's not really on you, but you could do something about it.

3. Anonymity

Put the code on a USB, and type up an anonymous note saying:

I had this code on a personal laptop due to working on it from home. I don't want to get involved in this situation in any way, so please accept it anonymously. It's a little older, but better than nothing. Good luck!

Then stick them both in an envelope and leave it on a manager's windshield, or in any place where it will be found, but not be traced back to you.

Conclusion

I honestly do not think that you can leverage the situation into forcing them to give you a job. If you choose to try and deceive them into letting you "rebuild" the code then sooner or later they will simply come to the conclusion that you sabotaged the project for this very purpose.

Best to do without that particular headache.

AndreiROM
  • 49,631
  • 26
  • 124
  • 186
  • 5
    It's possible that company policy might have repercussions to the employee for having taken the work home. The safest course of action is your number 2 - and just stay out of it. Items 1 and 3 could be twisted by a good attorney to make it look like the OP actually was the cause of the problem and that they came to their senses only after quite a bit of "damage" was done leaving him open to a lawsuit. – NotMe Mar 03 '16 at 21:14
  • 9
    It's in these situations I like to tell myself "I'll give them as much care as they've given me," and it's then in hindsight the companys' bad for obviously not caring about it's employees. – CKM Mar 03 '16 at 22:05
  • 10
    I would not put a USB stick on a manager's car. Advice is OK other than that but doing the USB thing has A LOT of implications/risks. – blankip Mar 03 '16 at 23:05
  • @CMosychuk And for combining that attitude with atrocious IT policies. Either you have faith in your employees or you don't, not both. – jpmc26 Mar 04 '16 at 00:53
  • 1
    Don't use USB or any digital media for path #3. Get the code, go to a far, anonymous print office, print out the whole code (small letters), then anonymously leave the print or mail the code to the company. Take care of security cameras while doing it. Do it so it arrives right next your departure. – Mindwin Remember Monica Mar 04 '16 at 14:48
  • 1
    @Mindwin - isn't the printed code next to useless, since the number of man hours necessary to go in and manually enter it would be up in the hundreds? It's a moot point since the OP doesn't have the code, but what's wrong with an electronic version? That it might somehow be tracked? – AndreiROM Mar 04 '16 at 14:58
  • For your #3 option, the anonymous route, consider putting in a digital fingerprint so that you can choose to identify yourself at a later time. I think it'll work if you just put in your PGP public key. This way, if the managers want to reward you, they can encrypt a message and only the savior (you) can decrypt it. – user2023861 Mar 04 '16 at 14:59
  • 2
    @user2023861 - if someone is in a similar situation and decides to go that route they may as well forget about a "reward". Consider that in most circumstances - and especially as far as these people are concerned - whomever comes forward with the code is more likely to be blamed than lauded. In that case would you want to give these people more tools to help them track you? – AndreiROM Mar 04 '16 at 15:06
  • @AndreiROM, if I were in the OP's position (and still had the code), I would feel morally obligated to return it. The code belongs to the company regardless of whether or not I like my manager. I'm just suggesting that the OP give himself the option to identify himself. It's not a tool for the manager to track the OP because the manager cannot force the OP or any of his coworkers to decrypt some message. – user2023861 Mar 04 '16 at 16:25
  • @user2023861 - I see what you're saying now. Still, with people that nasty I don't think identifying yourself at any time would be a good idea. Especially after the OP's update it seems to me like they would simply *love* to blame someone for it. – AndreiROM Mar 04 '16 at 16:27
  • @AndreiROM yes, an USB stick can probably (although might be going into spy territory) be tracked by the serial # and the sale receipt. Also, why make it easy for a company that is laying you off? – Mindwin Remember Monica Mar 04 '16 at 19:57
  • 1
    Is there any compelling reason the OP has to say it's on a computer at home? What about the little white lie of finding it on their normal company computer, and simply saying they didn't realize it was there until they found it? The OP could even copy it to an obscure location on the machine first, if they really want. (It would be important to preserve file create and modified timestamps in the copying in that case, but this is easily doable. I have 7-Zip configured to preserve create timestamps, for instance.) – jpmc26 Mar 04 '16 at 20:33
48

What's your duty? Give it to them - if they want it.

As a paid employee, you have a fiduciary duty to provide them with this code that belongs to them in the first place.

You should not even begin to consider other alternatives. It's theirs. They pay you. Give it to them.

If they ever find out you withheld it when you knew they wanted it, you could be in a lot of legal trouble. I am not a lawyer. It's probably worth some money to go over your situation with a lawyer to get legal advice.

Do they really want it?

If you were encouraged to work from home on your own hardware, they should have been polling you and others who may have done the same for if you have copies - if they valued those copies.

Perhaps the copies are too old. Perhaps they have known copies that are even more current that they don't talk about, but that they don't want to use.

Conclusion: Find out what they want.

There's probably some perverse political stuff going on here that you're not privy to. Be delicate. But find out what they want.

If they want it, give it to them. You'll be the hero. Talk to a lawyer. Good luck.

Addendum

You didn't mention it, but CVS isn't distributed version control, like git. Maybe they assumed you shouldn't have an entire copy of the repo. Definitely time to talk to a lawyer.

Postscript

It turns out I was mistaken. I never had a copy of the code.

I wonder why you thought you did. Perhaps you thought CVS worked like distributed systems which you might be familiar with. I am disappointed with your desire to leverage the firm's mismanagement by using something they would already own as a bargaining chip.

Aaron Hall
  • 4,273
  • 1
  • 30
  • 36
  • 7
    Given the apparent ineptness of management in the fiasco, I wouldn't assume they're aware of but un-interested old copies of the code that might be floating around elsewhere. – Dan Is Fiddling By Firelight Mar 03 '16 at 22:38
  • 3
    I think you have some good points but I disagree on the employee having any sort of duty to provide a stored copy of something from their home equipment, given it wasn't this employee's job to store the code or back it up. That side of the law is really enforced if he were to use/sell said code. If he had done coding outside of work and it is stored outside of work and he would work to get the code back - all true here. Then he should get paid for that outside work. How much? And how would company ever know if he has everything or 20 lines? – blankip Mar 03 '16 at 23:21
  • 4
  • 1 for your first paragraph. The OP has the duty to act in the best interest of the employer until the moment he leaves on his last day.
  • – Anthony Mar 04 '16 at 02:05
  • 2
    @Anthony I think "act in the best interest of the company" only goes so far... when a company has acted like this? (One side of the story: Laid off, training replacments? Rather prickish...). At this point, it's important to do your job, but ultimately CYA. As others have pointed out, coming forward with a backup (before "I don't have them" edit) puts you in the spotlight of mad people - rightfully or wrongfully. – WernerCD Mar 04 '16 at 04:34
  • 15
    Regardless of duty and them being pricks, 10 years from now I'd rather be able to tell the story of how I was able to save the company when disaster struck because I had an old copy somewhere (even though they had already told me I was laid off), than the one about how it was a really bad company I was happy to see go up in flames when they unfairly laid me off. The first one is better for job interviews too, and people will be more likely to think of you whenever they are looking for new people at some completely different company. – RemcoGerlich Mar 04 '16 at 08:12
  • 9
    The employer has the duty to act in the best interest of the OP until the moment he leaves on his last day. Does exchanging two words provide some enlightenment @Anthony? OP and employer were in symmetrical exchange (work vs money). Their "duty" was always in symmetry. – kubanczyk Mar 04 '16 at 09:31