最近與同仁講一個簡單的功能,我們過去的項目或系統可能開發過很多次了,當下需要反思軟體設計怎麼才能做得更好,這樣我們自己才能成長。如果軟體設計都做不好,更做不好軟體架構。 如果你重覆一次又一次在做與過去相同的東西,有沒有意義? 沒有成長,等於浪費時間。現在產品經理都需要關註用戶增長的設計了,思考你如何... ...
最近與同仁講一個簡單的功能,我們過去的項目或系統可能開發過很多次了,當下需要反思軟體設計怎麼才能做得更好,這樣我們自己才能成長。如果軟體設計都做不好,更做不好軟體架構。 如果你重覆一次又一次在做與過去相同的東西,有沒有意義? 沒有成長,等於浪費時間。現在產品經理都需要關註用戶增長的設計了,思考你如何獲得成長。
什麼叫“重覆性勞動”?
你也許會以為,重覆性勞動是指那些主要以體力完成的工作,送外賣、發傳單,或者,摻雜少部分腦力的工作。其實不是,即使是某些高強度的腦力工作,依然算是重覆性勞動。比如,被大家認為重覆性較低的銷售,其實時間長了,也會按固定套路,把銷售流程當做例行公事走完。日復一日的重覆性勞動,工作越來越熟練,但成長越來越緩慢。
反覆不斷地重覆寫代碼去解決同樣的編程問題,這就是在做完全相同的事,除非新的約束和變化給你帶來了新的挑戰,你只能從第一次的經驗中有所收穫,而從第二次開始基本就是簡單地重覆了。如果你想要做得更優秀,重覆實踐是遠遠不夠的。你必須在實踐中增加更多的難度和挑戰。
通常我們軟體設計時需要考慮的:
- Compatibility - The software is able to operate with other products that are designed for interoperability with another product. For example, a piece of software may be backward-compatible with an older version of itself.
- Extensibility - New capabilities can be added to the software without major changes to the underlying architecture.
- Modularity - the resulting software comprises well defined, independent components which leads to better maintainability. The components could be then implemented and tested in isolation before being integrated to form a desired software system. This allows division of work in a software development project.
- Fault-tolerance - The software is resistant to and able to recover from component failure.
- Maintainability - A measure of how easily bug fixes or functional modifications can be accomplished. High maintainability can be the product of modularity and extensibility.
- Reliability (Software durability) - The software is able to perform a required function under stated conditions for a specified period of time.
- Reusability - The ability to use some or all of the aspects of the preexisting software in other projects with little to no modification.
- Robustness - The software is able to operate under stress or tolerate unpredictable or invalid input. For example, it can be designed with resilience to low memory conditions.
- Security - The software is able to withstand and resist hostile acts and influences.
- Usability - The software user interface must be usable for its target user/audience. Default values for the parameters must be chosen so that they are a good choice for the majority of the users.[5]
- Performance - The software performs its tasks within a time-frame that is acceptable for the user, and does not require too much memory.
- Portability - The software should be usable across a number of different conditions and environments.
- Scalability - The software adapts well to increasing data or number of users.
軟體工匠
再回顧軟體工藝宣言,筆者很多年前已在上面簽名:
不僅要讓軟體工作,更要精益求精。
不僅可以響應變化,更要穩步增加價值。
不僅要有個體與交互,更要形成專業人員的社區。
不僅要與客戶合作,更要建立卓有成效的伙伴關係。
也就是說,左項固然值得追求,右項同樣不可或缺。
------------------------------------------------------------------
今天先到這兒,希望對您技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管理,團隊建設 有參考作用 , 您可能感興趣的文章:
國際化環境下系統架構演化
微服務架構設計
視頻直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟體工程的迷思
企業項目化管理介紹
軟體項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共用
高效能的團隊建設
項目管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
互聯網資料庫架構設計思路
IT基礎架構規劃方案一(網路系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變
如有想瞭解更多軟體設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關註我的微信訂閱號:
作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發佈在我的獨立博客中-Petter Liu Blog。