恐懼會讓你成為一個更糟糕的程序員
英文原文:Fear makes you a worse programmer
昨天上午,我在 推ter 上提出了這么個問題:
有沒有人寫過關于恐懼+編程方面的文章?(這種害怕做出重要改變的思想如何使你成為一個更差的程序員?)
以及
我覺得在小心翼翼(優++)和恐懼(讓你不敢去做一些必要工作)之間有一條重要的分界線。
然后各種有趣的討論接踵而至。
我發現,當我們害怕擔憂的時候,思想就會趨于保守,也不敢做任何改動,生怕有個萬一。但是這會導致軟件變得更糟!它實際上是另一種災難。如果你害怕做出任何改變,那么你就不能改善軟件,也做不了大型的代碼清理工作。也許你甚至都不能利用你已經寫好并經過測試的代碼,因為你自己首先杯弓蛇影,害怕了!你會只想畏縮于此而不敢越雷池一步。
更好的工具&流程=>少一些恐懼
很多人都提到了工具和流程。
Kelsey:
我知道你談論的應該是傾向于心理方面的因素,但是我相信早期的代碼測試是非常重要的。
[……]強制監控、CI、canary 部署、chatops、dogfooding、selfserve info。
下面給出的一些工具和流程或許可以使得我們少一些憂慮:
版本控制意味著你可以無所畏懼地改動代碼而不必擔心回不到舊版本。這對于現在的我而言已經是必備工具了——我無法想像要是我在編程的時候沒有版本控制的話,得有多惶恐。
很多人還提到測試也能增加一個人的信心。我就曾經讀到過這樣一本有關于測試的書,非常的好《Working Effectively with Legacy Code》,書中每一章的標題都是關于使用遺留代碼的可怕和困難。(書中定義“遺留代碼”為“沒有測試過的代碼”,以便有一種韻味)。例如,“在沒有徹底了解代碼之前我沒法改動它。”“我怎么知道我沒有破壞了某些東西?”“我時間不多,但是不得不硬著頭皮改代碼。”
下面這條來自 Uncle Bob Martin,很好的闡述了這個概念。
即使有好的設計和 W / O 測試,你依然會害怕改變,然后這些代碼就會漸漸地生銹腐爛。只有經過良好的測試,你也不害怕,才能好好地整理這些代碼。
但是,測試和版本控制并不是我們唯一的工具!我們還可以建立
- 允許和鼓勵破壞的 QA 環境
- 一次只允許改動一點點的部署
- 輕松恢復原部署的能力
- 職責就是詳細測試軟件的 QA 團隊
- 如果程序出現異常能發你郵件的工具
以及更多。
害怕責怪(以及無責任的事后檢討)
但是,工具和流程絕對不是唯一的方法。即使我擁有著令人驚嘆的工具和 QA 系統、最好的部署工具以及經過完善測試的代碼,我依然會犯錯誤,而且犯的錯誤往往相當危險。
Etsy、Google 和 Stripe(我工作的地方)都有無責任的事后檢討機制。這意味著,如果你做出的改動最終破壞了某些東西,但是其他人在談論的時候只能關注你做的改變和事實現象,而不能責怪于你。(例如,“這個改動為什么會引發這個問題?”,而非“Julia 是怎么搞的,破壞了 xxx?”)
因為如果你只管一個勁地責怪別人破壞了某些東西,那會導致他們以后更加害怕做任何改動,然后最終只會給你一個糟糕的程序。
非理性憂慮
有的憂慮是非理性的,而且這還會傳染。假設,你做了部署之后,有什么地方出錯了,你找到了原因,并修復了問題,就不會有人責怪于你,那么是不是感覺以后面對部署也不怕不怕了?
但是遺憾的是,我們是人而非機器人,在做部署時,總是情不自禁地擔憂緊張,然后直到一段時間運行正常,才會放下心頭的大石。
關于這類的非理性憂慮還有很多,我就不一一贅述了。
寫給自己的話
今年是我生命中第一次親密接觸大型的軟件系統,有時候我真心特別憂慮和擔心!新的一年了,希望明年我能越干越順手,哦也=^_^=
譯文鏈接:http://www.codeceo.com/article/fear-makes-you-a-worse-programmer.html
翻譯作者:碼農網 – 小峰