随笔 - 89  文章 - 0  评论 - 1250  阅读 - 31万
03 2012 档案
软件工厂是否真的可能存在?
摘要:一点说明:作为程序员,通常心里是讨厌软件工厂的,但很多时候问题自身皆有其内在理性,并不以个人的偏好而改变其发展的轨迹。所以程序员一旦谈及和自身喜好相关的问题时,尤其要摒绝个人好恶,否则就会离问题的真相越来越远,而只有一腔情绪。就我个人观察软件工厂大致处在这样一种地位:经营管理者迫于成本的压力,总是潜在的期望其可能实现;而程序员群体自身则总是对其嗤之以鼻。为什么在经营层面软件工厂有如此大的诱惑力?这不难理解,如果软件可以用工厂的模式来运作,那么程序员的可替换性将被无限强化,这样软件开发的成本就可以大幅度降低。看看近二十年来中国制造的影响,就可以理解这种廉价劳动力所蕴含的巨大杀伤力。经营层面话题可 阅读全文
posted @ 2012-03-28 00:08 理想流 阅读(2064) 评论(18) 推荐(1) 编辑
【设计 = 编码】 VS 【设计 ≠ 编码】
摘要:在1992年,JackW.Reeves发表了一篇名为:CodeasDesign的文章,这篇文章可以在《敏捷软件开发原则、模式与实践》一书的附录中找到。这篇文章的核心观点是:编码也是设计,而软件开发中与建筑行业中的施工所对等的工作,已经被编译器代理了。这是几近20年前的文章,但时至今日,类似的争论仍未休止。好像是在《软件架构设计》里,在讨论架构设计时,作者就点了一句:这总不能说是设计就是编码了吧。解释这一问题并不复杂,但需要用到一点辩证法。我们可以讲:设计即是编码,也不是编码。在别的文章里我们曾经提及,软件是一种固化的思维。从这一角度看,软件构建的核心步骤只有两个:一是明确固化什么,二是对思维进 阅读全文
posted @ 2012-03-21 00:16 理想流 阅读(1830) 评论(2) 推荐(2) 编辑
国内外软件开发上的差距与分析
摘要:--愿与勇于正视现实的人共勉在开始任何其他文字之前,首先有必要正视一个根本现实:国内外软件开发的水平是有差距的。这一结论的最直接证据是每一轮新技术的发起者基本上都是国外的人或公司:从方法论(CMMI,敏捷等)到各种框架(近来很热的Hadoop等)再到新的编程语言都是如此。总的来看这类差距似乎可以概括为“原创的缺失”,大多时候,我们只是处在一种“跟随者”的角色上。RUP出来后我们跟谁RUP,敏捷出来我们跟谁敏捷,云计算出来后我们跟随云计算,大致如此。年纪小的时候,会单纯的以为造成这种局面的主要原因是个人技术能力不足或努力不够。但现在想来,这反倒是次要原因。单以单兵能力来看,国内外的程序员群体未必 阅读全文
posted @ 2012-03-19 00:06 理想流 阅读(4774) 评论(28) 推荐(3) 编辑
编码会不会逐渐消亡?
摘要:很多年来始终有一种声音:编码自身会逐渐消亡,软件开发会越来越像一种组装工作。也就是说,程序员会越来越像IT工程师,他们很少自己从头做什么,而是靠搭配来达成各种目标。我身边就有持这种观点的人。而在《代码整洁之道》一书中,RobertCMartin在开篇处加了这样一段文字:有人也许会以为,关于代码的书将有点落后于时代---代码不再是问题;我们应当关注的是模型和需求。确实有人说过我们正在临近代码的终结点。很快,代码就会自动产生出来,不需要再要人工编码。.......这段文字告诉我们编码会逐渐消亡这种观点即使在国外也有一定的市场。假使说这是真的,那程序员就必然是一个会逐渐消亡的职业。现在的关键问题是, 阅读全文
posted @ 2012-03-14 00:04 理想流 阅读(2349) 评论(9) 推荐(4) 编辑
并行中的正负两面
摘要:大多情况下,并行对复杂度影响过大,并间接导致测试困难---多线程或多进程导致的问题往往是有时发生,有时不发生,一般的测试手段并不足以发现这类问题。所以原则上应该尽可能不用,除非收益足够大。或则说在满足需求的前提下,线程数和进程数应该尽可能少。以多线程和多进程而论,确定“什么时候适合使用这种技术”是比“怎么使用这项技术”困难的多的事情。现实中人们往往对事件,信号灯等同步处理手段关注过多,而对究竟应不应该启用多线程/进程关注的太少。这里来简单做个总结,对于下面这些场景,一般来讲启用多线程/进程是合适的:数据很容易分割,处理不同数据时彼此间没有什么交互。比如说:你有10万个文件需要处理,每个文件的处 阅读全文
posted @ 2012-03-12 00:08 理想流 阅读(1527) 评论(3) 推荐(0) 编辑
代码复用的考察
摘要:复用可以说是任何一个软件企业都不能漠视的课题,因为复用可能对软件的开发效能产生绝大影响,而开发效能直接影响利润,甚至生存。但复用本身将增加当前项目的成本,是一种以当前投入来换取远期收益的行为。与此同时远非所有代码都可以复用,复用本身也有自己内在的一些规律,让我们来试做一些分析。从结论上来说,只有满足下面两条原则的程序,才可能真正的被复用,否则的话只能采用代码级别的复用。第一条原则是,程序本身的职能非常独立与业务层面基本无关联,是功能型的模块(包)。代码中的逻辑表述的是一种关联性,当这种关联只在确定的方面存在的时候,通常我们可以切割出比较独立的模块,而这种模块可以成为复用的基础之一。这也就是常说 阅读全文
posted @ 2012-03-07 07:44 理想流 阅读(2832) 评论(6) 推荐(1) 编辑
项目管理中的导向性
摘要:众所周知,领导与管理意义不同,领导者要决定的是未来的走向和基本的原则策略。管理者则要使用具体的手段,达成既定的目标。但现实中的管理上的问题往往并不只类似于数学,只需要计算和推理,而更类似于社会学,需要许多判断,这也就意味着做管理的时候最终会涉及导向性的问题。软件项目的管理尤其如此。建造一栋房屋和构建一个软件,其不同在于建造房屋的工人需要的是按照设计图纸严格执行,因此纪律要比文化重要。但在软件开发过程中,由于工作和概念与逻辑相关,现场几乎就是一切,如果程序员被定位为被动执行者,那么一切创新和改善皆变的不在可能,因此文化比纪律重要。在塑造文化的过程中,融合在日常行为中的导向性至关重要。可以讲有怎么 阅读全文
posted @ 2012-03-05 00:36 理想流 阅读(2361) 评论(2) 推荐(2) 编辑


点击右上角即可分享
微信分享提示