找回密码
 申请新用户
搜索
热搜: 活动 交友 discuz
查看: 6635|回复: 5

行进中开火(zt)

[复制链接]
发表于 2004-6-28 09:56:41 | 显示全部楼层 |阅读模式


刚才准备备份硬盘资料时发现了这篇老文章,相信不少朋友应该看到过。我觉得不错,转到这里来了:


作者:Joel Spolsky

Joel Spolsky 是纽约市一家小软件公司 - Fog Creek Software的创始人。
他毕业于耶鲁大学,曾在美国微软公司,Viacom, Juno任软件设计师及经理。

译:Siyan Li 李思延
编辑:Paul May 梅普華
2002年1月6日

  时不时,总有一阵儿,我什么事也干不了。

  我也去办公厅,东瞄瞄,西看看,每隔十秒钟查一次电子邮件,网上逛一圈。也许干点象付运通卡账单之类不需要大脑的事。不过要回去哗啦哗啦写程序,可没门儿。


  这种不出活的状态,一般通常会持续一两天。在我的软件开发生涯中也有过几个星期干不了活的时候。就像他们说的,我不在状态,我进入不了情况,我找不到组织。

  人人都有情绪波动,有的人温和一些,有的响动大点儿,也有的可以整个乱套。但不管怎么着,那段不出活期似乎总是跟忧郁有点儿关系。

  我不由得联想到那些专家说,人们基本上控制不了自己吃什么。任何节食计划都长不了。大家总是悠回各自的正常体重。也许作为一个软件工程师,我也不能控制什么时候最能出活。我唯一希望的就是发呆那段能被哗哗干活那段扯平,最终还能混碗饭吃。



  自从我干上软件开发这一行起,我平均每天只有两三个的高效时间。这真让我头大。我在微软实习的时候,另外一个实习生告诉我,他每天12点上班,5点下班。5个钟头还包括午餐时间,但他的同事还对他特别满意。因为他干的活比一般人都多。其实我也一样。我每天只有两三个小时的高效时间。看着别人那么卖力的干,还有点不好意思。不过呢,我总是组里出活最多的。由此可见,“人件理论”和极限编程都坚持不加班,每周只干40小时,还是有点道理的。他们都清楚这么做不会降低一个小组的生产能力。

  每天只能干两小时还没让我太担心,真让我担心的是完全干不了活的那些天。

  我老想这是怎么回事儿。我努力回忆我出活最多的时候。估计是微软把我搬到一间漂亮的新办公室的时候。舒适豪华的办公室,窗外风景如画,窗对面樱桃花开满了石头堆砌的庭院。所有的一切都那么恰到好处。我马不停蹄地干了好几个月,一口气把Excel Basic的详细设计搞定。用象纪念碑那么高的一叠纸,详细描述了一个超大型目标模型和编程环境,工作之细致,令人难以置信。我自始至终就没停过手。去波士顿参加MacWorld I的时候,我都带着一台手提电脑,坐在哈佛商学院的大阳台上把Windows类别的所有文件都写完了。

  按步就班并不难。通常我一天是这样度过的:1,去上班。2,查电子邮件和上网等等。 3,考虑是否应该吃完中饭在开始干活。4,吃完中饭回来。5,查电子邮件逛网。6,终于决定应该开始工作了。7,查电子邮件逛网,东瞄瞄,西看看。8,再次决定应该开始干活了。9,打开该死的编辑器。10,一直写些程序写到晚上7:30,写到忘记时间。

  在以上第8步和第9步之间似乎有点缺陷,因为我不是每次都能顺利地执行下去。

  对我来说,启动是唯一的难题。静止物体在不受外力作用的情况下会保持静止。大脑里有些物质的质量大得不可思议,让它加速太难了。但是只要速度上去了,在全速行使的情况下,倒不用使什么劲就能继续走下去。就象骑着自行车去作一次自费横穿美国的旅行,一开始,你根本想象不出要花那么多时间让车轮动起来,可是一旦动起来了,让它们继续转就不是一件很难的事了。



  也许高效率的关键就:启动起来。配对编程法之所以成功,说不定就靠两个人在一起,互相强迫对方启动起来。

  我在以色列当伞兵时,一次,有个将军来给我们讲实战战术。他告诉我们,步兵战术其实只有一种:行进中开火。你一边开火一边朝着敌人冲过去,火力让敌人抬不起头来,不能朝你开火 (当一个军人喊:“掩护我”的时候,他的意思就是“在我冲过街时候,你朝敌人猛烈开火,迫使他猫起来,没法朝我开火)。前进了,你就可以占领阵地,接近敌人,这样你的胜算要大的多。你要是不往前冲,敌人就有时间来搞清楚形势,这可不妙。你要是不开火,敌人就要朝你开火,撂倒你。



  我很长一段时间都在想着这个教导。我想通了不论是战斗机空中格斗还是大规模舰队攻击,大部份军事战略战术都是以行进中开火作为基础的。我又花了十五年时间才想通了行进中开火也是一个人在现实生活中成功的基本原则。你每天都得往前进点儿,不用想你写的程序怎么差劲,怎么卖不出去,只要你不停地写,不停地改,滴水也能穿石。同时,要注意你的竞争对手朝你开火。他们是不是想让你全心全意应付他们地扫射,好让你往前走不了呢?

  想想这些年来,微软开发出来的资料存取方法,从OBDC,RDO,DAO,ADO,OLEDB直到现在的ADO.NET,不停翻新,技术上有必要吗?还是因为那个设计组实在蹩脚,每过他妈一年就得重新发明一遍资料存取技术?(实际上可能真是)。它最终的效果其实是一道掩护火力,让竞争者别无选择,只能把本来该用来开发新功能的宝贵时间都用来移植和升级了。仔细看看软件行业,干得好的公司对那些大公司都依赖最少,不用把所有精力都用来为赶潮流而把程序重写一遍,还得修改那些只有在Windows XP上才会出现的缺陷。那些花太多时间去猜测微软未来发展方向的公司,日子都好过不了。有些人见了.NET就发怵,忍不住要按.NET来完全重建自己的体系结构,以为自己别无选择。哥门儿,看清楚了,微软是在朝你开火呢,而且这只是掩护火力。这游戏就是这么玩儿的。这样一来,他们就可以大步朝前走,而你却不能。你要支持Hailstorm吗?SOAP呢?还有RDF?是因为你的顾客需要,所以你支持它们?还是因为有人朝你开火而你觉得应该还击?大公司的营销部都懂火力掩护。他们到客人那儿就说,“你们不一定非买我们的。谁的产品最好您就应该买谁的。不过,我们想提醒您,在下单之前最好先确认他们支持(XML/ SOAP/CDE/J2EE)。否则你们就会被他们的技术套牢。”。等到小公司去向这个客户推销的时候,那个听话的CTO就会问他们:“你们有J2EE吗?”。他们回去就只好不管卖不卖得掉,都埋头打造他们的J2EE。他们也就再没有机会来展示自己的特色了。其实,这只不过是个打勾功能。因为有个打勾拦在那儿空着,你就必须有这个功能。其实谁都不需要它。这就是火力掩护。

  对于我这样的小公司来说,行进中开火意味着两件事。别跟时间过不去,同时你还得每天都进步。天不负苦心人,你终有出头的一天。我昨天花了一天时间只不过让FogBUGZ的颜色稍微好看点。这不要紧,只要不停步。最重要的是,我们的软件越来越好,客人越来越多。在我们达到Oracle的规模之前,我们并不需要通盘战略。我们只需要每天早晨到办公室来,别多想,打开编程器。
