I work in a mid-sized engineering firm (roughly 2000 employees total) in the US. One of our more senior engineers, let's call him John, has been with the company for about 4 years, and is aiming to be promoted from "Senior Engineer", to "Engineering Fellow" (EF). We only have 5 people on staff at any time in the "Engineering Fellow" role, and it's very competitive (and is basically a doubling salary for the successful candidate).
Background: John gets along well with his peers and management, along with 2 of the existing EFs. However, two of the older EFs and John don't exactly see eye-to-eye. I suspect this is mainly due to:
- John likes to research new technologies in his spare time.
- He's been pushing the company to move completely away from legacy Windows-based products to Linux, Docker, automation, etc.
- One of the EFs that doesn't like John, let's call him Chan, has expressed concerns that John is going to effectively automate Chan's team out of work. The other EF that doesn't like John doesn't outright state his disdain (but votes "no" on anything John proposes).
I've been encouraging John to show more of an interest in the core products offered by our company (senior engineers get some degree of choice over the projects they work on; EFs get complete control over the projects they start/work-on, so long as it can eventually turn a good profit; they're basically researchers and industry experts). John has fought learning most of our products (i.e. the legacy Windows ones), and instead makes every effort to only work with our newer Linux products. He's even told me and senior management, in blunt terms "I'd rather take a small pay cut and work on technology that boosts my CV and skill set, than to master something only useful in one division of one company. If the shareholders ever demand layoffs to ensure a good quarter, at least I can take the skills with me". I told John this could hurt his chances for future promotions, but he just noted that it's a risk he's willing to take, and that it's better than risking being unemployable".
Problem: during a meeting with most of the EFs and senior engineers, John proposed an automation solution (i.e. with Docker and Kubernetes), that would almost certainly render 200+ Windows developers redundant within 16 months. When Chan confronted him on it in the meeting, John just noted "I'm not trying to get our colleagues canned; they can re-train and use their years of in-house experience on bigger-and-better projects". This left Chan incensed, and he exclaimed "easy for you to say: not everyone has youth and time to re-train their core skill sets. Instead of trying to create more ways for us to solve the same problem, why don't you get on-board with our major products and contribute to them instead of proposing alternatives be written from scratch?".
After taking a few seconds (John looked like he was fighting to control his temper), John just opens a remote desktop session, demonstrates that he's already designed the system in spare time, and (unfortunately) blurts out "because I've already solved this problem in my spare time, and we should start using modern engineering approaches instead of old ones that are soon-to-be replaced".
Now I'm left with a serious problem: Chan is petitioning to senior management to have John fired, but some of the management team (and 2 of the EFs) also wants to see John's side project. Several senior engineers have dropped from the Windows-based projects, and nobody wants to (willingly) join them (we still need to ship updates to customers every 6 months), and have admitted they don't want to be working on something that might be winding down, leaving them as the first potential layoff candidates.
John shouldn't have lashed out so matter-of-fact-ly, but Chan should never have antagonized or stonewalled John. We also can't find John's demo work (no idea where he stored it), so it's not like we can just fire him and pull up his backups if he's found a way to save literally millions of dollars per year. I asked him if he has a copy of this code, and he just noted "nope, that was a video recording. I did the entire project on personal time with my own PC, no company-supplied resources, etc. I might demo it again in the future when it has the right support and budget".
How do I even begin to address this mess? I've been given authority to discipline/reward anyone, even EFs (thought they usually have more seniority than me, a "middle manager"), so this is a really awkward position to be in. I'm not sure if I should just fire Chan and promote John, or just reprimand John and Chan. Or do I fire John for suggesting he's not sharing his "million dollar idea" unless he gets promoted first?
UPDATE:
Someone relayed this post to our company #random
channel in Slack (which is usually just posts from r/programminghumor
on reddit each day), so the issue has snowballed. Managers are allowed to use StackExchange Workplace for help (if data is anonymized), so I'm fine, and the Slack message was purged, but more damage has been done. What a crummy week.