这些资料是我学习的时候在网络上寻找到的,发布出来希望对大家有帮助,一起努力前进,嘿嘿......Microsoft C#规范 2.0 版 GFC用户提交

feedsky 抓虾 pageflakes google reader my yahoo bloglines 鲜果 有道 http://wap.feedsky.com/bliplink
显示标签为“阅读infoQ”的博文。显示所有博文
显示标签为“阅读infoQ”的博文。显示所有博文

阅读infoQ:Visual Studio .NET使用技巧手册

作者 Minh T. Nguyen译者 张立楠 发布于 2007年8月9日 上午2时5分  


 

Visual Studio .NET是微软推出的功能最丰富,扩展性最强的编程工具。VS.NET中的功能与快捷方式不计其数,并且在每一个版本中都会明显增加。不熟悉这些节省时间的功能的话,开发者会错过提高开发生产力和效率的大好机会。

本书主要介绍如何高效使用VS.NET。全书内容分为精练而容易把握的几部分,收录的技巧从编辑代码,到编译和调试,以及VS.NET编译器深入了解等多个方面,对所有开发人员而言都是本必读的书籍,无论他们是否熟练,或者使用哪种开发语言。本书涵盖了Visual Studio .NET 2002, 2003和2005 Beta 1。

在本书中你将读到以下内容:

  • 在编辑与编写代码,使用编译器,对程序进行编译、调试与部署时会用到的120多条技巧
  • 专门描述VS.NET 2005的章节
  • 大多数技巧的键盘快捷方式
  • 90多张图片与截图

免费下载,购买本书打印版

如果你喜欢本书,请通过购买本书的打印版本支持作者和InfoQ中文站,或者: 免费下载这本书(PDF)

 
免费下载这本书(PDF)

 

本书目录

第一章 编写代码

程序员每天通常有这样几项固定任务:参加团队会议,设计我们的程序并进行测试,编写文档,以及重新审视代码。不过写代码是每个程序员都无法逃避的任务。如果你喜欢写代码,VS.NET非常适合你,因为其中有许多帮助你编写和修改代码的功能。这一章中涉及到一些能让你更快捷地编写和浏览代码的提示和技巧。有代码注释和浏览,有生成小代码段和执行复杂的查找替换操作。一切在你写代码时需要了解的事情都可以在这一章里找到。

第二章 探索编译器

VS.NET是一个可高度自定义的功能强大的编译器。屏幕上的每一块区域都可以让你快速访问到常用的命令,执行常用的操作以及对项目和解决方案的控制与修改。本章中收录的技巧涵盖了许多方面,从解决方案浏览窗口到所有窗口的定位,从管理宏,修改菜单项,到其它一些不为人知却对深入了解编译器非常有用的功能。

第三章 编译,调试与部署

VS.NET不仅是一个强大的编辑器,还是同样强大的编译器,调试器与分析器。你可以通过多种方式控制编译过程。要找到程序中的bug,以下步骤是不可缺少的:分析代码,连接你要调试的运行中的进程,然后在运行时修改代码与变量。本章列出的只是你在编译和调试程序时需要了解的几个问题。

第四章 使用VS.NET 2005

VS.NET 2005在2002和2003的基础上作出了巨大的改进。微软把这款强大的工具推上了新的层次。与2002和2003之间的改动相比,2005对2003的改动不得不单独使用一章来描述。本章集中收录了之前的版本中没有的提示与技巧。并不是说之前三章的内容在2005中无效。绝大多数技巧在2005中可以继续使用,或者被进一步加强(除了个别注明的部分)。

本章没有对.NET Framework 2.0,以及新的类和语法花费笔墨。当然,2005与.NET 2.0关系密切,我可能会给出2.0专用的代码,但只是用来描述编译器新功能而已。如果我在这一章中单独提到VS.NET,就是指VS.NET 2005。

这本书是在VS.NET 2005 Beta 1的基础上编写的。VS.NET 2005最终版本可能会与我在本意的描述有所不同。

第五章 其它.NET提示与技巧

本章中收录了.NET方面的专用提示与技巧,其中许多条目与VS.NET并没有本质联系。不过它们对大多数VS.NET开发者会有帮助,所以我还是决定把它们收入本书。.NET新手或许对其中一些内容不是很熟悉。

