軟體質量的認識論:每晚有多少睡眠?你工作愉快嗎?這些是最影響軟體質量的問題。 - increment

banq發表於2019-11-26

研究表明,人為因素最影響我們的工作質量,可是為什麼我們會投入更多精力希望透過技術性解決方案解決軟體質量呢?
假設您經營一個新團隊。您可以一刀切地實施任何您想提高人員生產力和減少程式碼錯誤的策略。你會做什麼?
進行配對程式設計!切換到Haskell!使用UML進行所有操作!這些技術都有自己的書籍和會議。但是他們值得努力嗎?它們生效需要多長時間?他們甚至都能有效嗎?
這些技術解決方案中很少有能影響軟體質量的:
靜態型別?FSE 2014年提出的一項研究:沒有發現任何證據表明,靜態型別是有幫助的-或有害的。
編碼標準?在ICSM 2008上分享的另一篇論文發現,這些會使情況變得更糟。
程式碼審查?好的,根據Empirical Software Engineering發表的2016年一篇文章,實際上有效。但是我們不能僅僅依靠我們團隊的成功“更多程式碼審查。”

我堅信技術解決方案會有所幫助。但是,我們經常將將技術工具和流程的選擇作為決定團隊成敗的關鍵決策。業內知名人士可能聲稱:Lisp是“ 秘密武器 ”;Python使用者是“ 不道德 ”;必須使用TDD才能“ 專業。”

除了技術因素,我們還需要談論人為因素。

每晚有多少睡眠?您上次上一次工作超過40小時是什麼時候?你工作愉快嗎?這些是最影響軟體質量的問題。

程式設計是我們思維的延伸,任何損害我們思維的東西都會損害我們的程式設計技能。

睡眠
有兩種睡眠剝奪。我們經常將失眠視為急性睡眠剝奪(ASD):醒來24小時或更長時間。大多數人已經知道這很糟糕。根據IEEE Transactions on Software Engineering進行的2018年研究,新手程式設計師在經歷ASD時喪失了大部分技能,並且我們可以合理地假設高階開發人員(也就是其他人)也不能倖免。

根據2007年《神經精神疾病與治療》的文章,大多數傷害睡眠不足的人不知道自己的病情惡化,這是在傷害中增加了侮辱。一個開發人員不一定能說出他們犯了更多的程式設計錯誤,這使得自我調節變得更加困難。這意味著危險更加微妙,長期並且容易被忽略。

慢性睡眠剝奪(CSD)更微妙,連續幾個晚上睡眠不足。2007年的文章證明了CSD全面降低了心理表現。更糟糕的是,要完全逆轉CSD,可能要花幾個晚上恢復時間,每晚要睡超過八個小時  。

工作時間
根據勞動經濟學研究所2017年的一份報告,呼叫中心員工在大約四個小時後發現他們的服務質量直線下降。研究人員估計,在每週工作60個小時的兩個月後,生產率下降的速度甚至更快,

壓力
最後,考慮壓力。當您焦慮,生氣或分心時,很難集中精力。也有理由認為,當您承受壓力時,您沒有那麼有生產力或一絲不苟。疾病預防控制中心 的一部分,國家職業安全與健康研究所已經表明,壓力大的護士既生產力低下,又犯嚴重錯誤的可能性大大增加。

2014年發表在PeerJ上的一項研究發現,快樂的開發人員只要直截了當地解決問題即可。

總結
一方面,一些研究表明,諸如語言選擇和測試實踐之類的技術解決方案可能會對工程團隊的工作質量產生某些影響。另一方面,大量研究表明,睡眠,工作量和壓力會對效能產生巨大影響。那麼,為什麼部落格文章,會議演示和軟體工程書籍這麼多地談論前者而很少談論後者呢?

假設您經營一個新團隊。您可以全權以赴地實施任何想要使團隊效率更高,程式碼更少錯誤的策略。你是做什麼?您可以選擇一種新的程式語言,或者將所有內容切換到微服務,或者遵循最新的趨勢。或者您可以做重要的事情。您可以安排時間表。您可以確保沒有人每天工作超過8個小時。您可以讓人們提前20分鐘離開,以避免高峰時間。您可以讓父母儘可能輕鬆地在孩子生病時休假。您可以讓人們覺得他們很重要,因為人們很重要。沒有什麼方法,工具或語言比我們自己的想法重要。

相關文章