程序员需要什么样的质量意识?

    有一次我和市场人员去客户那里开会,由于客户是来自好几个方面的人员,会上他们主要在讨论业务方面的相互配合问题,我听得实在无聊,就打开笔记本继续写程序。
    这是一个B/S结构的系统,其中一个模块供用户对某个时间段内的数据进行统计,因此需要一个在页面上选择日期的功能。当然比较常用的方法是在客户端使用Javascript的日期控件,将日期选取到某个页面控件上,传递给后台程序进行处理。我很快就做好了,初始状态下看起来是下面这个样子:
   
    需要选择时,点击“日历”按钮,调用JS控件,弹出选择界面,如下:
    
    选择完毕之后,将日期取到文本框中,最终界面如下:
    
    这其中,为了便于控制,我限定了文本框为只读的,即日期只能通过控件去选择,不能手工输入。做完之后,旁边市场人员看了,就问:
    “你为什么不让他输呢?”
    我说:“要是输的话太麻烦了,我还得限定输入格式,格式不对还得提示,可能还需要做数据类型转换……选罢,这不也挺方便的。”
    市场说:“这样虽然也不太麻烦,但是不够人性化。这种小地方多了,整个系统用起来很不舒服。我发现搞研发的都这样,A部门那边也是,实现功能就完了,也不管好不好使。”
    我说:“唉呀,要做成那样固然好,可是时间紧啊,只能先实现功能再说了。”

==============================华丽的分割线=================================
   
    什么是质量,对一个程序员来说?
    对于大部分人,代码都写得很漂亮很规范,包括排版、注释、命名、大小写等等,而且在入职的时候,一般公司会在这方面有所要求并进行培训。但是在界面方面未必如此,恐怕很少有公司对研发人员进行界面(UI)方面的培训和要求,告诉他们同样一个功能,什么是好的界面,什么是不好的。当然界面不像代码,很难建立一套规范,而且还会有美工去做美化,这也导致了程序员的依赖心理。(实际上美工很少去改变界面上控件的布局、如何操作,因为美工很难介入里面的业务逻辑。)但是这方面还是有公认的原则,比如Gmail,大家都觉得用起来很方便,很人性化,好用,其他的邮箱也在学习它的风格,我相信GoogleUI方面必定有专人来负责、把关。但国内公司对自己产品在操作方面的便捷性、人性化的要求似乎并没有那么严格,至少我所在的公司是这样的。实际上好的用户体验对一个成熟的软件来说是很重要的,这个论证不需要再做了。如果一个东西操作起来无比的别扭,人们必然去找它的替代品。所以对程序员来说,除了代码的正确性、可读性、高效之外,界面的设计和布局,操作的便捷与否,应该也是衡量他工作质量的一个重要标准。
    导致程序员忽视界面质量的原因我想主要有2个。
    1、太麻烦了
    确实,如果要做出好的界面,考虑如何操作更合理、更方便,有时确实比写完代码更费时间。因此程序员们往往在这方面偷偷懒,我不管你点几个按钮,切换几次焦点,只要一系列操作之后达到目的,OK。他的出发点在于怎么去完成界面后面的代码,而不是为界面伤脑筋,在于怎么给自己减少麻烦,而不是考虑用户的方便和感受。
    2、时间紧啊
    这个理由更客观一些,也更堂皇一些。客户就给了这么多时间,你说怎么办罢,当然得先实现所有功能,至于好用不好用是次要的,可以以后慢慢优化。我们可能经常听见这样的话。(不光是在界面方面,也包括文档、设计...)嗯,确实抓住了主要矛盾,但是不是略显推诿和敷衍呢?想想有多少东西是做完之后再去优化的?没人愿意去改动既有成果,修改代码太痛苦,改不好又担心影响功能性....很多东西如果第一次没做好,以后就永远不会去改了。
 
    其实程序员做东西的终极目的是给人用的,脑中时刻存在这样的质量意识,才能使我们做出来的东西不仅能用,而且好用,敢于这样要求自己,才是一个纯粹的程序员,一个脱离了低级趣味的程序员。
    (唔……写这篇文章,主要是为了鄙视一下自己。)