关于作者

在撰写本书时,Minh T. Nguyen还是Expedia.com的网站开发工程师。他从最早的Beta版就开始使用VS.NET,并定期为.NET社区举行研讨会,编写文章。Minh持有加利福尼亚大学计算机科学专业的学士学位,目前在硅谷的微软TV部门做软件设计方面的工作。

查看英文原文或下载本书英文版:Visual Studio .NET Tips and Tricks



......

[阅读全文]

阅读:InfoQ:金融危机当前,中国软件外包公司独善其身之道

infoQ:金融危机当前,中国软件外包公司独善其身之道

作者 赵万里 发布于 2008年12月12日 上午12时0分
 

2008年对于国人来说可谓多事之秋。始于去年的金融海啸愈演愈烈,以至于IT行业终于也无法独善其身。年关将至,各种裁员,降薪的传闻不胫而走,一时 间,企业人心惶惶,如临大敌。以软件外包为主营业务的企业,理应受到较大的波及。然而环顾四周,情况并没有想象中那么严重。

承受压力,恢复自信,平稳过渡

次贷弊端的突现,楼市的潮起潮落,股市的跌宕起伏,虚拟经济的快速萎缩;工厂倒闭、人员解散……一时间草木皆兵,人们的自信心受到了极大的打击。面对压力,国内企业应该立足自身,正确评估自身状况和所面对的问题,积极寻找应对策略,恢复自信,平稳过渡危机。

以笔者所处的奥博杰天软件公司为例,作为中小型欧美软件外包公司,我们不可避免地受汇率压力的影响;我们的客户也会由于金融风暴的影响而调整它们的市场业 务策略和计划;我们也注意到美国总统大选阶段,奥巴马为了改善美国国内严峻的就业状况,而发表相关不利于印度以及中国外包发展的竞选言论。众多的负面消息 接踵而来,在此情况下我们冷静地分析企业所处的状况,拨开迷雾看本质使我们能够乐观地坚信我们的企业依然能够保持增长的势态平稳地向前发展。我们的客户 (绝大多数在美国)涵盖了制造业,电信,在线票务,在线游戏,金融等多个领域。这种类似于投资中不要把鸡蛋都放在一个篮子里的风险分散理论一样,我们不会 因为某个行业的突然动荡而手足无措。

其次,奥博杰天公司主要是为客户提供全生命周期的软件外包研发服务。在对待研发问题上,我们不可否认客户的远见战略眼光,即使面对经济危机他们大多数也会 保证稳定的研发费用,轻易不会取消这些项目。即使客户由于金融原因暂时延迟新业务的发包,或者推迟其软件产品的上市,奥博杰天长期同客户保持的紧密战略合 作伙伴关系以及客户对公司的认可度都能保证新时期双方的进一步合作。比如在某阶段,某客户的业务有所萎缩,导致客户缩减了我们的开发团队。但是我们没有放 弃客户,而是继续为客户提供优质的服务。这种不放弃的态度赢得了客户对我们的进一步信任。在客户的业务有所起色之后,我们又拿到了更多的项目。再比如,我 们一个客户的高级管理人员,由于公司业务调整,离开了原来的公司。不久,他到另外一个互联网公司担任重要领导职务,并很快就把奥博杰天推荐给他现在的雇 主。短短的数周之后,一个新项目就启动了。而这,就发生在金融海啸掀起最大浪头的时候。综上所述,这也就意味着我们的客户流失风险不大。

此外,美国是一个以市场经济为主导的国家,无论从短期还是中长期来看,企业要想继续发展,最大化地进行成本控制,实现完善的资源优化组合,非核心业务外包将帮助他们摆脱负荷,轻松前进。这也就使得未来政府的行政干预计划变得复杂而难以实施。

因此,笔者认为,软件外包行业受到的冲击没有想像中那么可怕。对于根基深厚的外包企业,甚至机遇大于挑战。外包从业人员也大可不必忧心忡忡。只需适当地调整心态,脚踏实地地做好自身的工作就一定会渡过难关,并迎来更大的发展。

增加企业凝聚力,员工和企业共进退

