Santé

为明天干杯!
posts - 47, comments - 311, trackbacks - 5, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

首先抱歉,题目可能很难懂。不过不要担心,内容会比较轻松。既然大家都喜欢讲故事,听故事,那我也来编一个故事来开始吧。

说是在很久很久以前,数学还没有被发明的时候,神把发明数学的难题交给了一对兄弟。兄弟二人齐心协力终于发明了0,1到9的数字,却为谁比谁大而争了起来。弟弟坚持认为2比1大,哥哥坚持认为1比2大。二人争执不休,最后到神那里去,要神给吓定论。

神想了想说:嗯,1可以比2大。哥哥听了很高兴;可是神又说:不过,2也可以比1大。

两个人都很不高兴,说,你是神,你怎么还没有主见呢?我们两个人的观点是完全对立的,如果我的观点对了,他的观点正好相反,当然就是错,怎么可能既这样,又那样呢!

神笑了笑说,其实你们的观点是可以共存的啊!当1和2被当作基数的角度来看,2就比1大,当1和2被当作序数的角度看,1就比2大啊。

这个故事说明一个问题:很多看起来完全对立的问题,实际上可能是各种看法都是正确的。

回到正题,这几天园子里的高手们讨论起技术是否重要的问题,捎带着牵连上了创业团队里什么重要、用户需求是否重要、等等很多问题。如果要我来回答,我会大声说:
技术非常重要!
用户需求非常重要!
创业团队里技术以外的东西非常重要!

似乎什么都很重要,没重没轻了是不是?

那换一个思维,如果我现在告诉你我的身高是1米80,请你告诉我,我高不高?

没错,我比1米75的高,比1米85的矮。高矮胖瘦,重要与否都是和其他参照物比较的结论。所以我们无法单纯地说,技术重要,技术不重要。

就拿一个创业团队来说吧,如果这个团队不大重视技术,技术方面瘸腿,那么在开拓市场开拓业务思考盈利模式的时候恐怕就是纸上谈兵,那么对于这样的一个团队来说,技术就很重要,不能因为技术带来木桶短板效应。
但是反过来,如果这个团队本身就是一群技术精英组建的,他们创建的初衷可能是看到了一种未来很好,“看上去很美”的技术前景,而相反没怎么考虑过这项技术的市场适应性、人们的接受能力、以及能否盈利以保证企业运作的方面,那对于他们来说先把技术放一放,好好考虑一下现实也许更好。

OK,我们现在解决了“是否”这个问题;下一个问题就是,软件开发,到底该追求什么?

首先我们站在个人的角度,假设我们自己开发一个软件,而且假设我们不愁吃穿,不需要这个软件来赚钱,你只是凭兴趣来开发它——这样的话,你希望这个软件被开发成什么样呢?我想,大多数程序员可能会想,把这个程序开发得尽善尽美:功能强大完善;体系结构清晰明快;技术精巧细致;界面美观大方;……你注意到了,这里你没有考虑很多东西:成本,工期,客户要求。

因为你是一个人,你在做自由开发;但是,假如你是一个企业呢?
你必须考虑到成本——在当前这个信息社会,一个软件没有做好而亏损几千万的例子并不少见。其次,你要考虑到工期和产品质量的平衡——我们理解你把这个软件做好的心情,但是在客户要求的短短2个月内,你能把客户所需要的功能做好就已经很不错了,哪里还有时间给它增加一些诸如换肤,使用Windows主题之类的花哨功能?此外,很多时候,你可能和客户有不同的意见——你认为这里应该用一个RadioButton,客户却坚持要一个DropDownList——没错,你用你从穿开裆裤小屁孩的时候就开始拥有的计算机经验打赌,客户代表绝对是头不懂计算机的猪——可是,就算他真的是头猪,这个软件最终也不是你用,而是这头猪用,所以没办法,你必须满足一头猪的需要,因为你不满足他,他就会去找别的公司——这世界的竞争太激烈了,伙计。所以我坚信,能满足一头猪的需求的软件公司,才是一个真正能让客户满意的公司

那么,是不是又出现矛盾了呢?程序开发企业是由程序员组成的,而企业和程序员的追求又不同——
没错,企业和员工的目标不尽相同,不仅是软件行业,所有行业都是这样。但是,我们何尝不去追求一种存异求同呢?举个例子来说,你正在思考你刚刚写的代码是不是可以换一种Pattern——比如,Visitor Pattern※参看下文讨论;因为这样似乎将来扩展起来比较容易。这时你的头可能会过来拍拍你的肩膀,Hi,Jerry,这一段代码已经很不错了!你赶快去把下一个模块写好吧!

