思考软件开发

  

        计算机是人类迄今为止最伟大的发明之一, 因为在其上能够进一步地创造出无数个凝聚人类智慧结晶的子系统 —— 软件。未来可能存在一个超级软体, 汇聚人类在科学、技术、人文、艺术、文化、法律、政治、医学、历史、地理、建筑等所有领域的优秀成果。未来的教育将是“云教育”形式, 只要在移动设备上安装若干的APP, 便可随身携带人类创造的所有精心整理好的知识以及判断、推理、决策能力, 从而帮助人们更好地创造和生活。

 

         软件开发是什么?  它的优势和价值? 

         如何做好这项工作? 如何能够让软件更好地为人服务?


        软件开发的本质是通过计算的手段解决现实需求和问题。

        具体地说, 是通过将计算封装成一个人类可感知可操控的实体, 通过全自动化或人机交互的方式来实现具体问题和需求的解决。 

 

        其核心优势是极快极准确。 准确是指元计算单位(加、复制) , 业务上的准确性由软件创建者来保证。

        其缺点是不够灵动,  需要人来适应它的“坏脾气”;  有时也常做错事情。 


        软件可以通过以下几种途径解决问题: 

             自动化、 通信、 协助创作。

             1.  使人工耗时的事情瞬间完成, 比如大量的科学计算;

             2.  使困难的事情更容易完成, 比如现实建模分析, 异地交流;

             3.  使麻烦的事情更便利, 比如网上购物, 智能家居;

             4.  创造有趣的游戏, 让人们乐在其中, 又能够从中受益;

             5.  创造天马行空的想象空间。


        软件开发者可以创建很多新奇的软件, 去帮助人们做各种新奇的事情; 

        人们可以使用软件做很多软件创建者无法想象的事情。 可谓是: 只有想不到, 没有做不到。


        解决问题的能力依赖于我们所掌握的思考、方法、技术、手段和工具。 

            1.  思考: 对问题和需求的理解有多透彻, 能否找到解决问题的关键点;

            2.  方法: 解决问题的整体思路、常规方法、 可借鉴的现有方案;

            3.  技术: 现有技术实现, 需要探究和解决的技术难点, 技术选型与架构设计;

            4.  手段: 通常需要通过沟通和协作来获取资源, 组建团队, 制订项目进程和工期, 倾听用户反馈;

            5.  工具: 通常是用于构建软件的开发工具、 库、框架和组件。

       

          需求 - 目标 - 设计 - 资源 - 成本 - 进度 - 实现 - 反馈

             需求:  所面临的本质性难题在哪里? 需要满足什么样的需要? 提出什么样的问题?

             目标:  对需求和问题的仔细分析和定位, 制订可满足需求的明确可达的目标集合; 

             设计:  选择合适的技术和架构来指导实际活动, 确保能够充分完成预期目标, 同时对未来保持一定的灵活性和应对力; 

             资源:  合理的设计必定需要考虑的因素, 人力、软硬件、 团队沟通、工具环境等, 这些是完成目标的必要件;

             成本:  必须比较准确地估算成本; 没有成本估算的项目和设计是不靠谱的;

             进度:   制订基本合理的进度, 作为对项目进程的监督和参考;

             实现:   注重细节和过程, 实现预期目标, 同时保证较高的项目代码质量。

             反馈:   反馈、总结、 汲取经验教训。

  

       要创建更有能力解决问题的软件, 必须有人的思考进行引导。 因此, 创建软件并不局限于技术,  其先决条件是问题的思考和探讨足够透彻。 而人们常常过于关注技术层面。


       现代软件开发通常依赖于成熟的库与框架。 库的作用是提供常用基础任务的解决和实现, 框架的作用是提供某一问题的骨架实现和基础设施, 让使用者能够更专注于业务逻辑的实现。 那么,现代软件开发的重点就转变成: 完整准确理解和使用库的API , 掌握框架所提供的基础设施(必要的时候需要理解具体实现), 从而更快地建立更稳固的应用。 


       有四种创新:

       1.  技术创新:  技术创新意味着对计算世界的深入研究和洞察, 能够提出更优秀的方案去解决已有问题或所面临的难题, 属于非常精微的层面; 

       2.  产品创新:  产品创新意味着对用户需求的敏锐洞察, 通过组合多种方式达到一种全新的效果,  解决用户的“痛点”, 并对用户产生有益的影响和吸引力;

       3.  业务创新:  业务创新意味着能够观察到对客户有益的价值层面, 通过引入新技术或新产品,开拓新的领域, 能够创造更多的价值;

       4.  模式创新:  模式创新意味着能够找到业务的增长点和盈利点, 保证企业的正常有效运转, 从而能够扩展其生存空间。


      技术通常是创新的第一驱动力; 但创新并不局限于技术层面。

 

      软件开发也面临着诸多挑战。 写写小程序是很有乐趣的, 但一旦发展到中大规模的真实系统, 就令人头疼了。如何建立有用的、稳固可靠的应用系统呢?  此外, 软件开发也面临着竞赛: 更快, 更好, 更有用。 即使今天能够使用成熟技术确保系统可靠可用, 也可能很快被那些敢于冒险使用新技术的人超越, 拉在后面。如何更好地尝试新技术、应用新技术, 在保证应用稳固可靠的同时, 保持着对新技术的探讨和敏锐, 也是一个值得思考的问题。   


       最后, 要让软件能够更易为人所使用, 必须提供一个有吸引力的界面。 或简约, 或华丽, 取决于具体情况, 但核心的是, 软件出色地完成了它声称和需要做的工作, 错误极少, 体验流畅。 这需要深入调查和理解用户是如何使用软件的每一个功能点, 才能做出切中要害的优化和改进。


       值得信赖的软件: 准确, 快速, 流畅, 灵活。 

 

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

 

 

posted @ 2013-11-21 21:33  琴水玉  阅读(485)  评论(0编辑  收藏  举报