phptext.net PHPText.Net
PHPText.Net > 文章 > 技术 > WEB开发

国外技术大牛通过12条测试让你更好地编程(下)

2017/05/19 23:58
8人阅读
本文是PHP100中文网原创翻译,转载请看文末的转载要求,谢谢合作!你听说过SEMA么?它是一个用来测试一个软件团队有多好的相当深奥的系统。不,等等!不要手贱点开这个链接!它花费你大概六年的时间来了解这个东

本文是PHP100中文网原创翻译,转载请看文末的转载要求,谢谢合作!


 

       你听说过SEMA么?它是一个用来测试一个软件团队有多好的相当深奥的系统。不,等等!不要手贱点开这个链接!它花费你大概六年的时间来了解这个东西。我所我提出了我自己的,跟它相比极不负责任的,草率的评价一个软件团队的质量的测试。这个测试最棒的方面是它只会花费你3分钟的时间。你节省下来的所有时间,还可以去上个医学院。

Joel测试

       1.你使用源代码管理么?

       2.你能在一步之内编译程序么?

       3.你每天都编译代码么?

       4.你有bug数据库么?

       5.你在写新代码前会修复bug么?

       6.你有最新的日程安排么?

       7.你写代码有规范么?

       8.程序员有安静的工作环境么?

       9.你使用钱能买到的最棒的工具么?

       10.你有测试人员么?

       11.来找工作的人在他们面试的时候会写代码么?

       12.你会做走廊可用性测试么?


       Joel测试的好处是很容易快速得出针对每一个问题的“是”或“不是”。你不必去翻出那些每日编程行数和每个拐点的平均bug数。如果你的团队有一个“是”就得一分。关于Joel测试令人失望的是,你真的不应该用它来确保你的核电站软件的安全。

       获得12分是完美的,11分也还可以容忍,但10分或更低的分数表明你有严重的问题。事实上,大多数软件企业都以2分或3分的分数在运转着,他们真的很需要帮助,因为像微软这样的公司一直以来都以12分的完美表现在运转。
当然,这些都不是决定成败的唯一因素:特别是当你有一个正在开发没人要的产品的伟大的软件团队的时候,那么,人们是真的不会接受这个产品的。同时一个没有这么做的“神枪手”仍然能产生出令人难以置信的改变世界的软件也是可能存在的。但是,在其他条件相同的情况下,如果你把这12件事情都做好了,你就会拥有一个能始终如一完成任务的团队。

7.你写代码有规范么?

       书写规范就像牙线,每个人都同意这是一个很好的事情,但却没人做。

       我不知道这是为什么,但很可能是因为大多数程序员讨厌写文档。结果,对一个大部分有程序员组成的团队遇到了一个难题的时候,他们更倾向于用代码来表达他们的解决办法,而不是用文档。他们宁愿埋头写代码而不是先写一份规范。

       在设计阶段,当你发现问题时,你可以很容易地通过编辑几行文本就修复它。一旦开始写代码,修复问题的代价就大大地提高了,无论在感情上(人们讨厌扔掉代码)还是在时间上,所以这时候修复问题是有阻力的。不是从规范开始建立起来的软件通常会很糟糕地结束设计,并且日程安排会不受控。这个在Netscape好像已经成为大问题了,Netscape的前四个版本慢慢变得一团糟,然后管理层愚蠢地决定抛弃旧代码再重新开始。然后他们又在Mozilla上再一次犯了这个错误,创建了一个失控的怪物,并且浪费了好几年时间才又回到初始阶段。

       我的一贯主张是,这问题可以通过把程序员送去学习写作的集中课程,把他们变为差不多的写手来解决。另一个方案是雇佣一些聪明的程序管理人员,让他们来写代码规范。在这两种情况下,你应该执行简单的规则“无规范不出代码”。

