There is a whole lot of anger directed at the company and management regarding this post, and while I agree that it is deserved, seeing the developer in this situation is not "at fault" is also the wrong way of looking at this. My apologies in advance for this rather long rant -- I'm the first to admit that this post, and many of the responses, frustrated me a bit. You can skip to the final paragraph if you just want to understand the source of my frustration.
Management failed, yes. They should have let him go a long time ago and it's at least a little compassionate that they put up with this issue for two years. But, honestly, calls for more direct management involvement always concern me[0]. What really needed to happen is "Rick" needed to better manage himself. The "red flag" of "I build everything myself and don't rely on other code" scares the hell out of me and implies that management were not terribly familiar with developing software.
Use something proven, documented and solid so you don't have to re-invent the wheel. I don't buy that this guy was a "Genius Developer". I won't explain all of the obviously good reasons to using good, proven, third-party options except to say the a large benefit in this case is that others on the team might already be familiar with them and can help out more easily.
And then there's the lack of documentation. I know it's a common thing. I often feel like it's a battle I'm personally fighting all the time with other devs at every level. I mean, is there any language out there these days that doesn't have a doc-comment sort of mechanism that will be parsed by popular IDEs to make using the things you've written easier?[1] It's conceivable that "Rick" fell into the two-year backlog by spending most of his day trying to make sense out of the existing code-base. Maybe he wrote fast algorithms or had an incredible knowledge depth/scope in the given languages but that's intelligence masquerading as genius.
I also take issue with the idea that this guy went from Dr. Jekyll to Mr. Hyde. From reading this, it sounds like he was always a bit of Mr. Hyde -- he was just delivering when the software was simpler to manage on his own. Yes, there are those corner cases where you get a developer who's talent is such that his ability to work with others becomes less important -- those times exist only when there is a corner case that they fit within -- one where they can have a positive impact without creating a large crater in whatever it is they're in charge of. When I've interviewed candidates, though, those are not the people I have ever recommended. I can deal with a non-genius much easier than I can deal with someone who is untruthful[2] or incapable of getting along with others.
It sounds like the company could have had a more active mentoring program between senior and mid/junior level developers. Even recognizing that this individual was a senior developer, getting him involved mentoring those below his skill level could have surfaced some of these issues earlier. Yeah, I get that some developers do not have the personality types to mentor well[3]. But the only issue I take with them firing the individual versus attempting to address the problem after "cooler heads prevailed" is that they waited too long for either. And before I get accused of being a heartless animal, I speak from personal experience here.
I lost my job in January of this year. It felt like the worst thing imaginable for a little bit. It wasn't fun. But I am better off, now. I found new employment (and quickly -- one perk for "Rick" is that hiring is out of control right now) and I ended up at a place I would have never found, otherwise. I'm actually doing things that I've always wanted to do and while I loved my last job, I love this one, more. Yes, in my case, I wasn't "fired" -- my rather unique position was eliminated because the company changed directions -- but that's not provable in an interview so I was on the same footing as Rick ... mostly.
It's hard to not see it as personal, but at the same time, people, especially in our industry, are the biggest cost a company often has. Keeping a toxic employee too long can literally be the difference between the success and failure of the entire organization, resulting in the loss of everyone's job and financial devastation for the founders. It's not a company's obligation to detox toxic people, but one way that can happen is by being fired and discovering that your assessment of your abilities and contributions was woefully wrong leading to great personal change. I hope the best for "Rick" as I would for any human being suffering loss, but I'm hoping he's figured out, by now, what he's done that has contributed to his failure and is "relaunching" as a better version of himself. That said, by writing this post, they've made that a lot harder for "Rick".
And that's my final point -- I'm a bit disgusted with the post as a whole. While they to provide "Rick" anonymity, "Rick" and likely "Rick"'s friends and family will know he's been written about. At least in the short term, when "Rick" applies for a job and indicates that this organization was his past employer and that he was let go, they're going to hit up Google, find this post, and likely conclude that "Rick" is "The Rick", causing him to be avoided[4]. Perhaps I'm being overly dramatic, but I find the whole thing to be unprofessional enough that I have zero interest in discovering just what it is that this organization does because I'm not inspired to be a customer or a future employee.
Worse, it's conceivable that they'll have future lay-offs that fall into the category of "reorganization" or "Not The Employee's Fault(tm)" and now all of those individuals might be mistaken for being the "Rick" (if they're guys, anyway). And like many of you other fine folks have pointed out, the post makes it smell like this company has (potentially) serious management/team issues -- the fact that they're celebrating firing someone by calling it the "Best decision we ever made." They "purchased" something at about the cost of a nice 4-bedroom McMansion where I live, lived in it for a year or two, then just abandoned the property for two years and handed the land back to the city who charged them to bulldoze it (the latter being an analogy to the unemployment penalty they're now paying). That's the "best decision ever made"? What do all of those other decisions look like[5]?
Having to fire someone is a huge failure for a company -- It started when you "picked wrong" and hired this person over all of the other choices, you then wasted a large amount of your own/investors money, you've wasted you/your employees time and energy, you've added toxicity to the organization and you've hurt the trust of your existing employees who do not know the full picture. Letting that go on for over two years just amplifies how massive a failure your organization just suffered. Don't celebrate it. That's about as tasteful as dancing on a grave.
[0] This often starts with the "We need a Project Manager". When I hear those words, I can feel the productivity being sucked out of the room and with rare exception (really, at every place other than where I am currently employed), that's been the case.
[1] I'm nuts about this, personally. I write a lot of code and I'm sure there are many among us who fall into the "if I wrote it 6 months ago, it might as well have been written by someone else". I live or die by whatever I put into those doc-comments, so minimally they're present for everything that is part of the API -- if I've written a unit test for it, it's got a doc comment.
[2] "Untruthful" isn't a pleasant way of saying "liar" -- sure, someone who is knowingly dishonest, such as not taking ownership of a mistake that was made or a intentionally misrepresenting the truth is a non-starter, but untruth falls into the category of making promises you can't possibly keep. I'd much rather hear "I am uncertain/haven't researched X, Y, and Z, but assuming that those only present minor problems, I can have the project done by next Tuesday" over "It'll take a week" and having to hear about X, Y, and Z next Tuesday. Everyone slips and, of course, I've made that mistake, but there are those who you simply just assume will let the deadline slip despite what they say and that's grief I can't stand.
[3] And sadly, for much the same reasons as [2], those are developers I shy away from hiring. We work in a field that is a trade-craft and one of the most complicated trade crafts around. And while an ability to mentor as a Junior Developer isn't a requirement, as a Senior/Principal it's a core requirement, IMO.
[4] Some will say "Good, saved that company a lousy hire!" but that ignores two things: People who are bad at one place aren't necessarily bad everywhere -- the whole "not a good fit" thing is real, rather often. Sometimes you aren't at the right place. In addition, when people lose jobs, they often re-evaluate themselves and make life changes. "Rick" might not be "The Rick" anymore but he now can't escape his past as easily.
[5] Yeah, I know, I'm being a dick about a click-bait-y headline; I know they obviously don't mean that, but the flippant nature with how this was presented left a really bad taste in my mouth.