如何提升設計能力?

     要提升設計能力首先須要對軟件設計有着精神上的追求,即在軟件開發的過程當中追求設計的完美性。夢想之因此有可能成爲現實,是由於咱們會去「想」併爲之努力,軟件設計能力的得到也不例外。設計能力的得到並不會由於不去追求而「不當心」得到且水平很高。具有軟件設計追求的人,會在設計的第一時間積極思考以試圖找到更優實現,也會隨着產品的演變而反思是否存在更好的設計,或者在必要的時候會選擇接受挑戰去經過改善設計幫助團隊走出困境。
     提升設計能力的另外一個途徑是實踐加模仿。做者小時候很喜歡武術,在高中時常常看有關散打方面的書,看過以後還在頭腦中想什麼樣的場景應當用什麼樣的招式,並且還常常拿本身的弟弟、堂弟和表弟做爲演練對象(可苦了他們!)。在高中期間的一次與鄰居同齡小孩的打架中,做者快速地將對方巧妙地摔倒在地上取得了勝利。站在一旁觀戰的表哥後來問了一個問題,「你如何快速地將他打倒在地?我沒有搞明白!」。「由於我常常在頭腦中假想格鬥的場景以及操練」,做者當時是這麼回答的。有了那次經歷之後,做者也明白了爲何部隊裏面要有軍體拳(簡單地說就是武術操),也改變了軍體拳只是個花架子的觀念。什麼東西只有對之熟悉了之後才能運用自如,而要熟悉它就得實踐,且一開始是模仿性的實踐。做者小時候打架能快速地制勝,正是由於看了書中的散打招式後,經過必定的假想和操練去訓練大腦的反應,一旦在現實場景中出現了之前訓練時的場景,就會本能地運用相應的招式。設計能力的提升也有類似之處,一開始要看別人的設計,且看出其中巧妙的地方,若是看懂了每每會在大腦中留下必定的印象。之後碰到相似設計主題時就會想起曾經在某一個項目中存在相似的設計,若是還徹底記得那一好的設計是如何實現的,那就依樣畫葫蘆地作。固然,若是不記得也沒有關係,能夠再查看那個項目的設計並模仿它。相似的模範多了幾回的話,後面就很容易想到用它,且領悟其中的精髓並把握各類設計方法的本質,乃至最後本身也能創造性地思考出更優的設計方法。這種學習方法,對於學習面向對象開發更是重要,由於面向對象的設計思想更抽象。做者曾經的一個項目組長是如此評價面向對向設計的 ——「我以爲它很繞」。是的,在尚未徹底掌握面向對象開發時就是這種感受,但一旦掌握了就會以爲它是那樣的天然和直接了當。
     實踐和模仿的目的是爲了最終造成本身的設計思想,設計思想的造成須要經過思考去作到。設計思想是什麼?是設計時所遵照的各條原則。爲何有的設計一看就以爲好呢?是由於它符合某些設計原則。而思考的目的就是從各類好的設計中,找出藏在背後的原則。如何從一個好的設計中找出隱藏在後的設計原則呢?做者在高中時購買過一本武術書 —— 《截拳道》,這本書講解了李小龍創立的截拳道。截拳道更加註重搏擊效率,所以,它的招式都是以實用、直接打擊對手爲目的。誠然,在格鬥的過程當中,沒有人會優先考慮本身的招式是如何的「酷」,不然就是找打,而應注重如何在格鬥過程當中佔上風乃至最後取勝。李小龍的截拳道也正是從紛繁複雜的招式中發現最爲簡練的那些,經過對招式的簡化來提升搏擊效率。李小龍創立截拳道的過程或許與咱們從好的設計中找出隱藏在背後的設計原則很類似,須要什麼樣的能力呢?洞察力!想想,李小龍能創立截拳道是否是也正由於他對於武術招式獨到的洞察力呢?他經過運用洞察力去去除那些在博擊中沒有打擊效用的部分,以達到簡化並提升博擊效率的目的。洞察力不僅對於找出設計背後所隱藏的設計原則有用,其實在整個軟件開發乃至人生中都有着十分重要的做用。良好的洞察力有助於發現表象背後的本質,或尋找出問題的根源。軟件行業的洞察力也能夠理解爲技術敏感度,或職業本能。
     設計能力的提升意味着將掌握更多的設計原則,能力的提升過程也是對設計原則進行精化的過程,理論上,應儘量讓各設計原則所涵蓋的內容是正交的。設計不是簡單地運用每個原則,有時須要在各類原則中進行平衡。一個設計在兩個原則之間存在必定程度的衝突時,是先知足其中的哪個呢?仍是二者都須要進行必定的折衷妥協?這些都須要有很好的平衡能力。平衡能力的得到一樣須要經過思考,或者平衡能力也能夠經過定義適當的原則進行掌控。
     追求設計之美是提高設計能力的原動力,實踐和模仿起到的是熟悉各類「零星」的好設計,而思考則是幫助領悟各類「零星」的好設計並找出隱藏在其背後的設計原則,進而造成本身完整的設計思想體系。
相關文章
相關標籤/搜索