實習生解雇
by Jonathan Solórzano-Hamilton
喬納森·索洛薩諾·漢密爾頓(JonathanSolórzano-Hamilton)
我們解雇了我們的頂尖人才。 我們做出的最佳決定。 (We fired our top talent. Best decision we ever made.)
“You will never be able to understand any of what I’ve created. I am Albert F***ing Einstein and you are all monkeys scrabbling in the dirt.”
“您將永遠無法理解任何 我創造的東西 我是 愛因斯坦(Albert F *** ing Einstein)和你們都是猴子在泥濘中掙扎。
And so our resident genius, our Dr. Jekyll, explosively completed his transformation into Mr. Hyde.
因此,我們的常駐天才杰基爾博士爆炸式地完成了他向海德先生的轉變。
He declared this in front of the product design team, developers, management, and pre-launch customers. One of our project sponsors had the temerity to ask when the problem crippling our product would be fixed.
他在產品設計團隊,開發人員,管理人員和預發布客戶面前宣布了這一點。 我們的一位項目發起人曾急切地問,何時會解決困擾我們產品的問題。
Genius is a fickle beast. Sometimes you have the good fortune to work with a mad genius. Other times you are doomed to work with pure madness. There are also times when it is hard to tell the difference.
天才是善變的野獸。 有時,您有幸與一個瘋狂的天才一起工作。 其他時候,你注定要瘋狂地工作。 在某些情況下,很難分辨出差異。
This story is about the fall from grace of an extremely gifted team member with a deep understanding of our product’s architecture. He had an uncanny ability to forecast future requirements, and a ton of domain-specific knowledge.
這個故事是關于一個對我們的產品架構有深刻理解的極其有才華的團隊成員的恩寵。 他具有預測未來需求的超乎尋常的能力,以及大量的特定領域知識。
He was our top contributor. He was killing our flagship project.
他是我們的杰出貢獻者。 他正在殺死我們的旗艦項目。
We’ll call this person “Rick.”
我們稱這個人為“里克”。
Rick was universally recognized on the team as the top talent. He was the lead developer and architect of our software projects.
里克被公認為車隊中的頂尖人才。 他是我們軟件項目的首席開發人員和架構師。
Any time anyone had a question about code or needed help with a task, they would go to Rick. Rick had a giant whiteboard installed in his office used only for this purpose. It was always cluttered with the ghosts of past discussions that wouldn’t quite erase.
每當有人對代碼有疑問或在任務上需要幫助時,他們都會去Rick。 里克在他的辦公室里安裝了一塊巨大的白板,僅用于此目的。 它總是被過去討論的鬼魂弄得混亂不堪。
Any time there was a particularly challenging problem, Rick would handle it. Rick had a server with the same specs as our production server installed at his desk. He used this to run the entire application stack independently and troubleshoot every layer at once.
任何時候只要遇到特別具有挑戰性的問題,Rick都會解決。 Rick的服務器與安裝在辦公桌上的生產服務器具有相同的規格。 他使用它來獨立運行整個應用程序堆棧,并立即對每個層進行故障排除。
Rick didn’t need anybody else. Rick preferred to work alone in his private work-space.
里克不需要其他人了。 里克更喜歡在自己的私人工作空間中獨自工作。
Rick didn’t need anything anybody else built. He built everything he needed from scratch because it was infinitely better than the paltry offerings of mere mortals.
瑞克不需要任何其他人建造的東西。 他從頭開始構建了他需要的所有東西,因為它比純粹的凡人提供的東西要好得多。
Soon, Rick stopped attending meetings. Rick didn’t have time for meetings any more because there was too much to code.
不久,里克停止參加會議。 瑞克再也沒有時間開會,因為要編寫的代碼太多了。
Rick closed his door. His whiteboard lay fallow. Rick no longer had time to train anyone because he had too much to solve on his own.
里克關上了門。 他的白板休憩。 里克不再有時間訓練任何人,因為他自己想解決的事情太多了。
A backlog grew behind Rick. Bugs were popping up in old tools he’d built. They sapped his attention from meeting commitments on new product development.
里克(Rick)的背后積壓。 他構建的舊工具中出現了錯誤。 他們使他的注意力沒有兌現對新產品開發的承諾。
Of course, these bugs were happening because the users had misstated their assumptions. Of course there wasn’t any problem in his work. Of course.
當然,這些錯誤的發生是因為用戶錯誤地假設了他們。 當然,他的工作沒有任何問題。 當然。
On our project dashboard, green flags changed to yellow. Yellow changed to red. Red lights started blinking. One by one, task statuses changed to “Impeded.” Everyone was waiting for Rick.
在我們的項目儀表板上,綠色標志變為黃色。 黃色變為紅色。 紅燈開始閃爍。 任務狀態一一更改為“已提示”。 每個人都在等待里克。
The project manager got a six-month extension from the sponsor. At the end of the six months, production-readiness was estimated to be seven months away. At the end of a year, production-readiness was two years out.
項目經理從贊助商那里得到了六個月的延期。 在六個月結束時,估計已經可以生產七個月了。 到年底,生產就緒時間已經過去了兩年。
Rick was churning out code faster than ever. He was working seven-day weeks, twelve hours a day.
瑞克比以往更快地編寫代碼。 他每周工作7天,每天工作12個小時。
Everyone knew only Rick could pull the team out of this mess. Everyone held their breath and waited for Rick to invent the miracle cure that would mend this crippled project.
每個人都知道,只有瑞克可以使團隊擺脫困境。 每個人屏住呼吸,等待里克發明創造奇跡的療法,以彌補這個殘缺的項目。
Every day, Rick grew more belligerent and isolated. The mask was coming off. Jekyll was becoming Hyde.
每天,里克變得更加好戰和孤立。 面具掉了。 Jekyll即將成為海德。
I participated in my first meeting with the project team about two years after the original agreed release date. I’d been aware of the project for a while, because it had grown infamous in my organization, but hadn’t been assigned to it.
在最初約定的發布日期之后約兩年,我參加了與項目團隊的第一次會議。 我已經知道這個項目一段時間了,因為它在我的組織中聲名狼藉,但尚未分配給它。
I was sent in to see if we could save it.
我被送去看看我們是否可以保存它。
My first meeting on the project was the aforementioned “Albert Einstein” meeting.
我關于該項目的第一次會議是上述的“愛因斯坦”會議。
Hmm.
嗯
I dove into the source code. Rick was right: no-one could possibly understand what Rick had created. Except for Rick. It was a reflection of the workings of his own mind. Some of it was very clever, a lot of it was copy-pasta, it was all very idiosyncratic, and it was not at all documented.
我深入到源代碼。 里克是對的:沒有人可能理解里克創造的東西。 除了里克。 這反映了他自己的想法。 其中有些非常聰明,很多都是復制粘貼的 ,它們都非常特殊,并且完全沒有記錄在案 。
I went to our CIO with the verdict. Only Rick would ever be able to maintain this product. Plus, every day that Rick worked on the project moved the delivery date back a week. Rick was destroying our product faster than he was creating it.
我帶著裁決去了我們的首席信息官。 只有Rick才能維護此產品。 另外,Rick在該項目上工作的每一天都將交貨日期推遲了一周。 Rick銷毀我們的產品的速度比其制造產品的速度快。
We sat down with Rick and had a conversation about his role in the project. We reviewed our concerns. We sidestepped his self-comparison to Albert Einstein.
我們與里克(Rick)坐下來,就他在該項目中的角色進行了交談。 我們審查了我們的擔憂。 我們回避了他與愛因斯坦的自我比較。
We explained our new strategy. The team was going to collaborate on building a new product from scratch.
我們解釋了我們的新策略。 團隊將合作從頭開始構建新產品。
This effort would be very limited in scope and would only provide the bare essentials to get us to production. The whole team would contribute and be able to support it. No more bottlenecks.
這項工作的范圍非常有限,只會提供使我們投入生產的基本要素。 整個團隊將做出貢獻并能夠提供支持。 沒有更多的瓶頸。
How did Rick react to this?
里克對此有何React?
The only way Rick could. Rick exploded.
里克唯一的辦法。 里克爆炸了。
Rick wanted no part of this farce. If we couldn’t appreciate his genius, that was our fault, not his. Rick predicted that within months we’d come crawling back to him begging him to save us.
里克不想要這場鬧劇。 如果我們不能欣賞他的天才,那是我們的錯,而不是他的錯。 里克預言,幾個月后,我們會爬回他身邊,懇求他拯救我們。
Rick screamed that we lacked the basic mental capacity to appreciate genius when it was staring us in the face.
里克尖叫說,當我們盯著我們的臉時,我們缺乏欣賞天才的基本心理能力。
Sadly, after this, Rick rejected months of overtures by leadership. He refused to take time off or allow any work to be delegated. He rejected repeated attempts to introduce free open source frameworks to replace his hard-to-maintain bespoke tools.
可悲的是,此后,里克拒絕了領導層幾個月的提議。 他拒絕請假或允許委派任何工作。 他拒絕反復嘗試引入免費的開放源代碼框架來替換他難以維護的定制工具。
He reverted code changes — including tested bug fixes — by other developers. He asserted that he wouldn’t be held accountable for supporting other people’s work. He continued publicly belittling his colleagues.
他還原了其他開發人員的代碼更改(包括經過測試的錯誤修復)。 他斷言自己不會為支持他人的工作負責。 他繼續公開貶低他的同事。
We fired Rick.
我們解雇了瑞克。
It took about a week for the dust to settle. It took time for the shocked team to gather themselves after losing their embattled guru.
塵埃落定大約花了一個星期。 震驚的團隊在失去他們四面楚歌的大師后花了很多時間才能康復。
Then I saw them huddled around a whiteboard.
然后我看到他們擠在白板上。
They collaborated. They designed a replacement product. It would be much simpler.
他們合作了。 他們設計了替代產品。 這樣會更簡單。
It wouldn’t have all the bells and whistles. Nor would it anticipate requirements from five years down the product road map.
它沒有所有的花招。 從產品路線圖的五年來看,它也不會期望有任何需求。
Rick’s product supported a dynamic workflow with over fifteen thousand permutations. In reality 99% of our use cases followed one of three paths. The team hard-coded the workflow. This removed over 30% of Rick’s work.
Rick的產品支持具有一萬五千多種排列的動態工作流程。 實際上,我們99%的用例遵循以下三種路徑之一。 團隊對工作流程進行了硬編碼。 這刪除了Rick超過30%的工作。
It wouldn’t have custom hand-coded components for every task. They stripped out every bespoke dependency that they could buy instead of build.
它不會為每個任務都提供自定義的手工編碼組件。 他們剔除了可以購買而不是購買的所有定制依賴。
This removed hundreds of hours of Rick’s contribution. But it also removed thousands of hours of technical debt.
這消除了瑞克數百小時的貢獻。 但這也消除了數千小時的技術債務 。
We obtained an agreement from the project sponsor to shut off some edge-case functionality.
我們從項目發起人那里獲得了一項協議,以關閉某些極端情況下的功能。
This had served only 5% of our pre-launch user group and was responsible for about a quarter of the product’s complexity.
這僅服務于我們發布前的用戶組的5%,約占產品復雜性的四分之一。
We re-released the product to this group. It consisted of 10% of Rick’s original code which was pretty stable. It also had a few thousand lines of new code to replace about 150,000 lines of incomprehensible mess.
我們將產品重新發布給該組。 它由Rick原始代碼的10%組成,相當穩定。 它還有幾千行新代碼來替換約15萬行難以理解的混亂。
The team had replaced five years of work in about six months. Over the next few months we expanded from pilot to full customer release.
該團隊在大約六個月的時間里替換了五年的工作。 在接下來的幾個月中,我們從試用版擴展到了完整的客戶版本。
Not only had we replaced what Rick had built, we sped past him and fully launched the product — all in under a year. The result was less than a fifth the size and complexity of what Rick had built.
我們不僅更換了里克(Rick)所制造的東西,還超越了他,并在不到一年的時間內就全面推出了該產品。 結果不到Rick制造的產品的大小和復雜性的五分之一。
It was also hundreds of times faster and nearly bug-free despite having been assembled in a fraction of the time and serving ten times as many customers.
盡管組裝時間只有一小部分,并且服務的客戶數量是原來的十倍,但它的速度也快了數百倍,而且幾乎沒有錯誤。
The team went back to Rick’s other products. They threw away his old code there, too.
團隊回到了Rick的其他產品。 他們也把他的舊密碼丟掉了。
They re-released another product of his after three years in development, with three months of concerted team effort.
經過三個月的團隊合作,他們經過三年的開發,重新發布了他的另一款產品。
There were no Ricks left on the team. We didn’t have any mad geniuses building everything from scratch. But our productivity was never higher.
團隊中沒有剩下Ricks。 我們沒有任何瘋狂的天才從頭開始構建所有東西。 但是我們的生產力從未如此高。
Rick was a very talented developer. Rick could solve complex business logic problems and create sophisticated architectures to support his lofty designs. Rick could not solve the problem of how to work effectively on a team.
里克是一個非常有才華的開發人員。 Rick可以解決復雜的業務邏輯問題并創建復雜的體系結構以支持他的崇高設計。 里克無法解決如何在團隊中有效工作的問題。
Rick’s presence was destructive in several ways.
里克(Rick)的到來在幾個方面都具有破壞性。
First, he created a cult of dependence. Any problem eventually became a Rick problem, a myth he encouraged. Developers learned to stop trying and just wait for Rick.
首先,他創建了一種依賴性崇拜。 任何問題最終都變成了里克問題,這是他鼓勵的神話。 開發人員學會了停止嘗試,只等Rick。
Second, he didn’t write maintainable code. He never documented or tested anything, and so failed in spite of his own intelligence. His belief in his personal infallibility trumped common sense.
其次,他沒有編寫可維護的代碼。 他從未記錄或測試任何東西,因此盡管他有自己的智慧,但還是失敗了。 他對個人無誤的信念勝過常識。
Third, he was personally destructive. Team members didn’t want to speak up and offer their own ideas because he always berated them for it. Rick only respected Rick and went out of his way to make everyone else feel small.
第三,他個人具有破壞性。 團隊成員不想大聲說出自己的想法,因為他總是為此而指責他們。 里克只尊敬里克,并竭盡全力讓其他人感到渺小。
Fourth, he lacked all personal accountability. No failure was his fault. He sincerely believed this, and it prevented him from learning from his own mistakes.
第四,他缺乏個人責任感。 沒有失敗是他的錯。 他真誠地相信這一點,這使他無法從自己的錯誤中吸取教訓。
I don’t believe Rick started out this way. I saw him at his worst. This was after years of working escalating overtime and facing increasing criticism from customers and colleagues.
我不相信里克是這樣開始的。 我看到他處于最糟糕的狀態。 這是經過多年加班工作以及面對客戶和同事越來越多的批評之后的結果。
It’s sad that Rick descended this far. His manager shares in this responsibility. In fact, the original management team was held accountable: they were let go first.
可悲的是里克走了這么遠。 他的經理分擔這項責任。 實際上,最初的管理團隊要承擔責任:他們首先被放開了。
Unfortunately Rick was so far gone that he couldn’t, or wouldn’t, be brought back. No amount of coaching, feedback, time off, or assignment to other projects changed his toxic behavior.
不幸的是,里克已經走了很遠,以至于他無法,也不會被帶回來。 沒有多少教練,反饋,休假或分配給其他項目改變了他的有毒行為。
By this point the whole team knew he was destructive. But the cult of dependence was so strong that everyone believed he was the only option.
至此,整個團隊都知道他具有破壞性。 但是依賴的崇拜是如此強烈,以至于每個人都認為他是唯一的選擇。
There is always another option.
總有另一種選擇。
Your team’s strength is not a function of the talent of individual members. It’s a function of their collaboration, tenacity, and mutual respect.
您團隊的實力與單個成員的才能無關。 這是他們的協作,堅韌和相互尊重的功能。
Focus on building teams that value each other and try to bring the best out of one another.
專注于建立彼此珍視的團隊,并努力將彼此之間的優勢融合在一起。
Together, they’ll be able to tackle greater challenges than Rick could ever fathom.
在一起,他們將能夠解決比Rick難以想象的更大的挑戰。
The events described in this essay took place many years ago and do not reflect the opinions or experience of my current employer.
本文中描述的事件發生在很多年前,并不反映我當前雇主的觀點或經驗。
I have published a follow-up story with our lessons learned if you are interested in reading more! You may also be interested in reading about my first job at a startup, which happened to be imploding around me.
如果您有興趣內容,我已經發布了后續故事以及我們的經驗教訓 ! 您可能也有興趣閱讀有關我在一家初創公司的第一份工作,而這恰好在我周圍崩潰 。
You can follow me here or on Twitter @jhsolor for more updates.
您可以在這里或在Twitter @jhsolor上關注我以獲取更多更新。
Note: Some details (such as names) have been changed. I’ve never actually worked with anyone named Rick.
注意:某些詳細信息(例如名稱)已更改。 我從未真正與任何叫里克的人一起工作。
Jonathan leads enterprise software development and architecture teams.
Jonathan領導企業軟件開發和體系結構團隊。
He earned a Physics degree from Stanford University and has since spent over 10 years working in information systems architecture, data-driven business process improvement, and organizational leadership.
他獲得了斯坦福大學的物理學學位,并且在信息系統體系結構,數據驅動的業務流程改進和組織領導方面工作了10多年。
翻譯自: https://www.freecodecamp.org/news/we-fired-our-top-talent-best-decision-we-ever-made-4c0a99728fde/
實習生解雇