題:
如何處理似乎不知道自己的技能已經過時的高級開發人員?
Arseni Mourzenko
2016-10-14 01:47:54 UTC
view on stackexchange narkive permalink

我是一家小型軟件開發公司(二十名員工)的IT生產力顧問。問題是一個由五個開發人員組成的團隊的高級開發人員,他們負責公司的領先產品。

幾年來,公司創始人對員工的技術水平感到不滿,他最近聘用了擔任技術主管和項目經理的雙重角色的高級開發人員。他是唯一接受面試的人,也是唯一決定僱用此人的人。

這位高級開發人員的簡歷令人印象深刻,列出了25年的IT職業生涯,並有許多成功的項目

但是,該團隊在兩個月內對他的形象越來越不滿意。我有機會與該團隊的五名成員中的三名進行了交談,他們都強調了三個問題:

  • 根據他們的說法,這個傢伙是一個混蛋,並且不尊重團隊的其他成員。最近有一次他引用團隊中的初級程序員的話非常有說服力:“我在這個行業工作了25年,您呢?你做了什麼?您已經成為代碼猴子三年了。閉嘴,你,白痴!

    一個人應該注意,我與這個人開過幾次會議,他看上去非常友善和禮貌。如果我沒有三名隊員的證詞,我不會相信這是不斷侮辱隊友的人。

  • 過去,所有團隊成員都做出了決定。當成員不同意時,他們將一起討論所有問題並達成協議,或者至少向那些不同意的人解釋其原因。

    現在,所有重要的決定都專門由首席開發人員。即使所有五個團隊成員都認為一項決定沒有道理,也不能質疑或討論這些決定。

  • 高級開發人員的技能和實踐似乎有點...過時了。一些示例:

    1. 他討厭IDE,自動完成和旨在幫助程序員更快地編寫代碼的功能,並聲稱該團隊應該使用Notepad ++來提高工作效率。儘管這在不同情況下是有意義的,但很難想像C#開發人員會突然放棄Visual Studio for Notepad ++。

    2. 他不重構代碼,也不在乎樣式(這與他自己的代碼不一致),原因是“他只關心真正重要的事情”。附帶說明一下,以前曾經通過每晚構建檢查樣式,自從新的潛在客戶到達以來,樣式便開始失效。

    3. 他拒絕了每晚構建的想法,因為以及自動化測試。根據他的說法,“任何專業開發人員無論如何都要手工測試他的代碼,因此沒有理由浪費時間編寫自動化測試”。據他介紹,每晚構建也浪費時間。

    4. 他認為版本控制主要是無用的,並且似乎誤解瞭如何使用版本控制。這導致了他獨自開發功能三到五天的情況,當他最終做出自己的更改時,他確實為所有衝突“著迷”。如果其他團隊成員抱怨他們的代碼被刪除了,他邀請他們重寫它。在某些情況下,其他成員也這樣做,從而刪除了主要開發人員的代碼。他看起來很驚訝(似乎他不知道如何使用 svn log 或diffs),然後再次進行了更改,抱怨“它們神秘地丟失了”,並指責SVN搞砸了。 / p>

    5. 他誇大了代碼優化的重要性。他的方法是正確的,即他運行了探查器,確定了瓶頸並加以修復;問題在於,對性能沒有非功能性要求,也沒有元素表明用戶可能認為該應用程序運行緩慢(並且託管在低級開發VM上,該應用程序感覺非常靈敏)。另一方面,他幾乎花了一半的時間來優化代碼。

    6. 他手工編寫所有SQL,並拒絕了ORM的想法。應該注意的是,當前產品基於Microsoft的ORM實體框架,五個開發人員中有兩個以前從未使用過SQL。

    7. 他拒絕考慮框架和第三方庫從頭開始寫東西要容易得多。他決定放棄除jQuery之外的所有JavaScript庫和框架,聲稱在15年前開始使用JavaScript進行編程時,沒有框架,而且生活變得容易得多。

    8. 他認為移動設備(包括平板電腦)只是一種炒作,因此沒有理由浪費寶貴的時間來確保站點與這些設備的兼容性並進行響應式設計。該產品是公共Web應用程序,預計不會在移動設備上大量使用。但是,響應式設計對於此應用程序可能非常有趣,因為即使在台式機上,它也將同時顯示在19英寸顯示器和大型高分辨率顯示器上。

    9. 他要求團隊停止使用Internet(尤其是StackOverflow),並依靠他們的大腦,脫機文檔(我什至不知道Microsoft仍在銷售MSDN CD!)和書籍。

    10. ol>

團隊成員向公司創始人抱怨他們在這三個問題上的新領導。創始人回應說,他們反應過度,並且基於簡歷和麵試,他對新領導的技能有絕對的信任,這就是為什麼他首先將此人指定為首席開發人員的原因

團隊應該怎麼做:

  • 要么將領導帶出團隊或公司,要么

  • 還是強迫他改變對團隊的態度?


