注:本文转载自酷壳,文中作者根据自己十多年的软件开发经历,总结出软件开发的三个阶段——功能、性能
和智能(作者称之为软件开发“三重门”)。
以下为原文:
这篇文章必然是通过我的个人经历来写的。所以,我先说说个人经历吧。我的经历基本分成三个阶段。
第一阶段:我刚毕业时在家乡的某银行工作,做些银行的业务系统,还搞些网络、电子邮件系统、OA什么的,
因为大四的时候在老师的公司里实习,银行里的人际关系太复杂,而且技术都包给了产商,所以在银行的每一
天都觉得不能适应里面的工作环境。两年后离职,单位分的房也不要了,直接去了上海,在上海呆了两年,本
来想做互联网的,但是泡沫来了,最终去了一家做系统集成的国企公司还是继续做银行业务。这四年来,主要
解决的都是一些业务上的问题,银行里的会计业务、OA业务、国际业务、中间对公业务都非常地复杂,而且因
为当时的软件开发相当的不规模,所以基本上是在一种比较混乱的状态下度过的,而银行方面又很强势,所
以,这段时间主要是做业务。C+/Java、Windows编程、Unix编程、网络编程主要是这段时间学的,看了太多
的书(我大学课程里没有C++和Java,也没有Windows/Unix和网络编程,所以,只能拼命地看书和自学)。
第二阶段:然后,我来到了北京,在一家做分布式计算系统的公司,整天和一个高性能、高可用性的企业级的
集群式的软件产品打交道(这家公司去年被IBM收购了),在这家公司把Windows/Unix和网络编程有了更深入
的了解,对我长进比较大的是明白了怎么做一个性能高、可用性高的集群式的系统,天天和底层打交道,干了4
年多。然后去了一家金融信息公司,这家金融公司主要做全球的金融信息数据处理,而我主要还是做核心数据
发布系统的性能调优的项目,金融数据的实时性要求的高,数据量非常地大,高可用性要求得高,得想尽一切
办法省网络带宽,增加系统性能,还要保持高可用性、不宕机、不丢包。又干了4年多,去的时候从国外接过来
两个系统,其性能单机每秒可处理 120K message,我走的时候,我和团队把其优化到了每秒1.4M messages
的吞吐,另一个系统,从接手时的100k message/s优化到了500k message/s。这八年多的时候,全是在和这
些高计算高性能的项目打交量,几乎没有什么业务,都是纯技术,积累到了很多和性能有关的高并发、高计算
系统架构级的知识。
第三阶段:两年前来到了现在的做电子商务的互联网公司Amazon,还是在做一个数据处理量很大的业务系
统,因为要干的是要把电子商务全球化的东西。但是,因为 .子商务的特殊性,必须要去兼顾业务的特点,而
且在Amazon,耳濡目染了很多有趣的业务难题,比如,库存计划、配送优化,等等。虽然很多东西还不明
白,但发现,用技术来解决业务难题真是太有意思了。
我的这三个阶段,第一个阶段花了4年,第二个阶段花了8年,第三阶段刚刚开始2年不到,有时候我也去别的公
司讲课,所以,我很有幸经历了中国软件开发的进化过程。我的经历就是中国软件行业进程的一个缩影,而我第 101 / 170 页
把这三个阶段称为——软件开发的三重门。它们分别是:
• 业务功能
• 业务性能
• 业务智能
之所以加上“业务”二字,是因为我以为计算机是一个工具,其用来解决实际问题,所以,什么都离不开业
务,就算是性能优化也一样,通过之前那篇“12306.cn的性能优化”中的“业务分析”段落,我们可以知道业
务的不同,系统的难度和解决方法就可以不同。所以,我们总是用技术在解决业务问题。业务的形态对软件的
开发有决定性的作用。
下面让我具体描述一下。
一重门:业务功能
这是软件开发的第一重门,也就是掌握可以实现业务功能的技术。通常分成三块:语言、系统、数据处理。在
这个阶段,主要是掌握各种技术,比如:开发用的各种工具(如:IDE、XUnit、Debugger等),各种代码库
和框架(如:C++的STL、ACE、Boost等,Java的Spring、Hibernate等),各种系统知识(如:Windows
API、Unix/Linux API、TCP/IP、Socket、多线程多进程间的同步和互斥、并发安全,还包括Web平台和移动
平台,等等),还需要掌握数据处理的知识(如:数据结构、基本算法、数据库设计、数据库引擎、SQL等)。
这个阶段主要是把这些不同的技术组织成可以实现业务功能的解决方案。重点是能掌握和使用技术。很多流程
和方法论的东西基本上就在这一重门里。这重门主要解决的是实现问题。
二重门:业务性能
业务的功能搞定了以后,就是业务的性能问题了。搞定功能并不难,搞定性能是有点技术含量的事。有句话不
是那么说的吗——每个人都可以搞一个网站出来,但不是每个人都能搞出能支持百万级访问量的网站。但是,
我看到很多技术团队或是工程师脱离了业务,只单纯地搞性能,比如:单台服务器支持10万个TCP链接的并
发,等等。这些东西虽然在技术上有点意思,但是没有业务的环境,也只能是自娱自乐了。
我们可以看到一些企业开始注重这个问题了,性能问题也是最近被大家讨论得最多的问题,京东商场的性能问
题,12306的性能问题,等等。
当然,所谓性能不并单单指系统的吞吐力,还指系统运行时的总体性能,比如,系统安全性能、系统的
Accessbility的性能、系统的扩展性性能,等等,就像是前些天中“Web开发中需要注意的问题”一文中谈到的
那些事一样。这表明着你对系统的全面和深入的了解。
在这个阶段,需要对业务模型、数据流、业务流、系统架构、算法和各种技术有深入的了解,要了解到本质上
第 102 / 170 页
来。比如:在第一重门中,我们只需同要知道,Java有同步关键字,在这一重门中,我们还要知道同步或互斥
对性能的巨大伤害性;在第一重门中,我们只需要知道STL中的智能指针或是STL的用法,这一重门中,我们还
要知道智能指针中的refcnt的同步加锁对性能的损害,还需要知道STL中容器的size()方法在某些时候是性能很差
的;在第一重门中,我们需要知道hash表的效率,在这一重门中,我们还需要知道hash表的碰撞问题。
最重要的是,在这重门重点是软件的设计问题。你需要有足够多的经验能比较不同设计方案的优缺点,比如TCP
和UDP、同步和异步、epoll和select、push和pull、水平扩展的各种方案等。还记得本站的那篇“程序员的谎
谬之言还是至理名言”,广度是你深度的副产品。所以,这重门是看你的技术视野有多深有多广。
三重门:业务智能
这重门可能是最难的一重门了,如果你能进到这重门里,你应该是科学家级的程序员了。让你有智能的业务,
这可能是顶级的技术难题了。第一和第二重门都不算难,这重门是最难的。参看Amazon的个性化推荐系统,
或是Google搜索引擎的结果个性化推荐等等(比如我输入“黑天鹅”关键字,你怎么知道我要找的是动物、电
影还是本书?怎么让搜索出来的结果排名即公正又可行?),你就知道,用技术来解决这种类似的问题难度可
想而知,不然就不会出现如 Hadoop之类的技术了。
我再举两个这重门里的业务方面的例子。
一个例子是关于库存计划的,需要像天气预报一样预测未来的销售量从而决定库存,所以,最简单的做法是,
监测各个商品的销售统计,然后看一下最近的销售趋势,还要看一下往年的销售趋势(因为某些节假日会是一
个高峰期),还要分析一下大众的喜好变化,比如,在某影评网站上的某电影的热度其会告诉我哪个电影的
DVD要滞销了,得打折卖,哪个电影的DVD要畅销了,得多进货了。还可能需要监控新闻评论,比如某权威人
士推荐了某个商品,那么我得赶快进货了,等等。这完全就是一门科学。
还有一个例子是配送问题。我有一辆卡车要处理我仓库和配送站间的物流问题,我需要找到一条最经济的路线
来在有限的时间内处理最多的物流。这个不是最短路径问题,这是个计划统筹学的东西。也是一门科学。
还有近期“方韩之争”里有很多人来分析文章相似度的技术,这些东西都属于三重门里的东西。
到了这重门里,重要的可能不是技术,而是数学模型。这重门里主要是业务模型、数据模型和算法问题。这些
东西和你的业务模型密切相关。能解决这样的问题,是真正的大牛。对于我来说,可能是高山仰止了。
后记
通过上面的说明,我们可以看到下面这些东西,
• 我的那篇“程序员技术练级攻略”里的东西只能让我们最多达到1.1 到 1.2重门。
http://www.iteye.com/news 3.4 软件开发的 “三重门”
第 103 / 170 页
• 一重门像是开垦荒地,二重门像是扩大生产,三重门像是精耕细作。
• 一重门(业务实现)里聚集着大量的劳动密集型的企业,劳动密集型的企业通常都需要流程和方法论。
敏捷过程改进这类的东西只在一重门里。
• 二重门和三重门里只有少数不多的技术型的公司,这类的公司通常非常注重技术,并且企业文化是工程
师的文化。
• 三重门里可以产生创新和那些可以用来改变世界的技术。
• 国内现在的情况是:一重门优化阶段 + 二重门的学习阶段。三重门里似乎还没有什么见术。不过,我看
到一些公司已在尝试三重门的东西了。
• 作为技术人员的你,如果你想跟上时代,让自己有价值的话,你至少要达到二重门。
• 国内的技术环境等不良因素,导致大量的程序员在一重门的时候就已经失去信心,或被大浪淘沙淘掉
了,所以,二重门里的程序员比较少了,但是随着年轻的一代 和技术的日趋成熟,也会慢慢多起来的,
我现在已经看到这个趋势了。而三重门里的程序员成了稀缺的大熊猫。因为大量的二重门程序员干到那
个时候都转管理了。
最后,我的这些言论不一定对,但希望能让大家有启发,有所思考。
分享到:
相关推荐
马云2021遭遇创伤三重门:坚守还是转型?.docx
【作 者】东方著 【出 版 社】甘肃文化出版社 【内容简介】 修心养性是做人的第一意义,而做入的技巧则是方方面面的——让自我聪明起 <br/>来,就得博知广识;让自己高洁起来,就得淡泊明志——...
TMV技术路径的判断是行业发展的关键,报告提出“三重门”框架来帮助理解这一研判过程: 1. 外科VS介入:外科手术仍然是标准治疗方式,但TMV技术以其微创优势有望打开远超外科手术的增量市场。 2. 修复VS置换:TMVr...
很抱歉,根据您提供的文件信息,标题和描述中提到的是关于个人阅读《三重门》这部作品的感想,而标签为"资料",部分内容则是对韩寒这本书的文学评价,以及对书中所反映的教育问题的简短讨论。然而,这些内容并不涉及...
言论:高考作文阅卷请过三重门.doc
取悦车主车联网需要跨越“三重门”.pdf
标题中的"TD-SCDMA商用直面“三重门”"指的是TD-SCDMA技术在商业化进程中面临的三大挑战。TD-SCDMA是中国自主开发的3G通信标准,它在技术特性上具有一定的优势,比如利用现有2G网络资源的能力。然而,实际商用过程中...
马云“裸奔2021”:本命年遭重伤 悲剧三重门.docx
然而,RFID技术的信号特点为其开发和测试带来了困难。RFID信号是间歇性的微功率发射,可能涉及跳频,并且存在多种标准和制式,如LF、HF、UHF、2.4GHz和5.8GHz等频段,以及ASK、BPSK、FSK等多种调制方式和不同的编码...
RFID技术的特性决定了其在开发和测试阶段的难度。RFID系统由读写器、应答器(标签)和天线三部分组成,通过天线进行信息交换。RFID信号具有间歇性微功率发射、可能的跳频特性和多标准、多制式的特点。例如,常见的...
这个大赛聚焦于互联网技术,鼓励学生们运用计算机科学的知识,开发出具有实用性和创新性的软件应用。通过这样的比赛,参赛者可以提升自身的编程能力、项目管理技巧以及团队合作精神。 在获奖名单中,我们可以看到...
4.6. form提交数据的三重门 4.6.1. ext中默认的提交形式 4.6.2. 使用html原始的提交形式 4.6.3. 单纯ajax 4.7. 验证苦旅 4.7.1. 不能为空 4.7.2. 最大长度,最小长度 4.7.3. 借助vtype 4.7.4. 自定义验证规则 4.7.5....
三层架构是一种常见的软件开发模式,尤其在企业级应用中广泛使用。它将应用程序分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这样的...
新概念作文大赛曾开启了一个青春文学的新纪元,韩寒的《三重门》等作品风靡全国,引领了反叛与个性解放的潮流。这一时期,文学与教育的互动引发了一场关于应试教育的反思,新概念作文大赛的出现为那些富有情感和想象...
一方面,他们紧跟社会热点,结合时事推出相关主题图书,如韩寒的《三重门》等,这些作品往往能引发公众的共鸣,迅速占据市场。另一方面,公司通过精准的市场定位和营销策略,如线上线下活动、社交媒体推广等,有效...
展示区设计借鉴了中国古代宅园模式,通过一重门、二重门、三重门的设置,形成了一进院、二进院、三进院的空间序列,不仅增加了景观的层次感,也强化了访客的体验流程,每一重门都代表着不同的功能和氛围,引导人们...
4. **文学影响**:文中提及韩寒的《三重门》和《零下一度》,显示了作者深受其作品影响,这些书成为了情感表达的载体,反映出阅读对个人情感世界的影响。 5. **音乐与情感**:“我习惯听伤感的歌,写伤感的文字”,...
报告采用了“三重门”分析模型,详细探讨了介入治疗相对于外科手术的优势,以及介入修复和介入置换的个性化路径。随着2021年ESC/EACTS指南对三尖瓣介入治疗的推荐,这一领域得到了更广泛的认可。报告还分析了各种...
韩寒,新生代作家,以其独特的语言韵律和文字技巧,如《三重门》,受到年轻读者的喜爱,但他的作品有时过于注重娱乐性和表面的技巧,缺乏深度和内涵。 通过对这些作家的解读,我们可以感受到文学的多样性和魅力,...
报告中提出了“三重门”理论,揭示了旧模式面临的挑战。首先,金融风险的加剧,新购房家庭的投资需求增加,住房空置率接近欧债危机时期的西班牙和意大利,这可能导致金融稳定性的风险。其次,经常项目恶化,减产限产...