恐懼會讓你成為一個更糟糕的程式設計師

2015-02-22    分類:程式設計師人生、首頁精華4人評論發表於2015-02-22

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

昨天上午,我在Twitter上提出了這麼個問題:

有沒有人寫過關於恐懼+程式設計方面的文章?(這種害怕做出重要改變的思想如何使你成為一個更差的程式設計師?)

以及

我覺得在小心翼翼(優++)和恐懼(讓你不敢去做一些必要工作)之間有一條重要的分界線。

然後各種有趣的討論接踵而至。

我發現,當我們害怕擔憂的時候,思想就會趨於保守,也不敢做任何改動,生怕有個萬一。但是這會導致軟體變得更糟!它實際上是另一種災難。如果你害怕做出任何改變,那麼你就不能改善軟體,也做不了大型的程式碼清理工作。也許你甚至都不能利用你已經寫好並經過測試的程式碼,因為你自己首先杯弓蛇影,害怕了!你會只想畏縮於此而不敢越雷池一步。

更好的工具&流程=>少一些恐懼

很多人都提到了工具和流程。

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
英文原文:Fear makes you a worse programmer
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章