評論中提出了很多問題,因此這裡有一些其他信息。

  • 他之上的公司結構是什麼?誰是他的上級?

    鑑於公司規模很小,公司的結構相當平坦。最頂層是公司的創始人。然後是直接向創始人匯報的員工。從法律上講,新領導與其餘五名團隊成員處於同一級別。例如,他無權解僱團隊成員,甚至無權將其轉移到其他團隊。

  • 您在項目符號中說的一些話對他不利是他的重點。我的意思是,至少其中一半他是正確的。

    確實,這是我嘗試介紹主題的方法。我個人認為這九點中的一些是有道理的,但在當前團隊的背景下卻沒有。例如,我的主要開發環境是 vi ,但是我不會強迫C#開發人員使用 vi 而不是Visual Studio,也不會使用 vi 我自己是在為Windows開發C#應用程序時。

  • 我真的不明白為什麼這個人在您的小公司上浪費時間。他可能會在其他地方工作而賺更多的錢,因為“那個仍然知道如何維護我們25歲的,沒有證件的,對業務至關重要的遺留系統的人,用一種編程語言編寫的,該語言在整個宇宙中只有3個人仍然可以理解。 “

    確實,這對我也不是很清楚。我應該提到他知道COBOL嗎?...

  • 我不認為這是一個實際的問題。在我看來,這是旨在發帖的帖子。您基本上將所有可能的不良習慣組合在一起,並詢問該怎麼做。

    我作為IT生產力顧問的角色意味著,當公司在開發人員團隊中遇到困難時,我會被召喚。超過一半的案例是關於缺乏經驗並且經常灰心的程序員,他們被迫處理無聊的軟件產品的糟糕代碼。然而,另一部分則涉及沖突,強大的政治,相互的誤解和普遍的混亂局面。因此,我確實比普通開發人員更經常面對TheDailyWTF風格的情況,因為在WTF發生的地方這實際上是我的工作。

    這已經發生過。我發布了一個描述WTF情況的問題,有人認為(我的評論從那時起被刪除)我正在拖釣。我想我在這裡遇到的許多情況在這裡都會被認為是相同的,這是可以理解的。順便說一句,我在這裡描述的情況遠非我所見過的最糟糕的情況。

    不幸的是,我無法證明這些情況是真實的。例如,出於明顯的原因,在當前情況下,我既不能提供公司名稱,也不能提供開發商名稱的名字。即使我可以,這裡也沒有人認識該公司或開發商(除非你們中有些人在法國在維持傳統系統的金融部門中。)

  • 聽起來有些奇怪,即新領導導致了問題,而人們卻沒有發現問題在他(例如你)之下工作。創始人對當前團隊感到不滿是否正確?如果不是,為什麼呢?

    請注意,我不是團隊成員,而只是一名顧問。

    我認為創始人對目前的團隊感到不滿是絕對正確的。這四個開發人員總體而言,尤其是C#編程經驗很少。第五位是經驗更豐富的人,他是最初堅持使用版本控制,每晚進行構建的人,等等。儘管如此,團隊的總體水平還不如需要很好地構建他們正在構建的產品的團隊。現在。

    決定聘請技術主管是一個絕妙的主意。但是,如果是一個人來教導當前的團隊而不是責怪他們,而是與當前的成員一起工作,而不是反對他們,那麼事情會好得多。

  • 為什麼有人反對使用Internet獲得有關軟件問題的幫助?

    我不知道正式原因,但我想是首席開發人員總是這樣做,並認為StackOverflow的質量不如MSDN官方文檔。

  • 有沒有發生過這個傢伙的目的是為了團隊退出?

    有趣的想法。讓團隊成員辭職將為一家可能無力解僱小公司的小公司帶來巨大的經濟利益。這些程序員離開後,公司可能會僱用更多經驗豐富的開發人員,並將開發人員轉移到另一個團隊。

  • 所以我不知道您的團隊成員有多長時間向您的老闆抱怨了首席開發人員。但是,您是否與他們進行了圓桌討論?

    確實,有一些個人投訴,但沒有圓桌討論。好建議。