posted on 2007-08-16 16:54 阿多斯 阅读(4930) 评论(53)  编辑 收藏 网摘 所属分类: 项目管理

评论

#1楼  2007-08-16 17:21 乔疯      

纯粹的程序员和脱离了低级趣味的程序员多少钱一斤?一个月的薪水能买多少斤猪肉?   回复  引用  查看    

#2楼  2007-08-16 17:26 sharelai [未注册用户]

公司有自己的类库就不会出现“太麻烦了”和“时间紧啊”问题了   回复  引用    

#3楼 [楼主] 2007-08-16 17:28 阿多斯      

@sharelai
界面类库?   回复  引用  查看    

#4楼  2007-08-16 17:28 loris [未注册用户]

非常赞同楼主的观点

楼上的这种认知水平大概是过不了入门这个坎

当然个人价值取向不同,无可厚非   回复  引用    

#5楼  2007-08-16 17:29 Allen Zhang      

同意楼主,易用性很重要。   回复  引用  查看    

#6楼  2007-08-16 17:29 loris [未注册用户]

楼上的意思是指 乔疯老师   回复  引用    

#7楼 [楼主] 2007-08-16 17:38 阿多斯      

@Allen Zhang
@loris
一点浅见,谢谢支持。
ps.乔疯筒子好像有些郁闷...   回复  引用  查看    

#8楼  2007-08-16 18:27 ZeroCool      

虽然有些细小的功能在我们开来不起眼,虽然不存在困难但实现起来浪费精力不划算,但是,让用户满意,不正是我们追求的目标吗?如果开发的过程中时刻提醒自己要“让用户满意”,质量自然就会不断提高的。   回复  引用  查看    

#9楼  2007-08-16 19:14 小龟爬爬      

看看这个
超级简单好用的JS日期控件
http://www.cnblogs.com/xgpapa/archive/2007/08/07/846985.html
是从帝国里面弄出来了   回复  引用  查看    

#10楼  2007-08-16 19:59 Reeezak      

博主说得不错,的确应该注意质量,我曾经也一直这样要求自己和下属,但是对博主所说的第二个原因觉得反感,因为我觉得你的目光太局限了。

博主对于质量的观点一点都不错,可现实却残酷地摆在我们面前!从对客户负责来讲,或者说从程序员的责任上来讲,或者说从程序员的职业道德来讲,或者说从应用软件真正的目的来讲,我们都应该注意质量,但是事实却是我们是拿老板的钱做事情的,不是拿客户的钱,客户的钱是老板拿的,如果老板要求的是速度(虽然老板肯定不会拒绝“免费的”质量),那么我们拿什么时间来注意博主所谓的质量?用下班的时间吗?我曾经是这样干的,曾经也是这样要求我的下属的,不过从来都得不到好报,直到前些天,我都还是在利用自己的休息时间“注意软件的质量”,而现在,我不这样想了……为什么?老板(至少是小企业的老板,相信就算我成了小企业的老板的话,也是一个样)重视的资金回笼的速度,根本不会去考虑“可持续性发展”(就算有考虑,那也是光说不练),我们现在处于一个资本原始积累的大环境,这个事情也不能怪任何人。当然,我不觉得谁能改变这个现实,但我觉得我们可以适应它,因为世界上有一种东西叫“公平”……

放眼看看周围,负责任的程序员多的是,请不要将“时间紧啊”当作一个“堂皇”的借口,那也许意味着“反抗”……   回复  引用  查看    

#11楼  2007-08-16 20:05 ╃小〥斌╄      

要换位思考   回复  引用  查看    

#12楼  2007-08-16 20:58 随心所欲      

什么样的UI才能更让用户满意?
程序员的答案和用户的答案差距会很大。
所以需要不断的和用户交流,体验用户的操作环境和应能力等等。
所以,需要开会,去见客户-----------可是,你去了怎么就“觉得无聊”呢?
  回复  引用  查看    

#13楼  2007-08-16 22:29 土星的冰人      