这时你也许会抱怨——这一段代码只是刚刚能用而已!我还想继续整理它,让他结构更鲜明一些,将来无论是做二次开发还是插件,都会变得容易的!但是,你必须替你的Boss考虑——他的Boss可能刚刚对他说:嘿,Tom,下周五客户就要来验收了,你这个Team的进度却只有40%!

那我们该怎么做?我们不成沉浸在我们艺术家的思维里,我们必须意识到我们不是在玩,我们是在一家企业,做一项实际的工作;我们的确要把工作完成得更漂亮,但是是在有限的时间内!程序有Bug?不够完美?没错!世界上没有完美的东西,程序也是一样!缺一样功能的程序和断臂的维纳斯是一样的不朽之作!

如果你学会了这样想,你可以更进一步——不要等到你的Boss来拍你的肩膀时才意识到这一点,而是在项目的最开始,就能站到和一个项目经理相同的高度——甚至高于他的高度思考问题;在最初设计软件的体系时,就高度意识到工期,用户的环境、要求和条件等等;这样你会发现,你掌握的不仅仅是写程序。


注:由于各位争得面红耳赤,本文是专门博大家一笑的,纯属戏谑,若有不同意见请勿深究,请勿见怪:)

Feedback

#1楼    回复  引用    

2006-07-18 18:19 by 剑在上海^-^ [未注册用户]
小弟不才
"能满足一头猪的需求的软件公司,才是一个真正能让客户满意的公司"
smalldust大哥的观点更倾向于客户需求吧?我能这么理解么?
但作为一个程序员,我觉得追求的更应是技术上的台阶,而所谓成本,工期,客户要求,可能只是在提高 纯 技术时的一些束缚
呵呵,我比较感性,更喜欢不计成本的去完美一段代码

#2楼    回复  引用  查看    

2006-07-18 18:22 by 皇帝的新装      
楼主这里提到的可能实际上就是软件工艺的问题。杀鸡不用牛刀。

#3楼    回复  引用  查看    

2006-07-18 18:25 by 皇帝的新装      
楼主能不能用摘要的方式发表?

#4楼    回复  引用    

2006-07-18 18:50 by passing [未注册用户]
"你正在思考你刚刚写的代码是不是可以换一种Pattern——比如,Visitor Pattern;因为这样似乎将来扩展起来比较容易。这时你的头可能会过来拍拍你的肩膀,Hi,Jerry,这一段代码已经很不错了!你赶快去把下一个模块写好吧"


我觉得您可以看看《重构》前面的部分.

"能满足一头猪的需求的软件公司,才是一个真正能让客户满意的公司"

真的吗?看看ms, oracle,他们从来都不是用户需求导向的,他们创新了一个又一个最优秀的产品,然后让用户去认可,这也许才是真正正确的方式。

#5楼 [楼主]   回复  引用  查看    

2006-07-18 20:12 by smalldust      
@passing

呵呵,谢谢,这篇文章要的就是不涉及一丁点技术,所以里面的“技术”纯属扯淡,给不懂模式的人造成误会和误导了,非常抱歉。[关于Visitor模式,的确我的文章中说的很不严谨。Visitor模式常用在一个杂乱的对象群都有类似的行为时,将行为(算法)和对象分离时;这样行为部分可以具有更高的可扩展性。大概如此,详情请参考这方面的文章]

关于MS,Oracle推出的产品是不是满足用户需求的,我想你只看到了表面:)你可以到微软内部去看看他们是如何把握市场,把握用户的需求和心理的。
所谓客户的需求,并不就只是客户的抱怨和投诉;更多的是客户的潜在需求。我们在上有关《需求分析》的课程时,老师提醒我们最重要的就是,你要比客户更清楚他自己的心理;客户需要的东西很可能是模糊的,朦胧不清的,你要把它具体化,就好像你比客户提前想到他想要的东西一样。

微软正是靠揣摩用户心理,提高用户体验来打败其他OS的(微软DOS比OS/2的易用性);当然还有其他原因(比如垄断,尤其是后期),但是我想微软在需求方面做得也不会差。



@剑在上海^-^
我并不倾向于客户的需求,我已经说了,作为企业把CS(顾客满意度)放在第一位是必然的,因为顾客就是上帝;但是作为程序员,对自己的工作认真对待,精益求精也是必然的。(事实上我就是对自己的程序比较较真的人,我经常无视工期和上面的设计:P)
我认为二者是可以统一的,是不是?:)

#6楼    回复  引用  查看    

2006-07-18 20:23 by edison1024      
前面有人丢了一块砖,总算后面有人把玉丢出来了。楼主好文!

#7楼    回复  引用    

2006-07-18 21:09 by csdm [未注册用户]
相对前面那篇 什么灵魂的 这篇好多了