员工是企业的根本。中国目前软件人才稀缺,企业间人才竞争激烈。通过良好的企业文化和积极的工作氛围保持现有人才并不断吸引优秀人才加入公司。奥博杰天公 司特有的企业文化将员工紧密地凝聚在一起,人员流动率远远低于行业平均水平。工作上,公司为员工计划并提供了多层次、不同能力水平的技术培训、英语语言沟 通能力培训以及演讲能力的提升。工作之外,公司也不忘向员工表达着各种祝福和关心。员工和企业紧紧地凝聚在一起。只有在紧密团结的队伍共同努力下,我们才 能共同面对暂时的困难,出色地交付客户的复杂工程,并不断赢得客户的赞誉。

客户服务是关键

在未来一段时期内外包业务增长放缓的预期下,留住现有的客户显得至关重要。而为留住客户,客户满意度是第一位的。在同客户交往过程中,我们坚持同客户保持 透明化的沟通合作方式。项目的进度,人员的稳定与否,开发的质量等方方面面,都是客户非常关心的。如果我们只对客户报喜不报忧,或者由于担心影响到客户对 我们的信任而不敢把问题暴露给客户,结果很有可能同我们的初衷背道而驰。事实上,大部分客户都是通情达理的。他们往往非常看重解决问题的过程,而不是期望 你永远不犯错误,因为那是不切实际的。即使我们有失误的地方,由于开诚布公的处理方式,也会保持客户的满意度。

对于软件外包行业的从业人员来说,两个核心的能力非常重要,即理解客户需要的能力和有效沟通的能力。理解客户的需要包括多方面的内容,比如客户的商业模 式,业务需求,对外包人员技术能力的要求,产品发布时间,质量要求等等。有时,我们的开发人员过于专注于技术细节,而忽略了客户真正关心的是什么。要记 住,外包是一个服务行业。与其它所有服务行业一样,满足客户合理的要求永远是第一位的,而技术只是手段。对于客户看似不合理的要求,也不要简单加以回绝。 而是要努力站在客户的立场上去理解客户为什么会提出这种要求。而理解客户的要求则需要进行有效的沟通。

赢得客户的信任很难,但毁掉它却往往只需要一个重大失误就够了。所以每个外包行业的从业人员工,无论在经济繁荣时期还是经济萧条时期,不管在哪个岗位,都要牢固树立服务意识,真正把客户的成功放在首要考虑的位置。

技术能力是核心

俗话说没有金刚钻,揽不了瓷器活。IT行业发展飞速,技术更新日新月异。只有不断更新技术人员的知识构架,企业才能跟上世界最新技术的发展步伐,才有和客 户平等对话的资格。作为软件接包企业更要不断完善自身技术体系、软件开发流程和业务交付流程,才能和发包企业在业务上做到无缝对接。经济萧条的时候,也是企业自我充实,并借机弥补原来技术上的不足的最佳机会。

综上所述,面对金融危机,中国软件外包公司理应保持清醒的头脑,充分利用自身的优势,用更大的自信心迎接新一轮商机的来临。

_href="img://zhaowanli.jpg">

作者简介:现就职于奥博杰天软件(北京)公司,任高级项目经理及公司技术卓越委员会组织者。


......

[阅读全文]

阅读infoQ:时刻准备着,迎接IT业的春天

infoQ:时刻准备着,迎接IT业的春天

作者 王晓明 发布于 2008年12月22日 上午12时30分
  

回首十年之前,1995年到2001年之间的互联网泡沫让人印象深刻,尤其是在2000年左右所到达的顶峰,严重挫败了IT投资者和从业者的信心。但IT 行业并未因此而停滞,硬件和软件的创新、Web 2.0、Google以及新一代互联网都重新回到了人们的视线中。而投资人和市场也都对网络经济宠爱有加,例如SNS的成功。更多的投资回到IT产业中来 了,企业也开始对IT进行更多的投入,用以发展业务并依靠创新使得业务保持增长。也许在2000年的时候,没有人曾想到IT会以如此动人而鲜活的姿态回 归。

金融危机和经济衰退