評論不作進一步討論;此對話已[移至聊天](http://chat.stackexchange.com/rooms/46800/discussion-on-question-by-mainma-how-to-handle-a-senior-developer-diva-who-似乎)。如果您想拖曳OP,那是不可接受的。如果要回答,請使用“答案”框。如果您想談談我刪除評論的所有其他主題,例如政治或最喜歡的網站或開發工具,請轉到提供的聊天鏈接。
我忍不住注意到您的個人資料包括您自己的照片。如果老闆偶然發現它,將不會感到高興。例如,當同事給他小費時。
提醒:這個問題是根據發帖人的解釋情況,如果有朋友的解釋。這可能是兩層誤解。我們可以書面形式對此做出回應,但確實存在這樣的風險,即特定的答案與實際發生的情況不太匹配。注意事項。
“這四個開發人員總體而言,尤其是C#編程經驗很少。”那麼,誰僱用了他們,為什麼?
OP:您能否澄清誰僱用您來評估這個團隊?在這種情況下是僱用您的創始人嗎?如果是這樣,這實際上可能是一個好兆頭,表明他認識到自己在選擇新的首席開發人員時可能犯了一個錯誤,這將對IMO的正確答案產生重大影響。
您知道公司將來是否打算/期望被收購?諸如版本控制之類的項目可能會對VC或買方產生影響。首席執行官掌握“業務”嗎?
大多數答案都集中在技術論點或群體動力上。但是,我想指出一個重要的細節:這是一家法國公司在_France_的情況。AFAIK法國勞工法規使解僱員工非常困難。設置的重點可能只是使開發團隊退出而不必解僱他們嗎?
投票結束主題,因為目前尚不清楚您的立場和選擇。“應該丟掉領先嗎?”YESOFCOURSE,如果這是一個選擇,那麼為什麼您甚至不願意發布它。如果這不是一個選擇,請向我們說明您想做什麼和可以做什麼。
然而,至少有10個人發現了可以回答的問題,將近200個人認為這是一個好問題。我想知道是否應該有一個關閉原因,說“即使有200個人理解了,但我和其他4個人卻不明白,所以關閉它。”
聽起來您似乎正在努力做到公平,甚至在提出此人的缺陷時也是如此……如果這是向公司創始人提出的方式,那麼您將永遠看不到任何結果。您列出的他所遇到的問題是不平凡的,*需要*予以解決。
RE:“您在子彈中所說的對他的觀點實際上是對他的觀點。我的意思是,至少其中一半他是正確的” –嗯,哪些?除了代碼優化程序外,我認為其中的每一個都非常糟糕。
說“同事”就像您在部門工作一樣具有誤導性。您應該說自己是一名生產力顧問,因此需要進行修復,是的,這是實際情況。最終,您沒有做出任何決定,只是建議。您尚未告訴我們在選項之間進行選擇的標準。(您是否被授權與該人交談並告訴他為什麼人們對他不滿意?請他去找心理學家?還是什麼?)無論如何,我都試圖對其進行編輯以解決這些問題。但是最終您沒有告訴我們在這種情況下您的**功能是什麼,所以這不是一個真正的問題。
當您說*“使團隊成員退出時,對於可能無力解僱小公司的小公司來說,將會是一筆巨大的財務利益。一旦這些程序員離開,公司可能會僱用更有經驗的開發人員並將開發人員轉移到另一個團隊。“ *聽起來像是在拖釣還是輕浮。我們仍然不清楚您在這方面的作用是什麼。如果sr devpr的功能是消滅該團隊並讓初級人員自願退出,那麼老闆對“您的參與”的期望是什麼?
新的團隊領導者雖然肯定是有毒的,但卻是一條紅鯡魚。真正的問題是所有者,他不知道如何管理人員,需要聘請某人(在外部幫助下)執行這些功能(請參見下面的答案,以了解我的推理)。
九 答案:
Chris E
2016-10-14 01:56:39 UTC
view on stackexchange narkive permalink

創始人回應說,他們反應過度,並且基於簡歷和麵試,他對新領導的技能有絕對的信任,這就是為什麼他將這個角色分配給這個人首先是首席開發人員。

負責人講話。這不是政府或政黨。您不能將任何人趕出去或進行暴動。

如果您不願意對此進行應對,那麼您確實有一個選擇。您可以團結起來,揚言要戒,除非有事發生。

我是說可以,不應該。有一個非常好的機會,那就是不能順利結束。您基本上是想將自己置於做出決定的老闆之前,而負責人不希望他們受到挑戰。

我想告訴您的“正確”事情是找到技巧鼓勵他看到你的思維方式。但是我不會那樣做。我是一名30年的高級開發人員,我可以告訴您,我在很大程度上已經適應了基本原則。不,我不喜歡這個人,是的,我接受建議。我擁護新技術等等。這個傢伙在很多事情上顯然是錯誤的。但是,我可以告訴您的是,當我著手進行某件事時,我確信自己會做出正確的決定,我會堅持下去。我不善於面對威脅,而且威逼或操縱甚至更糟。不在他職業生涯的現階段。他堅信自己是對的,並且他認為自己的經歷為他提供了支持。不幸的是,老闆也是。

老實說,這可能不值得您和您的團隊承受壓力。 我建議你們每個人都開始尋找一份新工作,找到工作後就離開。當一個人離開時,請確保他們告訴老闆原因。最終,他可能會得到這張照片。即使這樣,也不能保證。

運行嚴重的是,我不知道為什麼有人想要在那裡。問問自己,您告訴我們的內容中有什麼不代表產品最終會滅亡嗎?我確定你知道這一點。我對此事質疑創始人的基本知識。開發人員通常使非常糟糕的項目/程序經理。這是一套獨立的技能,他們需要相互平衡。這就像在說:“我們不需要單獨的測試人員,開發人員的測試效果很好。”兩者都是災難的秘訣。祝好運。我是說。

評論不作進一步討論;此對話已[移至聊天](http://chat.stackexchange.com/rooms/46881/discussion-on-answer-by-christopher-estep-how-to-handle-a-senior-developer-diva)。
儘管沒有辦法判斷這個人甚至有能力,但如此無條件地信任新員工的創始人是不值得爭論的。我同意,跑在第一個方便的機會。開發人員可以找到更好的工作。
@Magisch我已經看到確切的場景在我的職業生涯中出現了很多次。簡歷令人印象深刻(或擅長推銷自己)的人被錄用,而不是“金童”。在每一種情況下,GB都失去了光澤,最終也失敗了。不幸的是,通常是在他淘汰了他的球隊之後(這就是他第一次開始表現自己的無能時掩蓋自己的方式)。
您在IT行業看起來年輕了30年。
@tuskiomi那張照片已經有兩歲了,但是我總是很年輕。我被卡進了30多歲。我的第一份IT工作(當時稱為DP)是1986年,現在已經30歲了。似乎不太可能,但我的第一個項目是在新PC的Limited(Dell)386-16服務器上安裝Advanced Netware 2.0a,該服務器具有2Mb RAM和2個全高70Mb驅動器,位於瘦以太網主幹網上。:)
@ChristopherEstep有趣地認為,今天下載僅需要幾秒鐘(如果有的話),就足以填滿整個硬盤。
我意識到OP的初始版本缺少一個重要細節:她不是僱員,而是(大概)解決此問題的顧問。告訴她逃避問題並沒有真正的幫助,這使她“接受”答案顯得更加奇怪!當然,不要批評您的答案,它總是一如既往的出色,只是指出我發現的奇怪之處。
Tony Ennis
2016-10-15 21:04:29 UTC
view on stackexchange narkive permalink

OP對情況的描述可能是單方面的。沒關係。

我是一家老齡開發人員(大約54歲),被帶到一家公司來統治而不是提供經驗。 (IT老闆實際上說的是“灰白的頭髮”,大聲笑。)總的來說,開發人員比我以前合作過的任何團隊都要熟練得多。他們教給我很多東西,尤其是謙卑!但是,我們發現了他們的技術巫術無法解決問題的地方,在某些情況下掩蓋了這些問題,最終使問題變得更糟。這是我真正能夠做出貢獻的地方。

您的領導聽起來很專制。聽起來好像老闆已經委託他了。所有者對開發人員不滿意,因此請了這個“精打細算的傢伙”來提高交付速度。

首先,請看一下您的員工。您是否有弱項-開發人員沒有“看到Matrix”?如果是這樣,請為他們找到公司中的新職位,或者為需要他們獨特技能的雇主提供很好的參考。

他討厭IDEs

I知道一些這樣做。它使我翻白眼,但最終我不在乎。如果人們使用 vi 進行製作,那就可以了。我愛我的IDE。第一部分上的紅旗。他是抄襲者嗎?我也對不關心樣式感到內gui,但這是因為我使用IDE立即使我的Python代碼PEP8兼容。但是他沒有使用IDE ...

作為一個註釋,以前曾通過每晚構建檢查樣式,此樣式自新線索到達以來就開始失敗。

他拒絕進行夜間構建以及自動測試的想法。根據他的說法,“任何專業開發人員無論如何都要手工測試他的代碼,因此沒有理由浪費時間編寫自動化測試”。據他介紹,每晚的建築也浪費時間。

這也會引發一個危險信號,但是出於與您預期不同的原因。在此人被雇用之前,所有者被告知多少次因為夜間構建失敗而無法執行X(提供演示,使用系統等)?如果業主認為每晚建造是問題怎麼辦?您認為他會告訴牽頭人做什麼?

但是我對牽頭人的態度感到擔憂。自動化測試非常了不起。像以前一樣,老闆可能不了解測試的價值,但他當然知道開發人員的薪水的Y%在為測試付款。當我來到我現在的公司時,“ 100%測試覆蓋率黑手黨”已經接管了開發人員,並且運營成本不斷上升。後來一個壞蘋果和開發人員再次怒吼。

他認為版本控制幾乎是無用的……

最高順序。他是盡可能的錯誤。他對所有者的錢不負責任。

他誇大了代碼優化的重要性。

在過去,代碼優化可能會有所作為。現在,機器是如此之快,以至於它變得不那麼重要了。相反,我們現在需要擔心數據庫性能和網絡吞吐量。但是,相信我,他的“代碼優化”習慣很難改變。我必須讓自己不要預先優化。至少在這種情況下,除了所花費的時間外,他的行為沒有破壞性。 (您是否為他的“一半時間”提供了數字,或者這是誇張嗎?如果您在批評主管,則不允許誇張。您必須在病理上是客觀的。)

手工執行SQL,並拒絕ORM的想法。

有罪不罰!我不理解人們對SQL的恐懼。我不理解在混淆的ORM層下埋入SQL的方法,這種方法非常簡單。在這裡不能為您提供幫助:-D但是,請把所有SQL都轉儲到一個地方-不要在您的代碼中全部分發。

和五個開發人員中的兩個以前從未使用過SQL。

這是不可接受的。這是2016年。他們需要提高技能。

他拒絕使用框架和第三方庫,因為從頭開始編寫東西要容易得多。

這不是很清楚。原因是15年前的生活要輕鬆得多,因為業務要求要簡單得多。這就是問題所在。網絡是作為批處理系統發明的(填寫表單,提交表單,獲得回复,重複),現在我們試圖編寫行為類似於桌面應用程序的網絡應用程序。他的觀察是正確的,現在情況很難。但是他不知道為什麼。工具的複雜性是對更複雜的業務需求的回應。因此,他做出了錯誤的選擇。

我們正在使用AngularJS,它似乎還不錯。像所有強大的工具一樣,它可以用於善惡。

他認為移動設備(包括平板電腦)只是一種炒作,因此沒有理由浪費寶貴的時間來確保站點與那些設備的兼容性並進行響應式設計。該產品是公共Web應用程序,預計不會在移動設備上大量使用。

他又錯了。他們不是炒作。它們在這裡停留是因為它們很有用。但是企業不需要它。不要開發不需要的東西。這很昂貴。

響應式設計對於這個應用來說可能會很有趣,...

您是否付得起這麼有趣?為個人發展?如果這是一個好主意,則您應該應該能夠將該主意賣給所有者。否則,請不要花一角錢。仍然出售MSDN CD!)和書籍。

