我是一家小型軟件開發公司(二十名員工)的IT生產力顧問。問題是一個由五個開發人員組成的團隊的高級開發人員,他們負責公司的領先產品。
幾年來,公司創始人對員工的技術水平感到不滿,他最近聘用了擔任技術主管和項目經理的雙重角色的高級開發人員。他是唯一接受面試的人,也是唯一決定僱用此人的人。
這位高級開發人員的簡歷令人印象深刻,列出了25年的IT職業生涯,並有許多成功的項目
但是,該團隊在兩個月內對他的形象越來越不滿意。我有機會與該團隊的五名成員中的三名進行了交談,他們都強調了三個問題:
-
根據他們的說法,這個傢伙是一個混蛋,並且不尊重團隊的其他成員。最近有一次他引用團隊中的初級程序員的話非常有說服力:“我在這個行業工作了25年,您呢?你做了什麼?您已經成為代碼猴子三年了。閉嘴,你,白痴!
一個人應該注意,我與這個人開過幾次會議,他看上去非常友善和禮貌。如果我沒有三名隊員的證詞,我不會相信這是不斷侮辱隊友的人。
-
過去,所有團隊成員都做出了決定。當成員不同意時,他們將一起討論所有問題並達成協議,或者至少向那些不同意的人解釋其原因。
現在,所有重要的決定都專門由首席開發人員。即使所有五個團隊成員都認為一項決定沒有道理,也不能質疑或討論這些決定。
-
高級開發人員的技能和實踐似乎有點...過時了。一些示例:
-
他討厭IDE,自動完成和旨在幫助程序員更快地編寫代碼的功能,並聲稱該團隊應該使用Notepad ++來提高工作效率。儘管這在不同情況下是有意義的,但很難想像C#開發人員會突然放棄Visual Studio for Notepad ++。
-
他不重構代碼,也不在乎樣式(這與他自己的代碼不一致),原因是“他只關心真正重要的事情”。附帶說明一下,以前曾經通過每晚構建檢查樣式,自從新的潛在客戶到達以來,樣式便開始失效。
-
他拒絕了每晚構建的想法,因為以及自動化測試。根據他的說法,“任何專業開發人員無論如何都要手工測試他的代碼,因此沒有理由浪費時間編寫自動化測試”。據他介紹,每晚構建也浪費時間。
-
他認為版本控制主要是無用的,並且似乎誤解瞭如何使用版本控制。這導致了他獨自開發功能三到五天的情況,當他最終做出自己的更改時,他確實為所有衝突“著迷”。如果其他團隊成員抱怨他們的代碼被刪除了,他邀請他們重寫它。在某些情況下,其他成員也這樣做,從而刪除了主要開發人員的代碼。他看起來很驚訝(似乎他不知道如何使用
svn log
或diffs),然後再次進行了更改,抱怨“它們神秘地丟失了”,並指責SVN搞砸了。 / p> -
他誇大了代碼優化的重要性。他的方法是正確的,即他運行了探查器,確定了瓶頸並加以修復;問題在於,對性能沒有非功能性要求,也沒有元素表明用戶可能認為該應用程序運行緩慢(並且託管在低級開發VM上,該應用程序感覺非常靈敏)。另一方面,他幾乎花了一半的時間來優化代碼。
-
他手工編寫所有SQL,並拒絕了ORM的想法。應該注意的是,當前產品基於Microsoft的ORM實體框架,五個開發人員中有兩個以前從未使用過SQL。
-
他拒絕考慮框架和第三方庫從頭開始寫東西要容易得多。他決定放棄除jQuery之外的所有JavaScript庫和框架,聲稱在15年前開始使用JavaScript進行編程時,沒有框架,而且生活變得容易得多。
-
他認為移動設備(包括平板電腦)只是一種炒作,因此沒有理由浪費寶貴的時間來確保站點與這些設備的兼容性並進行響應式設計。該產品是公共Web應用程序,預計不會在移動設備上大量使用。但是,響應式設計對於此應用程序可能非常有趣,因為即使在台式機上,它也將同時顯示在19英寸顯示器和大型高分辨率顯示器上。
-
他要求團隊停止使用Internet(尤其是StackOverflow),並依靠他們的大腦,脫機文檔(我什至不知道Microsoft仍在銷售MSDN CD!)和書籍。
ol>
-
團隊成員向公司創始人抱怨他們在這三個問題上的新領導。創始人回應說,他們反應過度,並且基於簡歷和麵試,他對新領導的技能有絕對的信任,這就是為什麼他首先將此人指定為首席開發人員的原因
團隊應該怎麼做:
-
要么將領導帶出團隊或公司,要么
-
還是強迫他改變對團隊的態度?
評論中提出了很多問題,因此這裡有一些其他信息。
-
他之上的公司結構是什麼?誰是他的上級?
鑑於公司規模很小,公司的結構相當平坦。最頂層是公司的創始人。然後是直接向創始人匯報的員工。從法律上講,新領導與其餘五名團隊成員處於同一級別。例如,他無權解僱團隊成員,甚至無權將其轉移到其他團隊。
-
您在項目符號中說的一些話對他不利是他的重點。我的意思是,至少其中一半他是正確的。
確實,這是我嘗試介紹主題的方法。我個人認為這九點中的一些是有道理的,但在當前團隊的背景下卻沒有。例如,我的主要開發環境是
vi
,但是我不會強迫C#開發人員使用vi
而不是Visual Studio,也不會使用vi
我自己是在為Windows開發C#應用程序時。 -
我真的不明白為什麼這個人在您的小公司上浪費時間。他可能會在其他地方工作而賺更多的錢,因為“那個仍然知道如何維護我們25歲的,沒有證件的,對業務至關重要的遺留系統的人,用一種編程語言編寫的,該語言在整個宇宙中只有3個人仍然可以理解。 “
確實,這對我也不是很清楚。我應該提到他知道COBOL嗎?...
-
我不認為這是一個實際的問題。在我看來,這是旨在發帖的帖子。您基本上將所有可能的不良習慣組合在一起,並詢問該怎麼做。
我作為IT生產力顧問的角色意味著,當公司在開發人員團隊中遇到困難時,我會被召喚。超過一半的案例是關於缺乏經驗並且經常灰心的程序員,他們被迫處理無聊的軟件產品的糟糕代碼。然而,另一部分則涉及沖突,強大的政治,相互的誤解和普遍的混亂局面。因此,我確實比普通開發人員更經常面對TheDailyWTF風格的情況,因為在WTF發生的地方這實際上是我的工作。
這已經發生過。我發布了一個描述WTF情況的問題,有人認為(我的評論從那時起被刪除)我正在拖釣。我想我在這裡遇到的許多情況在這裡都會被認為是相同的,這是可以理解的。順便說一句,我在這裡描述的情況遠非我所見過的最糟糕的情況。
不幸的是,我無法證明這些情況是真實的。例如,出於明顯的原因,在當前情況下,我既不能提供公司名稱,也不能提供開發商名稱的名字。即使我可以,這裡也沒有人認識該公司或開發商(除非你們中有些人在法國在維持傳統系統的金融部門中。)
-
聽起來有些奇怪,即新領導導致了問題,而人們卻沒有發現問題在他(例如你)之下工作。創始人對當前團隊感到不滿是否正確?如果不是,為什麼呢?
請注意,我不是團隊成員,而只是一名顧問。
我認為創始人對目前的團隊感到不滿是絕對正確的。這四個開發人員總體而言,尤其是C#編程經驗很少。第五位是經驗更豐富的人,他是最初堅持使用版本控制,每晚進行構建的人,等等。儘管如此,團隊的總體水平還不如需要很好地構建他們正在構建的產品的團隊。現在。
決定聘請技術主管是一個絕妙的主意。但是,如果是一個人來教導當前的團隊而不是責怪他們,而是與當前的成員一起工作,而不是反對他們,那麼事情會好得多。
-
為什麼有人反對使用Internet獲得有關軟件問題的幫助?
我不知道正式原因,但我想是首席開發人員總是這樣做,並認為StackOverflow的質量不如MSDN官方文檔。
-
有沒有發生過這個傢伙的目的是為了團隊退出?
有趣的想法。讓團隊成員辭職將為一家可能無力解僱小公司的小公司帶來巨大的經濟利益。這些程序員離開後,公司可能會僱用更多經驗豐富的開發人員,並將開發人員轉移到另一個團隊。
-
所以我不知道您的團隊成員有多長時間向您的老闆抱怨了首席開發人員。但是,您是否與他們進行了圓桌討論?
確實,有一些個人投訴,但沒有圓桌討論。好建議。