一个合格的开发人员都会去重视质量的,但是如同Reeezak说的那样,小公司老板急于回款,会催促你尽快完成功能,所以真的很难,甚至是不可能在有限的时间内考虑用户体验什么的。在这方面浪费太多时间经常是出力不讨好,而当我真的想要回头修改时,这样那样的新项目又会接踵而至。真的很难去克服,毕竟自己不是领导,做不了主。真的很无奈。   回复  引用  查看    

#14楼  2007-08-16 22:51 XP主题 [未注册用户]

客户需要才是最重要的!   回复  引用    

#15楼 [楼主] 2007-08-17 00:52 阿多斯      

@ZeroCool
@╃小〥斌╄
@XP主题
谢谢你们的关注
@小龟爬爬
你提供的js控件不错,我收藏了
事实上,我需要一个既包括日期也包括时间的,所以才选了这个
@Reeezak
非常感谢你这么用心的评论,其实对于第二个理由,我没有展开说,自己也觉得很牵强,毕竟时间和进度,是牵扯到多方面原因的。我非常同意你说的“负责人的程序员多的是”,我的一个同事也很难接受为了进度而降低质量的残酷现实,并且时时回顾以前的代码,总是说“太滥了太滥了。。。”
@随心所欲
理解你所说的,我文中提到的情况有其实际的原因,与主旨无关,并未详加叙述
@土星的冰人
我甚至质疑有些市场人员,为了自己的业绩,不顾研发人员的处境,不管自己公司的实力能否承受得起,没有从各方面权衡这个项目对公司的利弊,就硬挺着接了下来,结果搞得很被动。。。
  回复  引用  查看    

#16楼  2007-08-17 07:53 乔疯      

这个。。。。。。。。。。就当我层次不高吧。
的确是因为太郁闷了才那么说的。

项目开发过程中,最被动的多半就是程序员了吧。很多很好的东西,根本没人去用。为什么?因为那需要时间。

像开发中的单元测试,看起来很美好。也有用想用的想法,可是最终却没有在实际项目中用过。为什么?用这东西在开发初期需要更多的时间,可是老板需要的是最快的时间内看到效果。难道用自己的下班时间来搞吗?反正,现在我没有那么伟大了。   回复  引用  查看    

#17楼  2007-08-17 08:47 周银辉      

同意楼主   回复  引用  查看    

#18楼  2007-08-17 08:50 心悦      

同志们晚上天天加班,那里有心思地弄人性化呢?   回复  引用  查看    

#19楼  2007-08-17 09:01 笑煞天      

第一条就无话可说了.
不过第二条,有时在项目进度之下,什么用户体验,什么web标准,谁还能顾得上.   回复  引用  查看    

#20楼  2007-08-17 09:32 BoyLee      

你听得实在无聊,就打开笔记本继续写程序。。。。   回复  引用  查看    

#21楼  2007-08-17 09:34 风海迷沙      

1,对于限定输入格式,麻烦啊
MS的ajaxtoolkit中有方便的控件,允许使用正则表达式来验证。
对于常遇到的一些问题,我们可以使用现成的东西或是自己给出解决方案来一劳永逸,第一次遇到是麻烦,但是如果总遇到又总是觉得麻烦而不去思考,自身就有问题了,写久了总要沉淀一些小东西吧。

2,时间紧
没错!   回复  引用  查看    

#22楼  2007-08-17 09:48 Clark Zheng      

@风海迷沙
ajaxtoolkit里的mask扩展才是真正的垃圾!   回复  引用  查看    

#23楼  2007-08-17 09:56 xiao_p      

"代码都写得很漂亮很规范,包括排版、注释、命名、大小写等等"
>>现在的很多软件开发中,连这些都做不到,更别说什么给客户使用方便的界面了。   回复  引用  查看    

#24楼  2007-08-17 10:03 oec2003      

楼主的观点我赞同
但不是很明白为什么可以自动选择日期的方式还没有让用户自己输入的方式人性化,让用户自己输入,其一,用户要去敲键盘,显然很麻烦.其二,用户可能不知道要输入的格式,即便是做了很多的判断,但面对一次次的错误提示,也会有不爽的感觉.
我认为要更人性化点可以让鼠标移动到要输入的文本框上时自动出现日历控件
  回复  引用  查看    

#25楼  2007-08-17 10:16 阿牛      

