天天看點

思考軟體開發

軟體開發是什麼? 它的優勢和價值? 如何做好這項工作? 如何能夠讓軟體更好地為人服務?

  

        計算機是人類迄今為止最偉大的發明之一, 因為在其上能夠進一步地創造出無數個凝聚人類智慧結晶的子系統 —— 軟體。未來可能存在一個超級軟體, 彙聚人類在科學、技術、人文、藝術、文化、法律、政治、醫學、曆史、地理、建築等所有領域的優秀成果。未來的教育将是“雲教育”形式, 隻要在移動裝置上安裝若幹的APP, 便可随身攜帶人類創造的所有精心整理好的知識以及判斷、推理、決策能力, 進而幫助人們更好地創造和生活。

         軟體開發是什麼?  它的優勢和價值? 

         如何做好這項工作? 如何能夠讓軟體更好地為人服務?

        軟體開發的本質是通過計算的手段解決現實需求和問題。

        具體地說, 是通過将計算封裝成一個人類可感覺可操控的實體, 通過全自動化或人機互動的方式來實作具體問題和需求的解決。 

        其核心優勢是極快極準确。 準确是指元計算機關(加、複制) , 業務上的準确性由軟體建立者來保證。

        其缺點是不夠靈動,  需要人來适應它的“壞脾氣”;  有時也常做錯事情。 

        軟體可以通過以下幾種途徑解決問題: 

             自動化、 通信、 協助創作。

             1.  使人工耗時的事情瞬間完成, 比如大量的科學計算;

             2.  使困難的事情更容易完成, 比如現實模組化分析, 異地交流;

             3.  使麻煩的事情更便利, 比如網上購物, 智能家居;

             4.  創造有趣的遊戲, 讓人們樂在其中, 又能夠從中受益;

             5.  創造天馬行空的想象空間。

        軟體開發者可以建立很多新奇的軟體, 去幫助人們做各種新奇的事情; 

        人們可以使用軟體做很多軟體建立者無法想象的事情。 可謂是: 隻有想不到, 沒有做不到。

        解決問題的能力依賴于我們所掌握的思考、方法、技術、手段和工具。 

            1.  思考: 對問題和需求的了解有多透徹, 能否找到解決問題的關鍵點;

            2.  方法: 解決問題的整體思路、正常方法、 可借鑒的現有方案;

            3.  技術: 現有技術實作, 需要探究和解決的技術難點, 技術選型與架構設計;

            4.  手段: 通常需要通過溝通和協作來擷取資源, 組建團隊, 制訂項目程序和工期, 傾聽使用者回報;

            5.  工具: 通常是用于建構軟體的開發工具、 庫、架構群組件。

          需求 - 目标 - 設計 - 資源 - 成本 - 進度 - 實作 - 回報

             需求:  所面臨的本質性難題在哪裡? 需要滿足什麼樣的需要? 提出什麼樣的問題?

             目标:  對需求和問題的仔細分析和定位, 制訂可滿足需求的明确可達的目标集合; 

             設計:  選擇合适的技術和架構來指導實際活動, 確定能夠充分完成預期目标, 同時對未來保持一定的靈活性和應對力; 

             資源:  合理的設計必定需要考慮的因素, 人力、軟硬體、 團隊溝通、工具環境等, 這些是完成目标的必要件;

             成本:  必須比較準确地估算成本; 沒有成本估算的項目和設計是不靠譜的;

             進度:   制訂基本合理的進度, 作為對項目程序的監督和參考;

             實作:   注重細節和過程, 實作預期目标, 同時保證較高的項目代碼品質。

             回報:   回報、總結、 汲取經驗教訓。

       要建立更有能力解決問題的軟體, 必須有人的思考進行引導。 是以, 建立軟體并不局限于技術,  其先決條件是問題的思考和探讨足夠透徹。 而人們常常過于關注技術層面。

       現代軟體開發通常依賴于成熟的庫與架構。 庫的作用是提供常用基礎任務的解決和實作, 架構的作用是提供某一問題的骨架實作和基礎設施, 讓使用者能夠更專注于業務邏輯的實作。 那麼,現代軟體開發的重點就轉變成: 完整準确了解和使用庫的API , 掌握架構所提供的基礎設施(必要的時候需要了解具體實作), 進而更快地建立更穩固的應用。 

       有四種創新:

       1.  技術創新:  技術創新意味着對計算世界的深入研究和洞察, 能夠提出更優秀的方案去解決已有問題或所面臨的難題, 屬于非常精微的層面; 

       2.  産品創新:  産品創新意味着對使用者需求的敏銳洞察, 通過組合多種方式達到一種全新的效果,  解決使用者的“痛點”, 并對使用者産生有益的影響和吸引力;

       3.  業務創新:  業務創新意味着能夠觀察到對客戶有益的價值層面, 通過引入新技術或新産品,開拓新的領域, 能夠創造更多的價值;

       4.  模式創新:  模式創新意味着能夠找到業務的增長點和盈利點, 保證企業的正常有效運轉, 進而能夠擴充其生存空間。

      技術通常是創新的第一驅動力; 但創新并不局限于技術層面。

      軟體開發也面臨着諸多挑戰。 寫寫小程式是很有樂趣的, 但一旦發展到中大規模的真實系統, 就令人頭疼了。如何建立有用的、穩固可靠的應用系統呢?  此外, 軟體開發也面臨着競賽: 更快, 更好, 更有用。 即使今天能夠使用成熟技術確定系統可靠可用, 也可能很快被那些敢于冒險使用新技術的人超越, 拉在後面。如何更好地嘗試新技術、應用新技術, 在保證應用穩固可靠的同時, 保持着對新技術的探讨和敏銳,

也是一個值得思考的問題。   

       最後, 要讓軟體能夠更易為人所使用, 必須提供一個有吸引力的界面。 或簡約, 或華麗, 取決于具體情況, 但核心的是, 軟體出色地完成了它聲稱和需要做的工作, 錯誤極少, 體驗流暢。 這需要深入調查和了解使用者是如何使用軟體的每一個功能點, 才能做出切中要害的優化和改進。

       值得信賴的軟體: 準确, 快速, 流暢, 靈活。 

        生活即如行船, 不能追求輕松, 而要努力做到平衡中的從容自若。

繼續閱讀