写软件不是造汽车
来源:互联网 发布:北美洲国家 知乎 编辑:程序博客网 时间:2024/04/29 05:46
写软件和做其他事情是不一样的。当我们制造别的东西的时候——像汽车、玩具、椅子、画作、甚至包括数字产品如平面图片和3D模型——我们做出来的成品就是最终的结果。而开发软件则不是,我们做出来的产品永远不可能有最终的结果——我们需要向计算机解释如何根据任意的输入来输出任意可能的结果。
写软件不像造汽车,或者可以这么说,它更像是建立一个汽车装配生产线。
我们很容易了解汽车制造的设计观念,产品设计师只要拿着一张设计图纸,说一声“照这个做”,然后工程师们就可以开工了,开始制造一个看上去真实存在的东西。
假设我们的产品设计师需要给一个网站开发一个用户资料管理系统,一个简单而完美的设计也许就是在布局好的页面中放置几个占位符文本,用来显示用户名、用户头像和一些基础资料数据。然而,这仅仅是开发软件过程中的假设阶段,实际操作很复杂。比如用户如何编辑这些字段?窗口页面太窄了怎么办?页面如何在各种屏幕的阅读器中展示不错的效果?产品设计师只是假设了一些理想状况下的页面,但是开发者却需要将每一种可能遇到的情况都考虑到。
回到刚才打的“汽车装配生产线”这个比喻,产品设计师提出一些看上去很简单的需求,就像“可以把驾驶室的车门颜色由红色替换成蓝色吗?”这样的需求。这是一种误导——做一辆红色车门的汽车看起来很简单,但实践起来却非常困难——我们需要调整生产线上的配色系统以便让其支持喷刷多种颜色的油漆,这就要增加一些局部喷色的逻辑,并且需要增加配置选项以允许人们在生产线上可以选择需要喷刷的油漆颜色。还有就是需要购买一些新的喷漆嘴,因为红漆比蓝漆流动更快一些。而且需要安排更好的健康保险,因为一旦销售人员知道你制造的汽车只有一扇门是红色的,他们会疯狂地扔东西。
在软件开发中也会发生类似的事情。“嘿,这个用户管理系统看起来很不错,可以在用户生日的时候发送一条祝福消息吗?”于是你又接收到了一条看似简单的需求。
当你在开发软件的时候,你并不是在构建用户管理系统中的一个页面,而是在创建一条装配生产线,它由一堆的零部件组成,而且可以每次生成正确的用户管理页面。
- 写软件不是造汽车
- 中国人写软件与造汽车
- 汽车苹果软件
- 汽车过敏和软件纠错
- 汽车之家 砍价软件
- python 和汽车软件开发
- 第一步不是写代码
- 软件不是艺术品(原创)
- 软件不是工业
- 软件界面不是艺术作品
- 运行软件不是中文
- 用汽车名写的情书
- 写给程序员:我们这一代不是汽车工人
- 转载:写给程序员:我们这一代不是汽车工人
- 写给程序员:我们这一代不是汽车工人
- 文通科技汽车VIN码识别软件—你造吗!
- 漫画解读:通过造汽车了解软件开发模式
- 汽车电子软件开发相关标准
- Bootstrap3.0学习第十五轮(大屏幕介绍、页面标题、缩略图、警示框、Well)
- CString读文件显示乱码的万能处理方法
- linux 目录和用户权限命令
- 工作分配
- leetcode 虐我篇之(十四)Binary Tree Preorder Traversal
- 写软件不是造汽车
- iOS图片拉伸技巧
- 黑马程序员—因为感恩,所以我也来深圳黑马当班主任
- Spring3零配置注解实现Bean定义
- Bootstrap3.0学习第十六轮(进度条、媒体对象、列表组、面板)
- Linux文件操作,Linux系统函数和C标准库
- 爱情苏打饼
- zoj 3806 Incircle and Circumcircle
- 《Effective C++》学习笔记(三)