如果让我选择完不成任务的纯粹的程序员,还是选择完成任务的....程序员,
我还是选后者. 因为这样虽不会奖励,但至少不会扣钱   回复  引用  查看    

#26楼 [楼主] 2007-08-17 10:24 阿多斯      

看来需要解释一下
@BoyLee
那次开会讨论的项目,在几个月以前我参与过需求调研,后来根据公司的安排就转手给其他人员了,当时因为具体负责这个事情的人不能及时到场,领导考虑到只有我对这个项目还有些了解,加上本人表达能力也还不错,临时抽调俺上去顶一顶的。但那天具体负责人还是赶到现场了,因此俺就闲呆着,俺“打开笔记本继续写程序”...
@风海迷沙,以及前面的@随心所欲
写的是写的另外一个项目,与会议无关,ASP的,帮朋友做着玩,里面没有ajaxtoolkit,没有验证控件。但我同意你说的,要积淀,否则就没进步,我只是拿这事举个例子。其实我当时手里有利用正则表达式验证输入格式的JS现成脚本,不过懒得去找...所以才说没有质量意识。

另外看了@乔疯@心悦@笑煞天的回复,我近期结的一个项目也是,我们老板并没有施加内部压力,时间上的压力完全来自客户,(ps.客户是IT专业人士),相信客户也明白时间紧出不了好活的道理,而他们应该是最关心软件质量的一群吖...我有一个结论,国内软件业质量低下,甲方要负相当一部分责任。   回复  引用  查看    

#27楼  2007-08-17 10:34 ╃小〥斌╄      

@oec2003
其实还是要为客户考虑多一点 , 比如客户想输入1982/01/02 结果 选择的时候选择成了1981/01/02 这个时候你说是用键盘简单修改一个字好呢 还是重新选择呢?

让客户自由度高一点,选择方式多一点,才算是人性化 。 否则用户只有通过选择来输入谈何人性。。   回复  引用  查看    

#28楼 [楼主] 2007-08-17 10:41 阿多斯      

@xiao_p
无语一下,其实说“很漂亮很规范”要求太高了,但是至少具有较好的可读性,符合公司或者项目组的编码规范,就可以了。
@oec2003
可能我没描述清楚,我那个同事的意思是同时支持选择和录入,不是只支持录入。
@阿牛
饭碗重要,还是可以理解的...
@╃小〥斌╄
赞!你说得太准确了。
  回复  引用  查看    

#29楼  2007-08-17 10:47 靶子 [未注册用户]

不是写程序的问题,是设计的问题 。
如果设计如此,那编码自然如此了。   回复  引用    

#30楼  2007-08-17 11:02 freeliver54      

在建筑过程中
不管是代码工人
还是架构设计师
做为程序员
都应当需要和具备 尽善尽美的质量意识
做为自己的产品
每个人都应当尽心自己的工作
因为那都是自己的人生的轨迹
我们应当负责
  回复  引用  查看    

#31楼  2007-08-17 11:07 Muse      

对于日期的输入,我们的做法是建议用户输入日期,即使使用日期控件也只是为了那些对计算机的应用水平很低的操作员。
用户输入一串数字后,由程序进行判断用户输入的是什么日期(当然判断有错的时候),因为日期是一种比较有规律,有一定范围的数据,比如一般情况下输入的都是今天以前的日期,我们的日期都是按照年、月、日顺序的,一般输入的日期都是最近几年或几十年的,月份最大12,大部分时间输入的是当年或去年的日期,如果输入今年的日期,则可以忽略年部分,如果输入以往的日期,年部分也只需输入2位等等。
经过若干种条件的限制和匹配以后,你会比较准确的判断用户输入的是一个什么日期。
实际上,用户使用的时间长了以后,键盘的输入要远远快于控件选择速度。

使用计算机的目的是为了提高人们的工作效率,而你的软件用起来很麻烦,甚至麻烦的比手工工作效率还低,那客户为什么还要上这个费力不讨好东西呢?
作为程序员,似乎一切都听老板的,老板的一切都听客户的,但是很多事情,你需要跟老板讲清楚,让老板跟客户讲清楚,即我要做一个让你的工作效率大大提高的工具,所以要花很多时间来做这个事情,因而,不要在时间上限制太多,另外还有一个附加的效果就是,因为我做的产品是非常好用的,产品质量和它产生的效益不是其他竞争对手能比的,所以——客户,您多出点儿血吧:)
  回复  引用  查看    