金融机构从来都是世界经济体制的核心。投资银行和基金公司创造出大量的金融产品和工具用以获得更大的利润。而IT技术在构建信息系统用来传递信息、进行高 效风险计算和确保业务持续性上起着至关重要的作用。也就是说,金融系统在极大程度上依附于IT系统。当2008年金融风暴席卷世界每个角落的时候,华尔街 遭受了数个月的梦魇,雷曼兄弟、美林证券和贝尔斯登在一夜之间宣布破产。

而这次金融危机所带来的影响并不仅仅限于其行业自身,众多其他行业也都因为资金流 和投资信心的不足而受到了巨大的打击。很多企业开始缩减开支和增加资金流以应对或更严峻的经济状况,没有人可以忽视世界经济衰退的事实。英国财长在其报告 中指出,英国国民生产总值在今年第三季度中下降0.5%,这表明世界前5大经济体之一的英国已经开始经济衰退。而美国也同样经受着巨大的金融危机袭扰,美 国政府已注资7000亿美元用以救市,但汽车、玩具等众多制造业厂商仍不得不关闭其业务。

IT业面临的挑战

IT行业同样无可避免地会受到经济衰退的影响,对IT方面的投资被大幅缩减,IT机构也开始受迫进行裁员。通常在人们的认知中,IT意味着成本和支出。笔 者近日参加了由中国经济研究中心举办的一个经济讨论,其中一位主题演讲者曾说到:“IT从来没有带来过生产力。20年前,没有IT技术,股票交易所也可以 通过电报来传递信息并完成交易。”尽管该言论并非极尽荒谬而无任何可取之处,但笔者个人还是很不赞同这个观点。

那么,IT是如何帮助企业的呢?简单来 说,IT在提高企业效率的同时,也降低了产生错误的可能性。初看之下,IT并没有直接为业务带来价值,但是如果没有IT的帮助,企业业务将难以如此快速而 高效地增长,而缺乏IT系统支持的服务也将难以达到现有的水准。金融危机对实体经济的巨大冲击间接地放缓了针对IT投资的脚步。现在的IT业正处在一个很 严峻的情况之下。IT行业的出路在哪里?而IT行业是否要为现在的处境而心惊胆战呢?

金融行业的契机

帮助业务更好更快地发展并更多地考虑客户需求将是金融行业现今的出路之一。摩根大通公司CEO Jamie Dimon在近日接受CCTV采访时,曾多次强调摩根大通的成功是来自于更多地关注客户需求,提供更好的产品和服务,以及更加快速的市场反应。以此得出, 如何应用IT来帮助金融行业更好地做到以上几点,将会是IT行业的出路之一。例如:

  • 缩短项目交付周期。
  • 以客户需求为中心的设计和持续改进。
  • 使用云计算和网格计算帮助交易更高效迅捷。
  • 协助分析客户需求偏好的商业智能。

除此之外,IT在协助业务方面还大有可为。美国在本次金融危机中找到的原因之一是缺乏行之有效的监管。为了建立和重组现有的金融体制,大量的新规章制度、 工具和产品将会出现,以降低投资风险并使得整个流程透明化且易监管。这些变化将需要全新的信息系统或对现存系统的重构,而这恰恰是IT能提供的价值。因 此,为包括政府、工业以及商业等多方面的金融系统构建良好的基础是IT业的一个难得的契机。

实体经济需要IT的革新

在经济衰退的大环境中,企业的处境非常尴尬,一方面需要缩减开支,而另一方面,为了赢得更大的利润不得不继续投资并开拓新的商业模式。而因为优秀的信息系统可以使企业业务更快地融入市场,所以无论何种产业都无法孤立于IT业而单独生存。

尽管依旧寒冷,但随着冬末的临近,更多的需求将会慢慢出现,IT的春天还会远吗?

IT业该如何迎接自己的春天

正如Jamie Dimon在接受采访时所提到的,回顾我们曾经犯过的错误,从中汲取教训,而这也是IT业应该从本次金融危机中学到的。如何降低投资风险,如何帮助客户实 现更多价值是值得IT业者思考的。我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的 出路。由此可见,IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!