他錯了。互聯網對此非常有用。如果開發人員從Stackoverflow複製粘貼而不了解代碼的工作原理,那麼他們也是錯誤的。在開發進度表中是否有時間進行培訓和個人改進?當您總是在槍口下時,很難不自動複製粘貼。


雖然我的信息有限,但是這裡有很多問題。聽起來好像所有者沒有像他期望的那樣迅速得到他所支付的代碼。聽起來他聽說過很多他不在乎的事情的藉口。他專注於結果。如果我是正確的話,那麼您有一個自我傷害的傷口,並且已經重新打開了不止一次。該負責人是所有者對開發人員提出的問題的解決方案,並且由於他的信息有限,這是可以理解的。

我還會打賭,您經營的是非敏捷商店,要求定義不佳,會隨風而變化。開發人員和所有者之間沒有隔離層。除了該線索。

現在,您能做什麼?

1)訓練線索以使自動化測試和代碼管理成為可能。在他身上贏得信譽可能需要一些時間-店主可能已經告訴他員工有缺陷。看看您是否可以阻止他做出繁重的任務,例如“刪除所有無用的測試廢話並重新使用SVN服務器”。

2)繼續在個人級別上使用代碼管理。至少您可以從自己的錯誤中恢復過來。

3)不要告訴他您正在執行此操作。