#32楼  2007-08-17 11:32 乔疯      

有的兄弟太过理想化啊,太过天真啊。   回复  引用  查看    

#33楼  2007-08-17 12:03 Addie      

1、这是个UE问题
2、程序员不应该为UE负责
3、贵公司缺少专门UE负责人
4、在公司没能力搭建UE专业部门时,应该由产品人员负责。
  回复  引用  查看    

#34楼  2007-08-17 12:12 ╃小〥斌╄      

@Addie
有专门UE负责人的公司还是少的 吧
而且上面也说了 这个并不是公司项目。
显然没有仔细看完, 作为开发人员 还是不能太盲目下结论。
  回复  引用  查看    

#35楼  2007-08-17 13:01 Addie      

与项目是否属于公司无关
我的观点是, 程序员不应该为UE负责, 也无法为UE负责.
  回复  引用  查看    

#36楼  2007-08-17 13:43 ╃小〥斌╄      

那也许对程序员这个概念的理解不一样。   回复  引用  查看    

#37楼 [楼主] 2007-08-17 13:54 阿多斯      

@freeliver54
@Muse
两位都认为程序员(开发人员)应该为自己的产品负责,事实上我的感受是,一个对自己认真的人也必然对自己的产品认真(比如我前面回复里提到的我一个同事),但国内的环境就是如此,很多时候我们的产品并不是拿给谁用,而是拿给某些人充门面充政绩,这里面牵涉的问题太多,不是这篇小文所能讨论的。至于Muse兄提到以质量为由说服老板向客户提出时间和“血”的宽限,说实话,个体很难对抗或改变整个环境和机制,这很难。
@靶子
@Addie
二位提到UE的设计和负责(靶子所说的“设计”应该也是指UE方面罢)问题,但确实就像@╃小〥斌╄所说,有专门UE负责人的还是少数,至少我们公司没有(研发人员也接近200人了)。我不敢苟同@Addie所说“程序员不应该为UE负责”的看法,否则那些广受欢迎的共享软件(也包括一些开源项目),它们大都是个人作品,谁为它们的UE负责?虽然现在分工细化了,但还是要提高自己出品的质量,难道有了测试人员,程序员就可以对自己的代码不做单元测试了?
  回复  引用  查看    

#38楼  2007-08-17 14:20 Muse      

@乔疯
没有理想,哪来的事业?
不是理想化的问题,很多事情是要身体力行,不能依靠想象,你的想法很多时候是想当然的,真正尝试几次,就会发现,太多的事情和你想象的不一样了   回复  引用  查看    

#39楼  2007-08-17 14:28 乔疯      

@Muse
希望如此。   回复  引用  查看    

#40楼  2007-08-17 14:28 乔疯      

在看<<code complete2>>的时候,书中就提到要把程序员当人看。希望吧。   回复  引用  查看    

#41楼  2007-08-17 16:25 杨正祎      

界面和ue部分其实不应该由程序员来设计。

分工不够细导致这样的情况,但是国内企业就是这样?怎么办?总结,归纳,到底什么样的是用户喜欢的。什么样的是用户可以接受的。什么样的是绝对不能接受的。   回复  引用  查看    

#42楼  2007-08-17 17:34 abc [未注册用户]

很多程序员是这样想的:功能实现就行了,做那么好那么复杂,到时候被测试组测出bug,还不如简单点功能实现就算,自己给自己找麻烦   回复  引用    

#43楼  2007-08-17 17:42 QuickLee [未注册用户]

最近也碰到需要日历控件的要求,不过我要的是只选择时间不要日期的控件,如:11:30.网上找了半天都是选日期或日期时间都有的,就没有我要的.   回复  引用    

#44楼  2007-08-17 17:59 sekihin      

是呀就和卖烤鸭一样,想要卖得出去,不仅要好吃,还要好看。
如果能做的形似肯德基,麦当劳那样方便食用的香炸鸡腿,再注册个商标,那就发定了。   回复  引用  查看    