#8楼    回复  引用  查看    

2006-07-18 22:09 by U2U      
好文章

#9楼    回复  引用  查看    

2006-07-18 22:23 by 高海东      
写的比较实际

#10楼    回复  引用  查看    

2006-07-18 23:03 by idior      
由于各位争得面红耳赤

一点都没看出来。文章写的不错!

#11楼    回复  引用  查看    

2006-07-18 23:05 by 皇帝的新装      
@csdm
站不了那么高,就别说别人矮

#12楼 [楼主]   回复  引用  查看    

2006-07-18 23:34 by smalldust      
@皇帝的新装

-_- hehe ,不要再这里开辟新战场啊,大家好好休息,身体是革命的本钱!

#13楼    回复  引用    

2006-07-19 05:49 by kw2006 [未注册用户]
rules for dev:
rule 1. job is just a job. just do what u r paid for, no more, no less.
rule 2. boss is always right. if u don't agree, see rule 1.
rule 3. if boss is wrong, see rule 2.
rule 4. if boss doesn't need a perfect s/w, see rule 2.
rule 5. if boss doesn't need a s/w easy to use, easy to extend, easy to maintain, see rule 3.
...

rules for boss:
rule 1. job is just a job. just do what customer paid for, no more, no less.
rule 2. customer is always right. if u don't agree, see rule 1.
rule 3. if customer is wrong, see rule 2.
rule 4. if customer doesn't need a perfect s/w, see rule 2.
rule 5. if customer doesn't need a s/w easy to use, easy to extend, easy to maintain, see rule 3.
...

;-)

#14楼    回复  引用  查看    

2006-07-19 07:42 by abeen      
"时你也许会抱怨——这一段代码只是刚刚能用而已!我还想继续整理它,让他结构更鲜明一些,将来无论是做二次开发还是插件,都会变得容易的!但是,你必须替你的Boss考虑——他的Boss可能刚刚对他说:嘿,Tom,下周五客户就要来验收了,你这个Team的进度却只有40%!"
这是比较现实的,现在中小型软件公司都存在这种问题(大公司我还没有去过)。我个人意见:程序员不应该把全部精力放到技术上,技术上懂就行哪样才会有更好的发展机会!

#15楼    回复  引用  查看    

2006-07-19 08:29 by fisher      
真希望园子里将来冒出类似ms, oracle等大玩意的一群又一群创始人.

#16楼    回复  引用  查看    

2006-07-19 09:05 by henry      
所谓客户的需求,并不就只是客户的抱怨和投诉;更多的是客户的潜在需求.
赞同!
当你是这行业的专家时,带着客户走永远比跟着客户走轻松.
我常常听到我们的头说,这个我们要适应那个也要,我们要把产品做适应所有!
实际上我们知道的需求只是我们了解到的非常有限的!

#17楼    回复  引用    

2006-07-19 09:17 by Ray Chang [未注册用户]
经典,呵呵,感觉写的比较现实,想法一回事,现实一回事。人人都知道战争是错误的,照样有人打~
站在不同的角度,侧重点不同,技术,需求,市场就有不同的位置。每样都很重要,就和一个人的五官一样,缺一不可~

#18楼    回复  引用  查看    

2006-07-19 09:35 by Anderslly      
关于孰重孰轻的问题
我觉得主要还是不同人的立场不同导致的

比如老板、项目经理、程序员
老板要的是利润,所以可能觉得他们不重视技术;
项目经理主要满足老板的需求,带领团队完成一个个项目,还比较重视技术;
程序员来完成具体的功能,不太需要去关心技术之外的东西,
所以看起来很重视技术;

#19楼    回复  引用  查看    

2006-07-19 10:06 by edison1024      
@Anderslly

总结不错。^_^

#20楼    回复  引用  查看    

2006-07-19 10:07 by 方子      
能满足一头猪的需求的软件公司,才是一个真正能让客户满意的公司

非常经典.

可惜啊 有些需求者连一头猪也不如啊.

软件追求我想就是如ISO的精神一样:满足不断升级的用户的需求.解决的方法就是:持继改进.

没有一个不变的软件,也没有一个不变的软件能够满足那些不断变化的用户的需求的.

#21楼    回复  引用    

2006-07-19 11:21 by yifeng [未注册用户]
"关于孰重孰轻的问题
我觉得主要还是不同人的立场不同导致的

比如老板、项目经理、程序员
老板要的是利润,所以可能觉得他们不重视技术; "

我都不认为是这个原因,
技术根本没有和利润对立,而是一致的。
投资钱在技术上去开发产品,和投资钱在培养市场上、搞关系上,
都是要消耗,但最终目的都是为了创造利润。