作者简介:王晓明,英国约克大学信息系统硕士,ThoughtWorks公司咨询师,项目经理,敏捷教练和商务分析师。他拥有在金融、零售、机械加工、石油天然气、HSE、CRM、CMS、BPMS的网格计算等领域的企业信息系统开发的丰富经验。他有超过6年的敏捷项目管理、理解客户需求、系统分析、以及面向对象开发的项目经验。在加入ThoughtWorks公司后,他开始投入到敏捷开发方法的实践之中,在CMMI到Agile的机构转换,项目管理,迭代管理,需求分析、业务过程建模、交互设计、Story划分、面向对象设计和开发方法方面为其它公司提供咨询服务。


......

[阅读全文]

阅读infoQ:官方消息:Visual Studio 2010将正式包含F#

infoQ:官方消息:Visual Studio 2010将正式包含F#

作者 Jonathan Allen译者 朱永光 发布于 2008年12月25日 上午7时47分 
 

在2007年,微软就透露F#将在未来的某个时刻成为.NET平台的头等语言。现在,它终于宣布F#将被包含在Visual Studio 2010中。

F#——微软支持的第一个主要的函数式语言,其基于OCaml。Ocaml被选中的一部分原因是,它支持函数式、命令式和面向对象的混合编程风格。虽然F#和OCaml吸引人们的地方是函数式编程,不过其他重要的方面还包括它们可以利用.NET框架的功能特性。

现在,F#还没有被考虑作为.NET 4.0的特性。而是像J#那样更多地作为一个独立的分发包发布。这样允许微软为F#在Mono和CLR 2.0平台上的运行提供支持。

与另外一个新微软语言的精神相同,F#编译器和工具将在微软公共许可协议(Microsoft Public License)下开源。这一许可协议是所有微软许可协议中最宽松的一个,基本来说你只要保留版权声明并且不对作者提出控告,那么你就可以做你想做的任何事情。

在Visual Studio里,F#并不倾向于被单独使用。虽然微软鼓励开发人员使用F#来构建应用程序的核心,但对于呈现层他们还是推荐使用VB和C#。Don Syme继续解释到:

我们所关注的是,发布一个高质量的F#核心工具,可以增强Visual Studio的实力,让其成为一个具有丰富界面开发能力的面向对象的编程环境。结果,我们做出了一个明确的决定,在这个版本中还是利用C#和Visual Basic的强大能力来作为呈现界面和具有良好设计器支持的编程语言。这意味着,F#用户将要使用Visual Studio设计工具来生成C#或Visual Basic代码,并把这些组件合并到他们的F#应用程序中。

虽然F#超越了OCaml的基础功能,但它没有完全地抛弃它们。通过使用F# Power Pack组件,开发人员将依旧能够编写可被编译为OCaml的F#代码。这就要求使用有限的语言子集,尽管可以期望工具能告知开发人员哪些是只适用于F#的代码,但人们还是会感觉到诸多限制。

Don Syme总结:

F#是微软研究院、剑桥和微软开发部联合进行的高级开发项目。我非常高兴作为语言构架师参与其中,并且我将一直留在微软研究院。我们强大的团队包括了来自剑桥、Redmond、温哥华和中国的人们,一些团队成员还工作在德国和纽约。我一直被这些和我工作于同一个项目的人们和他们展现出的才能所折服,我希望这个项目在微软能成为一个创新开发的带头榜样。

查看英文原文:It's Official: Visual Studio 2010 Will Ship with F#


......

[阅读全文]

阅读:InfoQ: 从玩扑克到软件开发

InfoQ: 从玩扑克到软件开发

(这是以精确和科学度量、方法规则见长的老外的观点。但是会发现在高手级别上,大家不约而同走向了经验、艺术、心理、协作、不确定、随心所欲不逾矩等明显东方特色的所谓人治之方法。这不禁让我想到了最近重新看的,关于汤因比博士,未来是东方智慧的世纪的说法。)

作者 Jay Fields译者 李剑 发布于 2008年5月19日 上午12时57分

我以前不是做软件开发的。在加入ThoughtWorks两年之前,我主要靠玩扑克为生。当然,如果你曾跟我打听过我前臂上的纹身,那你肯定已然听过我的故事了。要是还没有,等下次我们一起喝一杯时,我可以讲给你听。

我从未因为花这么长时间玩牌而感到过遗憾,从中我学到了一些放之四海而皆准的知识。开发软件的时间愈久,我就愈加确信这二者之间具有令人难以置信的相似性。

学习