发表于 2004-6-28 17:54:19 | 显示全部楼层
想想这些年来,微软开发出来的资料存取方法,从OBDC,RDO,DAO,ADO,OLEDB直到现在的ADO.NET,不停翻新,技术上有必要吗?还是因为那个设计组实在蹩脚,每过他妈一年就得重新发明一遍资料存取技术?(实际上可能真是)。
——————————————————————————
哈哈,我一直是这样认为的。我还认为vc的设计真是超级烂(那个设计vc的小组说不定也很蹩脚)。虽然我已经习惯用它了。
回复

使用道具 举报

 楼主| 发表于 2004-6-30 08:41:56 | 显示全部楼层
不过我觉得vc的调试功能还是很强大的!
回复

使用道具 举报

发表于 2004-6-30 09:22:08 | 显示全部楼层
其实贬低微软不会给程序员本身带来任何好处!

关键是如何学习微软优秀的传统与风格!
回复

使用道具 举报

发表于 2004-7-4 12:31:47 | 显示全部楼层
这是我来广州后的第四家公司。对我来说,应该积累更多的经验,甚至是打下一些物质基础。跳槽过于频繁使我面对面试人员不知该如何解释。但接触更多的公司是有好处的,不仅接触了更多的项目运作方式,或许也能够兼收并蓄,促使自己尽快的进步。实际上项目失败(指完全按计划)的十之有六,现在的这家公司似乎也危机重重,骨干对我说呆的太长想换个环境,而这只能说,另外两个同事的水平实在还是在初级阶段,虽然有一位己经有一年的JAVA经验。

写代码时的心情与气氛相当重要。状态的好坏直接影响到我们的工作效率的高低。

我觉的程序员大多数还是以实用原则为主,写出来的代码主要还是为了完成功能。这段时间开始研究《设计模式》,看了几章,佩服的不行。或许这才是软件的艺术。

JAVA并不是一杯咖啡,从某种意义上说,它也注定需要慢慢地品茗。而.net却是一杯白开水,来吧,这比JAVA要简单。而且,如果你想写共享软件。你最好忘了你的JAVA。

明年的时候,我会接触一些Visual之类的IDE,以后该做什么,真的是一件让我感到浮躁与焦虑的事情。
回复

使用道具 举报

发表于 2004-7-5 12:58:44 | 显示全部楼层
以下是引用苏飞在2004-7-4 12:31:47的发言:
而.net却是一杯白开水,来吧,这比JAVA要简单。

如果你对net不了解的话,我可以原谅的你的评价!
如果你真正了解net,你自己也不会原谅自己说出这样轻率的表达!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 申请新用户

本版积分规则

守望轩 ( 湘ICP备17013730号-2 )|网站地图

GMT+8, 2024-4-26 21:45 , Processed in 0.027865 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表