3)在個人層面上繼續進行自動化測試(如果沒有其他要求,請進行單元測試)。像以前一樣,不要提起它,儘管不要將其隱藏。

4)與負責人一起確定實際的實際問題是什麼。開放的心態我敢打賭員工真的有問題。與負責人一起解決問題,而不是解決問題。

5)與負責人討論各種開發主題,例如瀑布和敏捷的好處。兩者都不是完美的。向他問諸如“在什麼情況下自動測試值得”這樣的問題?如果他給出了一個令人懷疑的答案,請問他,儘管如此,像Google這樣的成功公司如何成功地發展起來。建立信任。同意問題與症狀。這並不總是那麼容易,尤其是當您覺得他像哥斯拉並把您的作品拆散時。

他有機會不能妥協。他將粉碎自動化測試。代碼管理適用於粗心的人。我的路還是高速公路。

但是,如果到了這一點,就該離開了。在沒有工具的商店中工作,我的意思是軟件和軟件工程工具-不會建立您的簡歷。您將開始以腐爛線索的方式開始腐爛。在這種情況下,繼續前進。

至於代碼優化,我大致同意(儘管肯定有例外)。算法優化,這是另一回事。我通常不在乎是使用32位還是64位整數變量來保存一些數量。如果我認為有32位不夠用的風險,我將使用64位並且不再考慮。但是,如果在大型數據集上使用O(n ^ 3)或O(n ^ 4)算法,則可能無法在O(n ^ 2)甚至O(n登錄n)。您對O(n ^ 4)的實現所做的任何事情都不能使您成為O(n log n)。
如果沒有ORM,則可能要花費數小時才能編寫代碼來重新構建諸如訂單->發貨->項目之類的層次結構。使用ORM,這需要幾分鐘。只需拉訂單,預取發貨和物品。
@MichaelKjörling,但這通常不是您使用Profiler和“修復”慢代碼進行的優化。如果編寫算法,則應了解性能並以適當的方式實現它。探查器可幫助您找到其他人的代碼(其他開發人員,尤其是第三方庫)中的緩慢部分和錯誤。通常,這些問題在出現時應予以解決。僅找到“慢速代碼”並在沒有任何性能目標的情況下對其進行修復是昂貴的,並且如果例如您的服務器CPU始終有70%的時間處於空閒狀態。
@Josef我同意!花時間修復不是問題的東西通常是浪費時間。但是我不同意您不會使用探查器來識別此類問題。探查器的目的是識別在某些特定工作流程中執行所需時間過長的代碼段。之後的下一步是確定執行時間是否長,是否存在問題,以及原因和解決方法。探查器提供原始執行時間數據作為該過程的輸入,但是如果算法很嚴格,那麼進行小幅調整就沒有意義了。
我總是喜歡通過巧妙地使用SQL緩解問題。SQL是獲得所需內容的超級簡單方法,imo不會簡化ORM框架工作。
我不同意您對原始SQL的看法。我同意,每個認真的開發人員在使用ORM時都應該了解SQL並了解SQL,但是認真地講,如果使用ORM可以解決特定問題並且不是問題,那麼不應該使用原始SQL來解決。不是因為ORM更花哨,絕對不是。對於與您一起工作的經驗不足的人來說,它更安全,更容易接管您的代碼。您可能會認為這是錯誤的,但這是事實,我知道高級開發人員不記得如何使用group by。我們可能喜歡或不喜歡,但我們一起努力。
在構造複雜查詢時,ORM(我將SQLAlchemy用於Python)也很棒。想像一下,您編寫了一個搜索發票的函數,它具有兩個選項和參數(日期範圍,對特定客戶的限制,包括已歸檔的發票?)。使用裸露的SQL字符串,現在可以為WHERE子句串聯字符串。使用ORM,您正在將ClauseElement實例添加到Query對象。
-1
您唯一想念的是“閉嘴,白痴”。我的意思是您指出了足以消除他的危險信號,但這是另一種警告。你不會對我說兩次。當我在附近並聽到它時,您不會對任何人說兩次。
我選擇@gnasher729來相信這是誇張的。但是,如果不是這樣,那扇門在出門時不會撞到我的屁股。
Peter
2016-10-15 22:39:25 UTC
view on stackexchange narkive permalink

25年的IT生涯改變了他的態度

對不起,我不能工作。

您真正的問題不是沒有能力的首席開發人員。與您描述的實際問題相比,該問題微不足道:

您的創始人對無能*的陌生人的信任程度超過了對現有僱員的信任程度。

您需要弄清楚團隊如何失去信任,以及如何贏得信任。如果在僱用陌生人之前做到這一點會更容易。現在這很難了,因為任何好的工作都會歸功於新的團隊領導,而任何糟糕的工作都會歸功於你們所有人-因此您無法通過更加努力地解決它。