我学习打扑克和学习软件开发的方式是一样的:尽可能多读书。我用两年的时间,读完了所能找到的每一本有关扑克的书。最后竟至39本之多。编程亦如是。此刻,我面前仍然摆着接下来要读的5本书;而在过去三年ThoughtWorks的工作中,我放火烧掉的书亦不在少数。

我认为,无论编程还是玩牌,阅读书籍、博客与杂志都是要想有所成就的必备条件;而若要以二者为谋生之业,仅靠读书却是远远不够的。也许你可以把书本上的一切知识都装入脑中,但知道在何时应用何种规则,这才是真正高手的标志。

诚然,开卷有益。但总要走过万里路,方能对应用特定技术的具体环境烂熟于心。书本不可能把所有情况都囊括一空,只有通过亲身体会得来的经验,才能让你在某些状况下为自己或是雇主做出快速而正确的决策,而这些决策可能价值几千乃至数百万美元。

经验之宝贵,世间无物可代。

艺术的巅峰

你可以设计出击败普通扑克玩家的计算机程序。遵守一些基本规则,自然就可获胜。但迄今为止,还没有任何程序可以击败最好的扑克玩家。因为扑克技能达到巅峰 时,也就成了一门艺术。软件开发亦如是。要想成为一个还行的开发者,只要遵循一系列最佳实践即可。如果按照经典参考指南一类的书籍行事,开发出还不错的应 用程序应该不成问题,而且效果会胜过其他最常见的做法。有了这么多失败的项目作为前车之鉴,我相信,还不错的应用就足以令大多数管理层甘心掏腰包了。

当然,有些经理有更高的标准。在银行、创业公司、医疗系统等领域,标准则更为严苛。“还不错”自是远远不够。那些经理会很乐意为最佳选择买单,他们期待的 是远超常人的技能。但问题在于,专家级程序员的技能与普通程序员不同。普通程序员知道做事的方式;专家知道做事的目的。普通程序员会僵化跟随模式书籍中的 指示,就如遵守参考指南一般;专家则明白对模式的创新可能会带来指数级的性能改善。

他们看到的绝非同一个世界,所以普通程序员很难跟专家对面交流。做艺术评论家易,做优秀的艺术评论家难。

决策技能

在扑克和编程中有一条绝对真理:几乎没人能像他自我感觉的那么良好。有自知之明是不错的开始,但人们依然很难知道自己与专家之间的差距。程序员接触专家的 机会并不多,也就无法公正评判自己的技能。在牌桌上,每个人都是为了锦标而来,可大多数人都会过高评价自己的牌技,这总是让我惊讶不已。

程序员之间亦是如此,而且大多数人可以获得的信息更少得可怜。一个从不参加任何大会的技术领导人,只能跟自己的团队成员一比高下。当然,他可能已经很优秀 了,否则也不会成为技术领导。但如果与整个行业中最出类拔萃的人相比,他又处于什么位置?如果觉得在自己的圈子里已经一览众山小了,那碰到不同意见时,他 又会作何反应?有些人会视之为学习的契机并为此感到兴奋,但绝大多数都会对不同意见嗤之以鼻。

团队协作

乍看上去,扑克是一种彼此对抗的游戏。但事实很少如是。即使在赌注最小的牌桌上,通常也至少会有几个人常打交道。他们不会达成条件一致对付牌桌上的其他人 ——他们也不必如此。大家都明白一条道理:你不是要去跟牌玩得好的人对着干,赢他们的钱,而是要从水平低的人身上赚钱。专业牌手甚至会像一个团队一样协同 工作。有些人彼此利益相关,故而一人得利则众人均有收益。他们不仅互相了解,而且认识很多人。如果出现一局精彩牌局,楼层经理会跟他们打招呼;侍者会为他 们的对手调制酒精度高的饮品;和手(即发牌者)会故意“犯错”以影响某人心情(很少有人在心情不好的时候能够打好牌)。每个人都在协同工作,确保大家都能 挣到钱。