8.程序员有安静的工作环境么?

       广泛的记录表明,通过给知识型员工提供空间、安静和隐私就能提高生产力。经典的软件管理书《人件》就广泛地记录了生产力受益于这些方面。

       问题来了。我们都知道知识型员工随着“灵感流动”工作最好,就是我们所说的“进入状态”,在哪里他们会全身心专注于他们的工作,并且完全脱离了周围的环境。通过绝对的专注,他们忘记了时间,产生出伟大的代码。这是他们把工作完成的过程。作家、程序员、科学家,甚至篮球运动员都会告诉你要进入状态。

       问题是,进入状态并不那么容易。当你尝试去考量它的时候,在最大生产力下好像需要15分钟才能开始工作。有时,如果你累了或那天已做了很多创造性工作时,你就是进入不了状态,你会把这天剩下的时间都用来摆弄点什么,看看网页,或玩玩俄罗斯方块。

       另一个问题是,很容易脱离那个状态。噪声,来电话,出去吃午饭,不得不开5分钟车去星巴克喝咖啡,还有被同事打扰--尤其是被同事打扰--都会把你从那个状态里拉出来。如果同事问你问题,导致了一分钟的中断,但这个会很悲惨地把你从状态里脱离出来,你的话费半个小时才能再次变的高效起来,你的整体生产力会遇到很大的麻烦。如果你在一个含咖啡因的网络公司喜欢创造的嘈杂的牛棚一样的环境里,有营销人员在程序员身边尖叫着打电话,你的工作效率会大幅下跌,因为知识型工作者一次又一次的被打断,一直都进入不了状态。

       对程序员来说,这就更难了。工作效率依赖于能够同时在短期记忆中兼顾很多小细节。任何类型的打断都会导致这些细节轰然倒下。当你重新开始工作,你已经记不起任何细节(比如你刚才还在使用的本地变量名字,或你刚想出来的实施搜索算法的好点子)了,你不得不一直回想这些事情,这会让你变得很慢,直到你重新变得高效起来。

       这有一个简单的代数运算。可以这么说(有证据暗示)如果我们打断了一个程序员,即使只有一分钟,我们真的会失去15分钟的工作效率。在这个例子里,我们假设有两个程序员,Jeff和Mutt,在一个标准的相邻开放的格子间里。Mutt记不起strcpy函数的Unicode版本的名字。他可以查一查,这需要30秒,或者他可以问问Jeff,这需要15秒。因为他就坐在Jeff旁边,所以他选择直接问Jeff。Jeff被分心了,失去了15分钟的工作效率(仅仅节省了Mutt的15秒)。

       现在我们把他们两个分到有门和墙隔开的两个办公室去。这时如果Mutt忘记那个函数名,他可以花30秒去查一查,或者花45秒去问问Jeff,这过程包括了站立起来(考虑到程序员的平均体能这并不是一项简单的任务!)。所以他会选择自己查一查。这样Mutt失去了30秒的工作效率,但同时为Jeff节省了15分钟。哈哈哈哈!

9.你使用钱能买到的最棒的工具么?

       在公园里使用家用电脑立即用一门编译语言写代码仍然是最不能做的事情之一。如果你的编译过程超过几秒钟,使用最新和性能最强的电脑会让你节省点时间,当编译器运行的时候,程序员会感到厌倦,这是他们会切换到阅读点别的书籍,这会吸引他们的注意力,失去好几个小时的工作效率。

       使用单个显示器调试GUI代码是很痛苦的,这也不是不可能。如果你在写GUI代码,两台显示器会让很多事情变得更加容易。

       大多数程序员最终要处理图标或工具栏的位图,但他们大多数都没有一个好用的位图编辑器。尝试用Microsoft Paint来处理位图是个笑话,但这就是大部分程序员们所要做的。

       在我上一份工作中,系统管理员一直给我发自动的垃圾邮件抱怨,说我用了超过220兆字节的服务器上的硬盘存贮空间。我指出,鉴于最近硬盘的价格,这些硬盘空间的成本比我使用的卫生纸的成本都低多了。甚至花费我10分钟来清理我的邮件目录,这真是对我工作效率的极为荒诞的浪费。

       顶尖的开发团队不会折磨他们的程序员。即使是因为功能不完善的工具引起的小挫折累加起来,也会使程序员脾气暴躁和不愉快。一个脾气暴躁的程序员是不会有工作效率的。

       程序员最容易接受最酷、最新的东西贿赂了。与支付有竞争力的薪水比起来,这是一种让他们为你工作更便宜的方式。