为什么说要的是利润,所以就使人觉得不重视技术。
我的观点是,原因在于老板的角色离市场近一些,而离技术比较远一些。
许多情况下,市场,老板比较理解,愿意投资,知道珍惜,
然而技术,却是多数(差不多全部)老板不理解的,自然,就会有偏颇。

有关系,有市场,有机遇,却死于没有能耐去经营(包括开发技术和项目管理技术),
到最后,连关系也弄破了。这样的例子我见过。
我从业的第一家公司就是典型的这类型公司。
我的一个刚辞职不久的朋友所在的公司从前是有活力的,
但现在技术停滞,人员流失,已经奄奄一息,
(但奇怪的是市场还是有的,直至部门被华为收购的那一刻,人家也是看中他的市场经营成果。)
究其原因,是公司管理重市场轻技术的恶果。

希望自己的公司有长久的生命力,就别怀有幻想可以把技术摆一边,
依靠关系、市场、管理来进行奇妙的化学反应来产生利润。

#22楼    回复  引用    

2006-07-19 11:37 by yifeng [未注册用户]
空对空没意思,

谁来举一个,一家技术力量过硬的公司,产品出众,却因为过于重视技术而放弃了市场,或这样一家公司,不知道因何没有人会做市场,而且又找不到会做市场的人而死掉的例子?

对不起,和博主的主题偏了。

#23楼    回复  引用  查看    

2006-07-19 15:33 by LOCKE      
to yifeng
比较赞同你的意见。
确实,技术和市场确实应该没有太大的对立性。很多公司所谓的轻技术重市场很大程度上是老板自己能力不足而故意的逃避而已。
发现国内的资源分配真是很有问题,很多老板开公司是属于激情大于理性那种,很多事情只求快,不求好,结果浪费时间浪费金钱

#24楼    回复  引用    

2006-07-19 16:23 by 无田耕夫 [未注册用户]
It's Good.

#25楼    回复  引用  查看    

2006-07-19 17:05 by 随心所欲      
有个词叫“技术偏执狂”。说得是程序员一级的人,他们过度在乎自己模块的完美,结果可能导致整个团队进度的滞后。
有类项目管理者,他们好似小龙女,几乎不吃人间烟火,要求项目的结构要完美到无暇,稳定性高,灵活性高..。结果是项目严重拖期。
有类老板,技术出身,居于异于常人的“前瞻性”,希望自己的产品出来就能抗衡微软,两个月就能风靡世界..结果是项目就像摊大饼,越摊越大...

技术该不该重视?绝对该,不重视技术的软件公司就像从不追求自己武功的武者一样,一身三脚猫的功夫,迟早被人PK。
那么过度重视技术呢?那他就像功夫痴迷狂的一半下场差不多:走火入魔。

说来说去,我的看法很简单:
技术无极限,追求无极限,但是公司的资源有极限,适度分配才是要领。
每个时期有不同的追求,不求最好,但求最优。恰当就好,过犹不及。

#26楼    回复  引用  查看    

2006-07-19 19:13 by Eunge      
Good,钱才是最好的!

#27楼    回复  引用  查看    

2006-07-20 15:12 by 横渡      
其实这东西个个都懂。
不懂的人,呵,做程序员真的是很难为你了。

#28楼    回复  引用  查看    

2006-07-26 23:21 by wdong      
满足一头猪的需求的软件公司?

呵呵,我怎么觉得技术人员是在抱怨客户啊,
站在客户的角度想,我花了钱就要我想要的东西,可以么?

#29楼    回复  引用  查看    

2006-08-08 16:38 by Ring      
事事皆矛盾,时时皆矛盾。
开发人员,老板和客户三者之间同样存在矛盾,如何使对立矛盾达到统一呢? 确实是一门很高深的技术。
客户需要的是好用的产品,老板谋求的是利润,开发人员需要把代码写好。
开发人员在项目规定的时间内,把项目做好,让客户满意,这是最基本的道理。

#30楼    回复  引用  查看    

2006-08-20 21:28 by White      
在项目的最开始,就能站到和一个项目经理相同的高度——甚至高于他的高度思考问题

能满足一头猪的需求的软件公司,才是一个真正能让客户满意的公司

文章写的不错,以上表示赞同.

@wdong
可以,我的技术就是要换钱的.
买东西的什么心态都有.有的根本不在乎买的东西怎么样.只是满足自己的感觉(或是别的什么目的),如同500块的衣服同5000块的衣服,商品本身以外,优越感是不同的.PS:老子出钱,你就照老子的要求做,不干,滚蛋,老子找别人去.不信有钱没地方花.

#31楼    回复  引用  查看    

2006-08-21 11:56 by CrazyCoder      
hehe, it's a endless discussion. :)

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-08-27 18:27 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: