Soft-Question

為 Quant 採用敏捷軟體開發方法有什麼好處?

  • September 22, 2011

仔細閱讀其他 SE 網站,尤其是Programmers,我經常發現對各種敏捷軟體開發方法的大力支持,特別是被稱為極限程式的各種價值觀(我正在考慮單元測試、編碼標準等以及 SOLID 原則、變數命名一致性)。然而,我認識的定量研究人員中沒有一個像某些軟體開發人員那樣嚴格地採用這些方法和設計原則。事實上,其中許多概念在許多主要金融機構的 IT 部門之外幾乎是聞所未聞的。

學習這些原則並將其應用於我的工作是否值得我花時間,還是浪費時間? 我大部分時間都是自己做這件事,因為我的老闆和同事們幾乎不想改變我們現在做事的方式。無論如何,我的大部分程式碼都會被丟棄,而且我得出的定性結論通常比可重用性更重要。也就是說,我通常會測試一些假設,一旦得出結論,就不再需要該程式碼了。有時我必須重新編寫大量程式碼來自動重新計算我開發的專有指標,但在我幾乎完成研究之前,我通常不知道最終會在生產中產生什麼。此外,審查所有程式碼甚至可能是有價值的,因為現在我已經有了一個最終目標。

“極限程式”是一個流行語,在過去幾年裡受到了很多炒作。然而,重要的是要注意,它只是一長串軟體開發理念中的一項,而且它不是——與其支持者的主張相反——靈丹妙藥。

另一方面,在編寫小段程式碼時遵循一些簡單的規則是非常有益的。對於您已經提到的基本內容(堅持編碼標準和一致的命名約定),我會添加大量評論。

對於您的使用模型(“我的大部分程式碼都被丟棄了”和“我得出的結論比可重用性更重要”)我建議設置一個簡單的儲存庫和修訂控制。這聽起來可能有點矯枉過正,但從長遠來看,IMO 你會從中受益:

  1. 您的所有程式碼都在一個地方,並且很容易訪問。我的經驗告訴我,你遲早會想要至少看看過去編寫的一些程式碼——即使你認為不再需要它。
  2. 更改跟踪是微不足道的。查看/返回以前版本的需要經常出人意料地發生。手頭有一個源儲存庫是天賜之物。對於上面列出的目的,您不需要現代版本控制系統的所有花哨功能 - 只需一個中央儲存庫和線性歷史。我建議使用 Mercurial - 無需設置伺服器,它是跨平台且易於使用的。它還有一個不錯的 GUI,名為 TortoiseHg。為避免為單獨的程式碼片段使用單獨的儲存庫,您可以在一個大儲存庫中使用目錄。整個儲存庫和 Mercurial 二進製文件可以放在筆式驅動器上 - 如果您不想安裝任何東西,則無需安裝。

單元測試在正常軟體開發中非常有用和有益。除了增加額外負擔之外,我不確定它是否會對您的工作(研究)有所幫助。但是,當您注意到您正在將一些程式碼轉換為例如函式庫(或任何旨在可重用的東西)時,一定要開始考慮它。當然,將您的單元測試保存在您的儲存庫中。

對於你的工作類型,我也會堅持YAGNIKISS原則。(關於它們的維基百科文章足以很好地掌握它們)。

PS 對於 SW 開發的無 bs 視圖,我推薦 Frederick Brooks 的作品。

引用自:https://quant.stackexchange.com/questions/1966