颇为有趣的是,程序员的情况也与之相似。很多人都坐在格子里,完全依赖自己解决问题。他们往往工作在代码个人独有制模式之下。我曾亲眼目睹,在这种程序员 交付的应用中,集成问题一直都是大家的心病。而更为不幸的是,集成之痛还只是最小的问题。假设IT部门把业务需求锁定为500页的需求文档。如果公司决定 改变业务方向,随之而来的系统变更需求将令人痛不欲生。数以百万计的金钱付诸东流,因为程序员开发的特性已不再具备业务价值,而IT部门还没有找到更好的 方式来应对业务变化。

当然,情况并非总是如此。专家懂得协作。他们会跟其他专家协作,但也不排斥与经理、客户、业务部门、分析师、质保人员,以及所有可以为成功贡献力量的人协作。他们胸怀大局:只有协作,才能让每个人有所收获。

度量

雄心勃勃的牌手常常讨论他们赢了多少手牌,又输了多少手。他们讨论最多的还是本该赢但却输掉的那几手牌。有时人们会犯错误输钱,但他们一般都不会记得这几 手是怎么输掉的。相反的是,如果有些牌局只是因为手气不好而输掉,他们就会记得那一局中的每一处细节,他们还会在故事中透露对手必然获胜的几率,来证明自 己根本没有胜出的机会。真正的牌手知道他们输掉过多少手牌,以及失败的大概几率。他们懂得度量。而且专业牌手会专注于重要的度量标准。你赢了多少手,输了 多少手,这无关紧要;重要的是你赢了多少钱,输了多少钱而且,为你的狗屎运译者注:bad beat,即开局时输家比赢家牌好,赢的几率更大,但关键时刻赢家却来了更好的牌。碰到狗屎运——take a bad beat——用来形容输家,来了狗屎运——lay a bad beat——用来形容赢家)苦恼实际上等于替你对手的牌运犯愁。既然你的收入来自于对手的错误,那你就是在抱怨为什么对手把钱给了你。

有度量标准是好事,不过专业人士懂得哪些标准重要,哪些只会分散注意力,哪些介于二者之间。

软件开发也有很多度量标准,而且有很多标准身上的光环已经远远超出了它们所应有的范围。例如,知道代码行数几乎不能带来任何价值。复杂应用需要相当多的代码,但这个“相当”到底是多少?它得依赖于语言、工具及其他因素。

修复的bug数量也是个很有趣的话题,只是略逊于前一个。为什么人们会在乎修复了多少个bug?Bug数量也许有其价值,但是修复的bug数目并不能为我们带来多少有用信息。

特性完成率是我自己最喜欢把玩的一个标准。除非我们使用特性来评估工作量,否则知道完成了多少特性又有何用?而且,如果已经对工作量做出了评估,那为什么不把剩余工作与已完成工作相比较,从而得到工作进度呢?我很难从特性完成率中看到价值所在

代码覆盖率让我想起了记录狗屎运。这项度量是有意义的,但很多人都没抓住重点。代码覆盖率低意味着可能有问题存在,但是代码覆盖率高只能表示你有一个很大的代码覆盖率数值。高代码覆盖率与高质量之间没有必然联系。

注意人,而不是逻辑

如果看过有玩牌镜头出现的电影,你大概听过这样一句话:你不是在与扑克玩,而是与人玩。此言极是。牌手无疑都是心理学家有时你确实需要某些牌,但拿一手 好牌只是赚钱的一部分而已。一旦有了好牌,你就需要知道怎样利用好它们。你是应该加注,还是先让牌然后加注,还是彻底让牌,还是跟进?这些做法依赖于很多 因素,但关键还是要了解牌桌上的对手。当你得到一手好牌,首要目标就是尽可能多地从对手那里赢钱,而达到这种目的的唯一方式则是想办法让对手给你更多的 钱。了解逻辑可以帮助你赢得几手牌,了解人则可以帮助你赢钱

在交付软件时,人处于同样重要的地位。如果软件只是让一切工作起来,那只要把它变成自动化的工作,事情就容易得多了。但软件却远非功能组合这么简单。在一 场高尔夫球比赛中,人们会卖出软件包;在全家到迪斯尼免费旅游时,人们会签下软件服务合同;为了避免法律纠纷,人们会履行合同去构建已经毫无用处的软件; 为了超越竞争对手,人们会使用软件来加快业务响应速度。