有我只有兩件事可以想到,以改善此工作的情況:

  1. 找到一名調解人。是否有多個創始人或類似董事會成員的人?
  2. 也許信任問題是可見性問題。在這種情況下,任何有助於提高知名度的東西都會對您有所幫助。例如。使sprint演示足夠令人興奮和有趣,以至於創始人實際上可以參加並了解團隊的狀況和進度。
  3. ol>

    *儘管OP提出的大多數觀點不一定陌生人無能為力,他在5人團隊中進行版本控制和持續集成的方法肯定可以。

OP在任何地方都不會說“敏捷”或“衝刺”。我懷疑這個地方充其量只是臨時方法。
@TonyEnnis這就是為什麼我使用“例如”的原因。無論您使用哪種方法,都希望可以看到與sprint演示相當的東西。
知道了在老闆面前取得一些切實的成果是一個好主意。
MonkeyZeus
2016-10-14 18:14:52 UTC
view on stackexchange narkive permalink

這個答案可能是不利的,有些人認為這很愚蠢,但是...


第一個危險信號是幾年來,創始人對該技術的技術水平感到不滿。員工

員工是否試圖糾正這種不滿?


第二個危險信號是五個開發人員中從未使用過SQL的代碼>

如果開發人員不熟悉核心技術並且真正了解ORM掩蓋了什麼,那麼很難創建一個有效的系統。


很難想像我在這個行業工作了25年,您呢?你做了什麼?您已經成為代碼猴子三年了。閉嘴,你,白痴!沒人在乎您的意見,一個******。實際上是說出來的,但是我會以其面值來相信您。

但是,請考慮一下我提到的第一個危險信號

為此,我補充:你們已經知道創始人多年的不快樂了!!

這是怎麼回事?信息洩露給了你?


我傾向於認為這個人正在精確地做他被雇用要做的事;鍛煉身體。

鍛煉身體並不是指採用新手的壞習慣,而是要讓您脫離舒適區來進行更深入的學習。

可能的是,如果OP問題中的其他要點不存在。缺少一小部分-源代碼-這就是如果他沒有充分乾預的話,真正使團隊負責人與遭受嚴重災難的人區分開來。或這是一個很棒的巨魔問題,但是什麼才是真實的,是嗎?
您突出顯示的標誌是尚未解決的重要問題,但是有關該開發人員領導的其他一切都與“讓您成型”的想法完全矛盾,除非創始人同樣陷入了25年前的技術中。
通過放棄測試,樣式,文檔,版本控制,尊重和溝通來“成型”……是的,雖然不是您在這裡開的最好玩笑。
@eques取決於動機的深度。創始人親自面試並僱用了這個人,而沒有其他投入。在不了解閉門造車的討論的情況下,**沒有人**可以提供的不僅僅是猜測。
@DanielJour組建團隊並不是指採用不良做法。請查看我的更新。對困惑感到抱歉。
目前,這只是對問題的評論,而實際上並未回答所要提出的問題,這是如何改善情況並處理“ diva的”不良做法。
@MonkeyZeus感謝您清理此問題。雖然可能,但我以某種方式懷疑這是僱用那個人的動機。新來的人很可能使生產力為零。儘管如前所述,您需要考慮的其他兩點(不幸,沒有SQL經驗)很重要。
-1
@MonkeyZeus我並不是說您的答案是不利的,我不是說您的答案**不回答這個問題。**我推斷您是在告訴OP吸納它並按照經理的話做,但是最後一行說:“不要採用新手的壞習慣。”OP如何做這兩者?
如果缺乏/不令人滿意的技術可以聘請具有特定技能的人來組建團隊,但是考慮到其他方面(如果準確描述),除非a)創始人具有類似的技術思維方式或b)創始人完全不了解技術技能和開發技術。鑑於OP沒有指定創始人是否是技術創始人,因此創始人很可能不認識新員工的技術局限性(不是唯一的問題)
我可以相信,管理層的“本意”是聘請一位高級領導者來使表現不佳的團隊成型,他們當然很糟糕。
我為主人感到難過。他完全失去了對球隊的信任,為了挽回局面,他在“獨裁者”位置上尋找了一顆星星……並得到了一個壞= /。我認為,答案的底線應該明確寫成:“什麼都做不了,為時已晚。”不信任員工的老闆不得不依靠簡歷,這令人印象深刻,並且必須信任他。在他看來,變得不穩定的團隊實際上可能是一個積極的反應-糟糕的團隊感到不舒服,所以也許他們會改變。現在,他們將離開,再過幾年,房主會發現將軍是壞人。
如果公司正在某個真人秀編碼新手訓練營舉行,那麼這個答案就很有意義。
Old_Lamplighter
2016-10-14 19:07:44 UTC
view on stackexchange narkive permalink

幾年來,創始人對員工的技術技能感到不滿,最近他聘請了一位高級開發人員擔任技術主管和項目經理的雙重角色。他是唯一接受面試的人,也是唯一決定聘請此人的人。

聽起來像創始人不信任你。

不過,在兩個月的時間裡,車隊對他的形像變得不那麼欣賞了。我有機會與該團隊的五名成員中的三名進行了交談,他們都強調了三個問題:

  • 根據他們的說法,這傢伙是個混蛋,對其他成員不尊重團隊。最近有一次他引用團隊中的初級程序員的話非常有說服力:“我在這個行業工作了25年,您呢?你做了什麼?您已經成為代碼猴子三年了。閉嘴,你,白痴!