10.你有测试人员么?

       如果你的团队没有专门的测试人员,至少应该为两三个程序员就配一个测试人员,你会写出有很多bug的产品,或者你在花冤枉钱让测试人员30刀每小时就能做的工作交给100刀每小时的程序员来做。在测试人员身上节省下来的钱是一个离谱的虚假的经济,我只是想让更多的人认识到这一点。

11.来找工作的人在他们面试的时候会写代码么?

       你会雇佣一个没看过他魔术技巧的魔术师么?当然不会。

       你会雇佣一个没尝过他的食物的餐饮服务商来为你的婚礼服务么?我对此表示怀疑。

       然而,一天天的,程序员通过让人印象深刻的简历被雇用,或是因为面试者喜欢跟他们聊天。或者他们被问到很细的问题(“CreateDialog()和DialogBox()之间有啥不同?”),这些看文档就能回答了。你不关心他们是否记得关于编程的成千上万的细节,你只关心他们到底能不能写出代码。或者,更糟糕的是,他们被问到的都是“啊?”问题:就是那种你知道答案就看起来很简单,但如果不知道答案就什么也回答不上来的问题。

       拜托,以后不要这么干了。在面试期间你想怎么问就怎么问,但一定要让参加招聘的程序员写点代码。

12.你会做走廊可用性测试么?

       走廊可用性测试就是当你在走廊上遇到一个路人就强迫他试着用你刚写的代码。如果你对五个人做过这种事,你会学到你代码里需要学习的95%的实用性问题的答案。

       好的用户界面设计并不像你想的那么难,如果你想让用户喜欢并购买你的产品这就至关重要了。

       但关于用户界面最重要的事情是,如果你把你的程序展示给很多人看(实际上五六个就足够了),你就会发现人们存在的最大的问题。即使你的用户界面设计技术还不怎么样,只要你强迫自己去做走廊可用性测试,这并没什么代价,而你的用户界面会越来越好的。

原文:http://www.joelonsoftware.com/articles/fog0000000043.html
译文:http://www.php100.com/html/it/focus/2014/1028/7640.html
(翻译:PHP100_Alex)


相关文章推荐:
国外技术大牛通过12条测试让你更好地编程(上)
五分钟开始你的Git之旅(进阶篇)
两分钟开始你的Git之旅(适用于个人开发者)
如何成为Google里优秀的产品经理

为什么Facebook不能停止使用PHP?

通过语音编程:在不伤害自己的前提下保持生产力

同类推荐

web app iphone4 iphone5 iphone6 响应式布局 适配代码web app iphone4 iphone5 iphone6 响应式布局 适配代码
PHP 判断是蜘蛛(搜索引擎)来访PHP 判断是蜘蛛(搜索引擎)来访
微信支付 官方SDK报错 Fatal error: Uncaught exception ‘WxPayException‘ with message ‘curl出错,错误码:60‘微信支付 官方SDK报错 Fatal error: Uncaught exception ‘WxPayException‘ with message ‘curl出错,错误码:60‘
jQuery获得页面元素(div、table等)页面中的相对位置(position)和绝对位置(offset)jQuery获得页面元素(div、table等)页面中的相对位置(position)和绝对位置(offset)
iPhone iPad HTML5网页不能自动播放AUDIO音频、VIDEO视频 原因iPhone iPad HTML5网页不能自动播放AUDIO音频、VIDEO视频 原因
ExtJS 4 之动态修改表单 field 的 allowBlank 属性ExtJS 4 之动态修改表单 field 的 allowBlank 属性
PHP 错误之 Division by zero... (溢出)PHP 错误之 Division by zero... (溢出)
ECshop语言包lang的加载原理ECshop语言包lang的加载原理
PHP版 P2P借贷公式算法函数大全 平息/等额本金/等额本息/先息后本/混合型PHP版 P2P借贷公式算法函数大全 平息/等额本金/等额本息/先息后本/混合型
Discuz 用户整合 免激活 同步登录 解决方法Discuz 用户整合 免激活 同步登录 解决方法