人们使用软件、开发软件、维护软件,或是在某种程度上依赖软件。软件开发与这个世界有着千丝万缕的联系,要把洋洋洒洒的变量组合成简单方程,生产出高质量 的软件,又与登天何异?但是,软件开发高手需要考虑每个人引入的所有已知与未知的变量,做出他们力所能及的推测知道应该做什么会让你受益,而知道必须做 什么所带来的价值却是难以衡量。了解逻辑可以帮助你交付应用,了解人则可以帮助你交付价值。

在残缺的信息下工作

有关这点,刚开始打牌的人处理的非常好:打好每一手牌,老老实实押注,从不虚张声势。这便是了,新手就应该只做该做的事情,除非你的钱多得没地方花了难 点在于如何从初学者的水平提升。大量信息霎那间纷至沓来,你需要注意牌桌上每个人的每一处细节:他们怎样交流,你从前跟他们每个人打过什么交道,他们所钟 爱的玩牌方式,谁在赢,谁在输,凡此种种不一而足。而且,你也不可能知道对手手里的牌是什么,下一张牌又是什么。你所拥有的信息已超出所能处理的极限,而 且这远非全部。

编程亦如是。领域专家无所不知,但把一切都向你倾囊相授却毫无意义。何况,你也不一定需要所有的领域知识。你需要熟悉团队,但同事总有些事情是你永远无法 知晓,或者不能完全理解的。不过,编程高手能够把必要的领域知识融会贯通,掌握团队的动态,并始终提供技术上的真知灼见。他们知道他们永远无法成为百晓 生,他们知道什么事情值得思考,哪些应该置之不理。纵使面前汹涌澎湃的信息仍是残缺不全,他们也总能做出正确的决定。

即时反馈

普通牌手在反馈信息少的游戏中表现最好。因为牌手是根据信息而赢钱的。在5张牌梭哈中只有一轮押注的机会。各位玩家只有一次机会来分析你给出的信息,而你 也只有一次机会犯错。专家级牌手更喜欢多轮的游戏。游戏中的回合数越多,他们就有越多机会从低水平的对手身上捞到好处。他们喜欢即时反馈,并根据反馈做出 调整。在有多个回合的游戏中,每一个回合都可以得到反馈,专业玩家就会根据当前局势调整打法。

编程高手同样喜欢即时反馈。从业务人员即时反馈回来的信息,可以避免你在构建业务应用时走上弯路。从另一个程序员即时反馈回来的信息,可以在软件产品化之 前发现bug。持续集成服务器可以提供即时的集成反馈,从而避免集成之痛。喜欢敏捷的人能马上说出迭代是一个有着显著成效的实践,因为它可以让程序员和业 务人员得到即时反馈。不过,作为一个编程高手,纵使他不喜欢敏捷,他也能够意识到即时反馈的价值;即使在非敏捷的环境中,他也会争取得到更多的反馈,从而 避免浪费时间精力。即时反馈可以让你了解前行的方向正确与否,每一个专家都会珍视这些信息。

上下文为王(也许翻译为现实场景更合适)

无论扑克还是编程,没有绝对正确或是绝对错误的选择。如果你有一对K,那么在翻牌之前你该不跟么?也许吧。这要看你是在打比赛还是赌钱、有上限还是没上 限、你坐在哪个位置上、你是否已经不跟过一次还是已经封顶了等等。我在扑克中学到了一点,那就是在给出答案之前,一定要综合考虑所有的因素。

在编程中沉浸的时间愈久,同样的体会在我心里就愈加深刻。Java在有些时候是不错的选择,但它并非万能。所有的编程语言均如此。工具亦然。 Hibernate很不错,但它不适用的地方还有IBatis,当IBatis也不适用的地方还会出现或自己创造新的解决方案。几乎没有一款解决方案能够 绝对有效,它只有在恰当的形势下才会发挥应有的作用。在错误的环境中,它也许会成为毒药。

所以,面对一门新的语言或者工具,无论是你是打算弃若敝履,或是爱不释手推而广之,不妨先想想它的适用环境,尽量做到对症下药,量体裁衣。

查看英文原文Software Development Lessons Learned from Poker


......

[阅读全文]

友情链接

郑州大学软件学院 SpringWidgets-Blogger 徵信社 翻译公司 链接帮手网 行驶证字体 酷站目录 Friend Connectified