聽起來好像你只是在講故事的一個方面。我可以想像一些情況,我可能需要自己殺死一個年輕人,而我已經知道了。只是在這裡扮演惡魔的擁護者,但聽起來他很受激。挑釁是什麼?

  • 過去,所有團隊成員都做出決定。當成員不同意時,他們將一起討論所有問題並達成協議,或者至少向不同意的人解釋原因。

顯然,過去的做法並沒有產生創始人想要的結果。

現在,所有重要的決定都由首席開發人員專門做出。即使所有五個團隊成員都認為一項決定沒有道理,也不能質疑或討論這些決定。

再次,聽起來像是創始人的不信任投票。他引進這種人是有原因的。聽起來像是因為要鞭策其餘人員。

  1. 他討厭IDE,自動完成功能以及旨在幫助程序員更快地編寫代碼的功能,並聲稱團隊應該使用Notepad ++來提高生產力。雖然這在不同情況下是有意義的,但很難想像C#開發人員會突然放棄Visual Studio for Notepad ++。
  2. ol>

如果您是一名快速的程序員,IDE可能會減慢您的速度。 Notepadd ++在快速編碼方面優於某些。想法是先編寫代碼,然後將其放到IDE中進行快速校正,而不是不斷中斷。

  1. 他不重構代碼,並且不關心樣式(在他自己的代碼中不一致),原因是“他只關心真正重要的事情”。附帶說明,以前曾通過每晚構建檢查樣式,此樣式自新線索到達後就開始失效。
  2. ol>

商店標準是與創始人討論的事情,尤其是因為您要在夜間構建中運行它。但是,再次閱讀,似乎是創始人不信任您。

  1. 他拒絕了夜間構建以及自動構建的想法測試。根據他的說法,“任何專業開發人員無論如何都要手工測試他的代碼,因此沒有理由浪費時間編寫自動化測試”。據他說,夜間構建還浪費時間。
  2. ol>

他是正確的自動化測試,並不能說明一些傻瓜乾的事是天才。我個人已經破壞了幾個通過自動化測試的程序。

  1. 他認為版本控制主要是無用的,並且似乎誤解瞭如何使用版本控制。這導致了他獨自開發功能三到五天的情況,並且當他最終做出更改時,他確實為所有衝突“埋下了伏筆”。如果其他團隊成員抱怨他們的代碼被刪除了,他邀請他們重寫它。在某些情況下,其他成員也這樣做,從而刪除了主要開發人員的代碼。他看起來很驚訝(似乎他不知道如何使用svn log或diffs),然後再次進行了更改,抱怨“它們神秘地丟失了”,並指責SVN搞砸了。
  2. ol>

這裡的每個人都錯。沒人備份嗎?如果他在版本控制方面遇到麻煩,那麼團隊的責任就是團隊合作,而不僅僅是給他一個艱難的時期。

  1. 他高估了代碼優化的重要性。他的方法是正確的,即他運行了探查器,確定了瓶頸並加以修復;問題在於,沒有非功能性的性能要求,也沒有元素表明用戶可能認為該應用程序運行緩慢(並且託管在低級開發VM上,該應用程序感覺非常靈敏)。另一方面,他幾乎花了一半的時間來優化代碼。
  2. ol>

沒有辦法誇大代碼優化的重要性。代碼優化的目的不是要確保其今天正確運行,而是要對其進行優化,以便您不會在三年後就解決某些可以通過代碼優化避免的問題。

如果您只關心用戶今天的快樂,那麼明天您將讓他們敲門。

  1. 他手工編寫了所有SQL,並拒絕了ORM的想法。應該注意的是,當前產品基於Microsoft的ORM實體框架,五個開發人員中的兩個以前從未使用過SQL。
  2. ol>

五個開發人員中的兩個應該被解僱,然後。如果您依賴ORM,那麼您將永遠無法掌握並手動修復問題。我開始明白為什麼他沮喪地稱呼某人為“代碼猴子”。 ORM很好,但如果要超出ORM的限制,則需要了解SQL。

  1. 他拒絕框架,第三個黨庫,因為從頭開始寫東西要容易得多。他決定放棄除jQuery之外的所有JavaScript庫和框架,聲稱在15年前開始使用JavaScript進行編程時,沒有框架,而且生活變得容易得多。
  2. ol>

他是對的。框架和第三方庫都有局限性,如果您不了解並自行進行修復,則說明您也不了解代碼。爭論可以是任何一種方式。但是,如果團隊中沒有人可以不使用框架進行編碼,那麼您的團隊將非常虛弱。

  1. 他認為移動設備(包括平板電腦)只是大肆宣傳,因此沒有理由浪費寶貴的時間來確保站點與這些設備的兼容性並進行響應式設計。該產品是公共Web應用程序,預計不會在移動設備上大量使用。但是,響應式設計對於此應用程序可能非常有趣,因為即使在台式機上,它也將同時顯示在19英寸顯示器和大型高分辨率顯示器上。
  2. ol>

根據您所說的一切,聽起來他已經被帶到了乾淨的房子裡。如果移動設備不是該應用程序的主要參與者,那麼花費太多時間就是浪費。雖然在桌面上可能是“很不錯”,但不一定要推出。

  1. 他請團隊要求停止使用Internet(尤其是StackOverflow)並依靠他們的大腦,脫機文檔(我什至不知道Microsoft仍在銷售MSDN CD!)和書籍。
  2. ol>