#45楼  2007-08-18 01:35 Muse      

@阿多斯
“至于Muse兄提到以质量为由说服老板向客户提出时间和“血”的宽限,说实话,个体很难对抗或改变整个环境和机制,这很难。”
这个观点我是认可的,而且确实有很多只管做,不管用的“面子”工程,但对于那些“面子”工程,我们也没有必要讨论易用性或者代码质量问题,既然讨论到代码质量、程序性能、用户的易用性等等问题,这就不是一个“面子工程”,那么就有机会说服客户。
这件事情我不是光说说而已,而是正在做的。我们公司是做产品的,一般不接项目,但是去年年底的时候接到一个项目,不太大,答应今年3月份测试,6月份验收,但我们的要求是,产品必须要好用,而且是以我们的要求为标准的(因为这个项目的核心块功能是我们新产品中用到的主要功能之一),而且开发时间可能要拖后,我们说了一个价钱,客户没有砍价,直接答应了,他们也认可宁可晚一点,也要一个好软件。
这个项目我们到现在还没有交付,但是我们仍然按照我们的认可的标准去写代码和测试,客户也很着急(后天去机场接他们领导:)),但是对我们的程序一直是很认可的。
我们公司几乎不接独立项目,可能是我们幸运,就是遇到一个好的客户了。但是我觉得,很多事情确实是我们不认可却要去接受的,大家都去努力改变它,早晚还是会变好的。   回复  引用  查看    

#46楼  2007-08-18 01:41 Muse      

@QuickLee
时间也要选?直接输入时间不就行了?比如12:30,就让用户输入1230或者12.30,自己简单的做个格式化就OK了呀,难道这也要用鼠标点?
考虑画一个时钟,然后拖着它的指针转呀转呀...
或者....
没见过这种需求,一下子还真是想不出来时钟控件应该是什么样子:(   回复  引用  查看    

#47楼  2007-08-18 07:59 补丁      

没必要一杆子打死
两方面都有理由,应视具体情况具体分析   回复  引用  查看    

#48楼 [楼主] 2007-08-23 16:57 阿多斯      

@Muse
嗯,你们这个客户确实不错,很信任你们,不过大多数的乙方可没有这样的运气。你们能坚持这么做,确实值得佩服。   回复  引用  查看    

#49楼  2007-08-25 19:51 BG      

一分钱一分货!!   回复  引用  查看    

#50楼  2007-08-26 13:37 ricky [未注册用户]

在时间被钉死的情况下,如果可以削减功能,我就能保证质量;如果功能也不能削减,只能降低质量……
这是客观的决定,虽然我最不愿意的就是降低质量。   回复  引用    

#51楼  2007-08-29 18:06 itwalker [未注册用户]

有这样的想法挺好,如果再有一个“什么样的产品意识”的思考就更好。   回复  引用    

#52楼  2007-08-29 19:11 alan [未注册用户]

须要一个库。(看看中国的动画,再看看日本的动画)。
须要一个分工明细。(难得ms没有???,看看ms的altas?)
须要责任感。(想想你们的软件会有多少客户下单。。再想想如果你是客户。。)
须要团结。(回忆日本当年入浸中国的时候。就算在中途被我军突击。也是三个三个一组的。。。)
。。。
所以所以。。。重要的是:老板们,请付给你们程序员多一些money吧。想想软件像ms一样。。。。。。   回复  引用    

#53楼  2008-07-18 23:59 yellowyu      

谢谢,突然明白了一些.......   回复  引用  查看    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-01-02 20:48 编辑过
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》



相关文章:

相关链接:
 

导航

公告

 念念之中,不思前境。
 若前念、今念、后念,
 念念相续不断,名为系缚。
 于诸法上,念念不住,
 即无缚也。
          ——坛经·定慧品

我的邮件:xyyyy.com@gmail.com
我的MSN:xyyyy.com@gmail.com

 
 
  Locations of visitors to this page
<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

统计

与我联系

搜索

 

常用链接

留言簿(6)

我参与的团队

随笔分类

随笔档案

My Friends' Blog

积分与排名

最新评论

阅读排行榜

评论排行榜