軟體設計專家的八種習慣 | 麻省理工學院出版社
最好的設計師在工作時會採用特定的習慣、可學習的實踐以及遵守的原則。
是什麼成就軟體設計專家?傳統回答是經驗和天生的能力,這無法讓人滿意,儘管它包含了真理的要素,但它所提供的東西很少,我們無法從中學習和概括。顯然,專家們不僅會隨機處理他們的工作。恰恰相反,他們在設計工作中有特定的習慣,學到的實踐和所遵循的原則。
有些人可能熟悉它們,而另一些人則不熟悉。有些很容易付諸實踐,有些則沒有。有些會立即產生影響,有些則不會。但是,經常出現的情況是,專業的軟體設計人員會敏銳地意識到所有這些做法,並在情況需要時加以借鑑。
多年研究專業軟體設計師及其工作方式的根基,我們的《軟體設計解碼》一書闡明瞭其中的66個習慣,實踐和原則,下面重點介紹其中的一些。他們被該領域的工作人員一次又一次地確認,並且每個都可以追溯到記載專家行為的學術文獻。
如今,軟體不再受限於技術,而是受限於想象力。然而,將想象變為現實的軟體可能會很複雜,而這種轉變必須發生的環境可能會更加複雜。這對軟體設計師提出了非凡的要求,只有我們共同“加緊努力”以實現持續的卓越設計才能滿足這些要求。
1)專家涉及使用者:
專家敏銳地意識到使用者。他們故意讓使用者參與設計過程,進行研究,與他們交談,讓他們參與測試中間設計,甚至要求他們在設計團隊中發揮積極作用。
然而,專家並不能完全接受使用者所說的一切。他們意識到潛在的侷限性,因為使用者的思維通常會被當前的經驗所充斥。專家們不僅關注使用者的需求,還關注使用者的實際需求。
2)專家設計優雅的抽象:
當所有開發人員都建立抽象時,專家將對其進行設計。好的抽象可以說明什麼是重要的,無論是做什麼的以及如何實現的。通過一個抽象,它傳達瞭解決的問題及其解決方案的機制。
專家對任何抽象都不滿意,他們故意尋求優雅的抽象,通過它們可以有效地引入,理解和引用複雜的結構。
3)專家專注於本質:
每個設計問題都有一個本質,一組核心注意事項,必須成功理解這些問題,並在設計解決方案中“釘上釘子”,才能成功解決問題。這種本質可能是破壞性的:核心的變化會極大地改變需要做出的外圍決策。專家首先將精力集中在本質上,然後將花費的精力推遲到外圍設計上。
4)專家不斷模擬:
專家們模擬所設想的軟體的各個方面,以及設計的不同部分如何支援各種場景。與他人合作時,專家會逐步講解設計的操作,從而定期進行設計。獨自一人時,他們會在心理上進行模擬,並隨著時間的推移反覆進行設計。
5)專家環顧四周:
就像建築師走動城市考察並從現有建築物中汲取靈感一樣,軟體專家也會檢查其他軟體的設計,以“看看他們是如何做到的。”他們經常這樣做是為了應對自己面臨的特定挑戰,但是他們經常還花時間環顧四周,以增加他們將來可能使用的設計解決方案的種類。
6)專家重塑了問題空間:
專家通常會從陳述的問題退後一步,更廣泛地考慮問題空間,尋找理解“問題是什麼”的替代方法。他們可能會通過重新認識問題空間或在同一空間中解決其他問題來改變方向。他們有意選擇與原始設計問題有所不同的目標,因為這會導致洞悉真正問題所在或如何克服關鍵障礙。
7)專家將錯誤視為機遇:
設計經常涉及錯誤:“失誤”,誤解,障礙,錯誤的轉彎,緊急情況。專家們不懼怕錯誤,而是將錯誤視為機遇。他們接受它作為設計的固有部分,並花一些時間來探索失敗和圍繞它的背景。理解發生的事情通常可以揭示有關問題或解決方案的見解,例如假設,誤解,錯位和緊急情況。
8)專家考慮他們沒有設計的東西:
雖然自然而然地專注於設計必須完成的工作,但是專家們也花時間思考設計不打算做什麼。在闡明和考慮邊界時,他們會發現設計過度和設計不足的地方。
瑪麗安·彼得(Marian Petre)是開放大學的計算機教授。Andrévan der Hoek是加州大學歐文分校的資訊學教授。他們是“ 解碼的軟體設計 ”的作者。
相關文章
- 麻省理工學院Lex Fridman:強化學習簡介強化學習
- 麻省理工學院是如何培養計算機學生的計算機
- SQL Server開發人員需要避免的八種習慣PWSQLServer
- 優思學院|質量大師的那些名言(三)【質量是一種習慣】
- 程式設計好習慣程式設計
- 讓學習linux變成一種習慣Linux
- 學好UI設計,需要學習哪些軟體?UI
- 23種軟體設計模式設計模式
- 軟體設計模式學習(十八)命令模式設計模式
- 設計模式快速學習(八)委派模式設計模式
- 總體設計(軟體專案)
- 軟體設計模式學習(二十)迭代器模式設計模式
- 軟體設計模式學習(十三)裝飾模式設計模式
- 高效程式設計師的七個習慣程式設計師
- Python程式設計的16個壞習慣Python程式設計
- 程式設計師的10個好習慣程式設計師
- 23種設計模式(八)-原型設計模式設計模式原型
- 軟體測試學習 ——五種軟體測試模型模型
- 麻省理工學院研究人員設計出針對幽靈黨和熔燬的DAWG方法
- Principle:專為Mac設計的UI原型設計軟體MacUI原型
- 谷歌程式設計師有哪些高效的程式設計習慣?谷歌程式設計師
- 成功者的幾種習慣
- 【軟體設計】專案設計流程規範
- 軟體設計模式學習(十七)職責鏈模式設計模式
- 解讀C#程式設計中最容易忽略7種編寫習慣!C#程式設計
- kivy八種佈局方式學習
- 不好的程式設計習慣之列表儲存程式設計
- 詳細設計(軟體專案)
- 麻省理工學院和美國空軍推出AI加速器計劃AI
- Laravel 第八章學習——中介軟體以及策略Laravel
- 軟體設計模式學習(二十一)中介者模式設計模式
- 軟體設計模式學習(二十四)狀態模式設計模式
- 高效學習習慣分享
- 不好的程式設計習慣之檔案下載程式設計
- C 語言程式設計習慣總結程式設計
- JAVA程式設計習慣之equals對比Java程式設計
- 書評:軟體設計哲學
- MATLAB R2023b for Mac 專業的程式設計和數學計算軟體MatlabMac程式設計