團隊成員向公司創始人抱怨了他們在這三個問題上的新領導。回應說他們反應過度,並且基於他的簡歷和麵試,他對新領導的技能有絕對的信任,這就是為什麼他首先將此人指定為首席開發人員的角色。

團隊應該怎麼做:

  • 要么將領導帶出團隊或公司,要么

  • 還是強迫他改變對團隊的態度?

與他一起一起工作而不破壞他的一舉一動如何??

坦白地說,鑑於您發布的內容,他已經被帶到干淨的房子裡了,聽起來似乎不合理。

所有者對您的表現不滿意。您應該以這個人的建議為代價。我們的文物有一些經驗,我們知道這些書永遠不會教您。但是,您的團隊並沒有將其視為學習和成長的機會,而是擁有巨大的嘶嘶聲。

評論不作進一步討論;此對話已[轉移為聊天](http://chat.stackexchange.com/rooms/46877/discussion-on-answer-by-richard-u-how-to-handle-a-senior-developer-diva-誰)。
Riley
2016-10-14 15:49:19 UTC
view on stackexchange narkive permalink

因此,我不知道您的團隊成員向您的老闆投訴領導開發人員的時間有多長。但是,您與他們進行了圓桌討論嗎?向上司介紹領導開發人員遇到的問題,並讓他站在故事的一邊。

戒菸應該是最後的選擇。

似乎這裡的其他所有人都假設“院長講話”,但這可能不是實際情況。根據我的閱讀,員工和新經理僅與老闆進行了單獨的交談,而並非同時進行。可能值得一試。
您可以擴展和解釋更多嗎?這是對克里斯答案的有效反對意見,但是目前沒有足夠的細節可以使它成為一個好的答案。
+1因為讓女主角告訴他這邊。抱怨是如此公然,看起來不真實。可以肯定的是,這是一次經典的自我衝突,並且至少有一位開發者是有毒的人
如果您對自己的工作不滿意,並且對解決這個問題不感興趣,為什麼要留下來?有很多更好的工作。
BobRodes
2016-10-16 00:21:54 UTC
view on stackexchange narkive permalink

我在這裡還沒有看到的“皺紋”。對於那些有豐富經驗的人,他們對不及時了解最新進展持防禦態度是很常見的。我曾經和人們談論VB6與奇妙的.Net有多麼可怕的方式相同,那時那些人只是在重複他們已經聽說過的關於VB6的事情,而對此卻並不太了解。

正如您所說,領導者所說的很多事情都是正確的。但這並不意味著它們都是您所說的。也許25年的先生可以開闊自己的胸懷,並以最佳狀態綜合自己的方法,但如果他害怕自己不夠完美,又否認自己害怕,那是不可能的。就我而言,這是這裡的實際問題。初級人員可能還有其他問題(例如,缺乏專業知識),但這似乎是其中的根本問題。

如果每個人聚在一起並以坦誠的態度解決恐懼,那麼他們應該開始朝著更加積極的方向前進。我不能說聽起來像是很有可能,但這是需要做的。

bob
2019-04-30 00:48:11 UTC
view on stackexchange narkive permalink

所有者需要聘請人事經理

其他答案暗示了這一點,但是房間裡的大象卻是,所有者(可以理解)似乎很難成功地完成諸如僱用之類的人事職能例如,培訓,解僱等。所有者配備了一個表現欠佳的團隊,忍受了好幾年,然後聘請了25年的資深人士來解決問題,然後在25年的資深人士無法解決問題時僱用了顧問。所有者似乎並不知道如何管理企業的人事方面。沒關係,有些人以此為生,這就是為什麼大多數組織都設有人事經理的原因。所有者需要租用一份數據。 這將使所有者騰出精力專注於業務的戰略方面,因此這是雙贏。

也許OP可以幫助進行面試(畢竟,所有者似乎在這方面需要幫助)?

alexk
2016-10-14 17:44:45 UTC
view on stackexchange narkive permalink
  1. 整個團隊是否都與該開發人員交談過,並試圖解釋諸如版本控制和IDE之類的好處?坦率的討論可能會有所幫助

  2. 我同意侮辱其他開發人員是不專業的,對此應該向他作出有力的解釋。詢問他是否為其他人採用相同的語氣感到高興

  3. 問他是否在國內承受任何壓力或是否患有糖尿病等健康問題導致他易怒

  4. 請問他是否樂於變得古老,並且脾氣暴躁,並且精神萎縮,因為他不了解新知識。

  5. 如果所有其他方法都失敗,則將記錄他的所有錯誤以保存您的皮膚,並記錄與他的對話

  6. ol>
25年後,沒有人會改變對版本控制和IDE的看法。我不會改變我的看法。對於我,我的同事和我一直工作的公司來說,我很幸運,我全都用於版本控制(甚至是我自己完成的工作;以前節省了我的錢),以及使用IDE(為什麼?地球上不會有人使用IDE)。但是,再次討論,不會改變他的想法。
“問他是否樂於變老,並且因為脾氣暴躁而脾氣暴躁,而他又不懂新知識,所以向他求婚。”某事告訴我,這不會做得很好。
+1以解釋其好處。-2侮辱他,不管他*多麼粗魯。
我認為此答案的主要問題在於,這意味著團隊領導與團隊其他成員處於同等權威水平,並非如此。儘管團隊負責人不能解僱任何人,但所有者可以由團隊負責人負責,而且所有者當然可以解僱人員,因此不難想像,即使對團隊成員而言,對團隊負責人的粗魯態度也可能會失敗這可能很誘人。
與上級交往時,明智的做法總是明智的。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...