软件技术发展的驱动力
来源:互联网 发布:微店和淘宝 编辑:程序博客网 时间:2024/04/27 15:43
软件产品的终极目标是为了实现用户需求从而满足人们的需要。也正是为了不断满足人们的需要使得软件行业不断向前发展。比如,新的算法(MPEG-1、MPEG-2、MPEG-4、H.264、……)等的出现都在当时为了满足不同的需要而被发明。然而,人们的需要(行业发展的外部动力)却并非是软件技术发展的唯一驱动力,因为它无法解释为什么业内的编程语言、软件平台与框架等会层出不穷,有的甚至给人“重新发明轮子”的感觉。如何判断“新轮子”的确是必要的呢?这与本文想重点关注的另外三大驱动力有关,重点关注它们的原因源于其与我们的日常工作更加息息相关。
我认为,软件技术发展的另外三大驱动力分别是简化、复用和美化(行业发展的内部动力)。“新轮子”是否必要的关键,是看它在简化、复用和美化这三个纬度上是否存在优于“老轮子”的内容。注意,这三大驱动力是站在程序员的角度去观察的,而不是从软件产品的最终用户角度。因为最终用户只关心产品的功能与使用体验,而不关注产品的开发过程,更不关心产品是用“老轮子”抑或“新轮子”构建的。
简化是应对日益复杂和规模庞大软件的核心有效手段,因为“复杂的问题总是以简单的方法解决的”(引自《大师亚当斯》)。简化的关键不是“拍脑袋”做到哪是哪,而需运用我们的洞察力去找到解决问题的关键路径、去繁求简。然而,洞察力的获得除了需要在某一技术方向上的长期积累外,更需要我们不断坚持就所面临的问题全神贯注地思考,洞察力也因此成为了行业的稀缺资源,也决定了真正能简化软件设计与实现的人少之又少。
简化在业内有各种不同的表现形式,除了有方法论(比如,领域驱动开发、面向对象编程、设计模式和解耦),更有通过不同形式和程度的抽象(比如,C编程语言之于汇编语言、C++编程语言之于C编程语言、各种软件平台与框架)。有趣的是,这些表现形式在简化的道路上自身却带来了更大的复杂度(复杂度是守恒的?)。
复用的好处相信众人皆知,这使得我们因避免“重新造(相同的)轮子”而获得更高的开发效率和更高质的产品。复用这一驱动力使得业内出现各种不同的开源软件平台与框架,也使得软件企业长期致力于打造自有产品的通用软件平台与框架。对于复杂软件来说,竞品的背后实际上是软件平台与框架之争。
复用的表现形式不只是构建软件平台与框架,还有各种编程语言的“语法糖”等。
简单是一种美,但美不只在于简单,更有软件的内在结构与代码的表现形式,美化因此也成为了驱动软件技术发展的另一大动力。我认为软件之美在于:1)对适应将来软件功能变化而导致的代码变更保持一定的弹性。这种适应能力其实是对软件内在结构的合理性提出了要求。2)代码能作为程序员间流畅沟通的载体与桥梁。这是对代码的表现形式所提出的要求,也间接地指出编程的目的不只是提供API或实现软件功能。美化工作的不到位是很多软件开发团队深陷质量困境的重要原因。
我认为,软件技术发展的另外三大驱动力分别是简化、复用和美化(行业发展的内部动力)。“新轮子”是否必要的关键,是看它在简化、复用和美化这三个纬度上是否存在优于“老轮子”的内容。注意,这三大驱动力是站在程序员的角度去观察的,而不是从软件产品的最终用户角度。因为最终用户只关心产品的功能与使用体验,而不关注产品的开发过程,更不关心产品是用“老轮子”抑或“新轮子”构建的。
简化是应对日益复杂和规模庞大软件的核心有效手段,因为“复杂的问题总是以简单的方法解决的”(引自《大师亚当斯》)。简化的关键不是“拍脑袋”做到哪是哪,而需运用我们的洞察力去找到解决问题的关键路径、去繁求简。然而,洞察力的获得除了需要在某一技术方向上的长期积累外,更需要我们不断坚持就所面临的问题全神贯注地思考,洞察力也因此成为了行业的稀缺资源,也决定了真正能简化软件设计与实现的人少之又少。
简化在业内有各种不同的表现形式,除了有方法论(比如,领域驱动开发、面向对象编程、设计模式和解耦),更有通过不同形式和程度的抽象(比如,C编程语言之于汇编语言、C++编程语言之于C编程语言、各种软件平台与框架)。有趣的是,这些表现形式在简化的道路上自身却带来了更大的复杂度(复杂度是守恒的?)。
复用的好处相信众人皆知,这使得我们因避免“重新造(相同的)轮子”而获得更高的开发效率和更高质的产品。复用这一驱动力使得业内出现各种不同的开源软件平台与框架,也使得软件企业长期致力于打造自有产品的通用软件平台与框架。对于复杂软件来说,竞品的背后实际上是软件平台与框架之争。
复用的表现形式不只是构建软件平台与框架,还有各种编程语言的“语法糖”等。
简单是一种美,但美不只在于简单,更有软件的内在结构与代码的表现形式,美化因此也成为了驱动软件技术发展的另一大动力。我认为软件之美在于:1)对适应将来软件功能变化而导致的代码变更保持一定的弹性。这种适应能力其实是对软件内在结构的合理性提出了要求。2)代码能作为程序员间流畅沟通的载体与桥梁。这是对代码的表现形式所提出的要求,也间接地指出编程的目的不只是提供API或实现软件功能。美化工作的不到位是很多软件开发团队深陷质量困境的重要原因。
现实中,软件技术的进步其实是简化、复用和美化三大驱动力的综合结果,因为三者间并非完全正交。比如,简化的结果可能也实现了美化,美化的结果可能也带来了简化,复用又为我们带来了简化。无论如何,通常其中一个是作为技术发展的主导动机。
了解三大驱动力有助于我们更理性地看待软件技术的发展,同时作者也想暗示,我们在软件开发工作中应从简化、复用和美化三方面着手,而不能停留在“软件能用就行”这种“原始需求”上。否则,我们的行为就是不符合软件技术发展的“潮流”哦!
- 软件技术发展的驱动力
- 软件技术发展的驱动力
- 软件技术发展的驱动力
- 软件技术发展的几个阶段
- 中小企业是中国SaaS未来发展的驱动力
- 物联网发展的最大驱动力是嵌入式
- ERP软件技术发展的六大新趋势
- 软件技术体系发展
- 软件技术发展历程
- 软件技术发展历程,从没有一层不变的
- 技术创新始终是互联网发展的核心驱动力 “超级引擎”激发互联网
- 中兴新支点嵌入式系统技术成物联网发展的驱动力
- 软件开发的驱动力
- 技术发展的驱动力
- 驱动力
- 《驱动力》
- WEB2.0的市场驱动力
- 剖析协同软件的驱动力
- (39)21.4 终结任务---Java编程思想之并发笔记
- SSH相互认证的问题 (authorized_keys )
- 十进制与二进制
- 走技术线,还是技术管理线?
- (40)21.4.1 装饰性花园---Java编程思想之并发笔记
- 软件技术发展的驱动力
- 再见,2012
- (41)21.4.1 并发 练习 17---Java编程思想之并发笔记
- 哈密顿回路-相异数字序列问题
- Flex HTTPService 读取XML并显示在 Tree 中
- (42)21.4.2 在阻塞时终结---Java编程思想之并发笔记
- 从数据访问程序看设计模式之工厂模式、抽象工厂模式
- Html:frameset 使用心得
- (43)21.4.3 中断---Java编程思想之并发笔记