理想与现实

“理想”泛指以任何形式表达的理想状态,例如书中写的、别人讲的、砖家们宣称的。

“现实”泛指任何身边切实经历、感知的真实情况。

针对自己所处的IT或软件研发行业的种种现象有感,尽量不发散。

books

对我来说,“理想”的来源,是我的所见所闻、所读、所想,不过很奇怪的是,我们对“现实”的感官似乎也不外乎看见、听见、读见、想见这几个渠道,并无甚差别,但为何我们总会感慨理想和现实之间的距离,就像阳极和阴极一样总隔着看不见的墙。

我的“理想”最多的,来自于读书。其实我不是一个勤学的孩子,小学算尖子生,初中学习成绩尚可,高中就是班级倒数,所幸心理素质过硬,绝不怯场,最后高考成绩排名全班第11名,顺利进入杭电读大学。不过一直以来,我最喜欢的,就是读书,呃,还有,游戏。大学毕业多年后,有次春节回家方才注意到家中幸存的旧日书籍,除了电脑报合订本、大众软件合订本和一本专门的攻略书之外,剩下的不外乎是十万个为什么、世界通史、各种名人传记、各种公司传记、哈佛商学院案例集以及什么谋略之类的书。可以参考2012年春节时发的微博和图片:http://www.weibo.com/1408827293/y2ZaPfXtx

不过比较遗憾的是,除了初中时段,有几个“书呆子”或者叫“准极客”朋友陪伴我还会讨论讨论游戏、读书和理想以外,读书这件事情,我并没有遇到很多志同道合的人。也许,这是因为我有一个教初中数学的妈妈,“管教不严”,还允许我晚上看电视看动画片,中考前夜允许我玩到凌晨回家、高考也是到最后一个月才毛椒火辣地催着我复习做真题,所以我享有着同学们所享受不到的自由吧。后来,我一直觉得自己读书算是厉害的,可是遇到了豆瓣,我才发现,我的读书量,只能算个“屁”。虽然目前我(豆瓣ID:kaverjody)的记录也不错:108本读过321本想读(=已购待读);但这远不及我看过533部电影的成绩……

对我来说,“理想”的作用不在于被达到,而在于激励自己不断向前。

很多人会受到“理想”与“现实”之间差距的困扰,而我却不会,因为对我来说“理想和现实本来就是不一样的”。我可以毫不惭愧告诉大家,我的理想,从初二时老师问我们“你的理想是什么?”那天起,就从来也没有改变——成为比尔盖茨第二。如今这样的一个理想,可能会被很多人嘲笑,“比尔盖茨第二已经有人啦”、“应该以乔布斯为榜样”云云。我觉得不然,如果真的这么在乎这个理想是否“正确”、“可实现”,那么你必然也有实现这个理想的能力或潜力,不过,如果真有这样的能力,你真想要做“xx第二”,而不是开创自己的时代,成为新一代榜样人物?与我而言,如果真有那么幸运,能够成为比尔盖茨第二,那自然是好事,但更有可能的是,我无法实现这个理想。不过换个角度思考,就算我没能实现这样的理想,但是只要我认真的学习和理解比尔盖茨成功的经历和各种要素以及需要具备的能力,并以此作为自身发展的标杆,努力地学习、实践、反思,就算无法达到比尔盖茨一样的成就,那也必定能成为一名有能力、有前途的人,也会是一个有着美好生活和家庭的人。这,不正是理想的意义所在吗?

当然,理想并不见得都是这种有些遥不可及的庞然大物,理想也可以很微小。例如,可以是“帮助公司全面地推广敏捷开发方式并切实地有收获”,也可以是“在国内建立和推广robotframework社区”,也可以是“一年读完50本书”,也可以是“老人家倒地有人扶的人性化社会”,或是“老板有爱员工有情、上下齐心多发奖金的开心职场”等等等等。

理想,就像是挂在傻驴嘴前的青草,不管是诱骗还是情愿,只要能迈开步子向前走,就是赢家。怕就怕,把“现象”当成现实,漠视、盲从,反而让“理想”变得更加“不现实”,又印证了自己心中那份“不现实”的判断而沾沾自喜。眼下各种社会乱象频出,人们纷纷抱怨这个社会的冷漠和无情,谴责那些利用人们的同情心、怜悯心行骗的人。例如,乞讨的,不只是生活困难需要帮助的人,还有夜晚时分花天酒地的“职业乞丐”,当然也有因为各种无法伸张的冤屈被迫流落街头的人,那么我们是否要就此收起我们所有的善心,一概无视呢?我自己也不知道答案,我只能说我会用自己的判断,去识别那些真正需要帮助的人。就目前来说,地铁里或牵着小孩或肢体残疾的乞讨人员,路边总是会没有盘缠的普通人、大学生和户外爱好者们,以及徘徊于十字路口问路讨零钱买口饭吃的外地同胞,我只留给他们1%不到的机会赢得我的信任。我的冷漠对待,源于05、06年春节在家乡的一次遭遇,接连遇到一男一女两个小孩,都是一条坏腿搭在脑后,拿着讨钱碗叫你“叔叔阿姨可怜可怜我给点钱吧”,言语中一点也没有胆怯,给完第一个小孩钱走了不到20米就遇到第二个,说的话一模一样甚至连腔调都一样,我,除了震惊,唯一能做的就是迅速走开。从此以后,我选择冷漠对待如上所列举的这些类型的乞讨人员,因为我坚信,对于这些恶行,我们绝不可姑息养奸,容忍他们只会造就更大的恶。我想,后来的一些报道也印证了我的看法,当他们发现残疾小孩乞讨收益更高的时候,他们就已经不再满足于坐等“纯天然”的残疾小孩,而是主动出击通过诱拐、偷盗、购买等方式获取更充足的“劳动力”供给,而后人为地制造“残疾”以提升“产值”。这,绝不是我们喜闻乐见的“理想”,而是残酷、肮脏的“现实”,而我们所要做的,不是默默接受、避而远之,而是行动起来、团结起来,拯救这些孩子,打破他们的利益链条。上述行动危险性较强,更简单、更没有风险的做法,就是不要施舍钱财给这种乞丐。它是“理想”还是“现实”,你,可以决定

3由于工作的缘故,也因为(工作方面)我自己所坚持的理念和目标的缘故,总有人会告诉我,“你这个太理想化了,现实不是这样的”,或者“讲得太虚,没有干货,不能落地”云云。“干货”这玩意儿,我有很多看法,不过没想过如何表达,可以先看看冯大辉的这篇小道消息所谓「干货」”。当然,我所关注的和我成天讲的东西,在不同人的眼中会呈现出不同的景象。例如,我坚持测试自动化应该做到100%,多数程序员背景或做过测试自动化的朋友认同度较高,而常年浸淫于测试圈的朋友们则多数难以苟同;又例如,我坚持Scrum的自组织团队是可以达成的,反对和支持的朋友也各有不少;又例如,我坚持测试自动化团队在完成阶段性使命之后,就应该解散,重组为基础设施团队和测试自动化教练团队,其余成员分散进入各研发团队,并实行一定的轮换制度,这可能也只是“理想”吧……

在探究这些观点究竟是不是“理想”之前,不妨先摸清楚这些“理想”的底细,它们究竟从何而来,又向何处去。所有的想法都不可能是凭空产生,当然不排除有“妄想症患者”,反正我不是。对我来说,我的“理想”来自于:1,自己在工作中的实践;2,其他实践过此“理想”的个人或公司的分享;3,正式出版的书籍;好像只有这三个源头。没有任何一个源头不是“现实”。

有人会讲,“那是国外,这是中国”、“那是Facebook,我们只是中国屌丝”云云,但是,天下何来白吃的午餐。也许过去你还会相信,不过现在各种友情献上的“免费午餐”也开始泛滥,相信大家吃过之后自有感受。如果别人投入大量金钱、大把专家和耐心等待的时间才做成的东西,你买颗“中国版银弹”就能实现的话,你让人家脸往哪儿搁,情何以堪啊?没有银弹!现在没有,以后也没有。别说是软件行业,其他行业也一样,就算你真打造出牛逼闪闪的银弹,还不一定能杀死妖怪呢,还得抹上“圣水”,还得誓死拼杀呢,电影《范海辛 / 范海辛 / 凡赫辛》不就这样写的么。更别提遇上比你更牛逼得多的对手,有银弹也不够使,盯着脑门开一枪,也就只能消除记忆而已杀不死人,勉强扛个一时半会,还不能走神,要不就被派去走天涯,鬼知道啥时候是个尽头呢,《金刚狼 / X战警前传:金刚狼 / 变种特攻:狼人外传》这结局,不好。

sleeping啥,你说不应该拿电影来看玩笑?不对呀,这不你自己先开始相信玩笑的吗?叫天天响应,叫地地显灵,这不是《西游记》嘛,怎么不是电影情节了……屌丝走了狗屎运,泡得女神把家归,这这这这倒是有可能,但你也没必要天天装得个屌丝样到处去踩狗屎吧?再说了,咱广大屌丝青年和灰姑娘女士们看得痛哭流涕的SB韩剧,那也不是现实啊……早点醒过来吧,做白日梦不只是流口水的傻样,还会违反公司行政条例要罚钱的!

好吧,不扯远,回头还是聊正事要紧。咱一个个地解释上面那三个主张。

测试自动化比例要100%

“测试自动化”和“自动化测试”两个术语的语义其实有区别,此处使用“自动化测试”更合适。意思也即是说,所有的测试用例都应该实现自动化,也即100%测试自动化。这个目标完全是可达成的。

首先,一个测试用例或一个测试(test),必然具备前提条件、设置、执行、检查结果、清理环境这五个必备环节,对于“执行的操作”和“预期的结果”之间务必必须建立对应的因果关系。只要能够有清楚的因果关系,就意味着这个测试具备了基本的“可预见性”。

其次,作为被测对象的软件产品或系统,也是人为创造出来的,必然也就可以安插接口供测试使用。没办法给接口?可测性差?这,这不应该去改进代码改进设计才对的吗……不知道应该有什么接口?囧…这个,这个,多看看多想想,和开发人员也请教请教商量商量,看看他们有什么建议,办法总比问题多的…… 这个世界上,除了人类自己,没有什么是不可以控制的,对吗?呃,那些希望全权掌控自家小孩一辈子项目计划、事无巨细全部干涉的家长(例如《当婆婆遇上妈 / 刁蛮婆婆麻辣妈》里的陈大可她妈),咱就全当没看见吧……

再者,考虑到各方面因素的局限,尤其是考虑到测试自动化的前期投入巨大(例如,为某个外部设备开发可调用接口需要耗费大量人力、无力),当然不可能强求。不过,务必要明白这只是权宜之计,而不是就此不理,因为这意味着在整体流程或测试流程中存在着一个不可控因素或一个瓶颈,最终必然会影响到整体的交付速度和质量。

于是,这个算式就是(已自动化的测试 / 所有测试)=x%,而且,考虑到实际情况,多数时候是(已自动化的测试 / (所有测试 – 自动化成本过高的测试))=x%,这其实并不是一个很难达成的“理想”。

Scrum团队要做到自组织

已经有很多人告诉我,说Scrum的其他主张或许还行,但自组织在中国绝对行不通。

首先,自然是要先理解一下“自组织”这个词到底是什么意思,通常在Scrum或敏捷的语境下提到“自组织”指的都是“自组织团队”,也即“Self-Organizing Teams”,可以参考维基百科(英文),也可以参考Richard Hackman在《Leading Teams: Setting the Stage for Great Performances》书中的介绍。不管你怎么去理解,至少“自组织”并不是“无组织”更不是“无政府主义”或“放任自流”,就像我们说“自由不是免费的”,“自组织”当然也不是免费的。

其次,那么“自组织”到底需要怎么做呢?其实,如果我们抠字眼也能知道,“组织”(动词)意味着,等待被组织的各种事物已经存在,我们需要做的,是给它们一个命令或顺序以及一个目标,它们就可以朝着这个目标、自行决定如何前进。从某个角度来讲,人类个体本身就是高度自组织的,自打出生在这个世界上开始,其实我们最首要的目标就是活下去,虽然没有任何人告诉我们“你需要活下去”,但我们依然坚强地活了下来。刚生下来,我们就哭着喊着,回头饿了就哭、要撒尿了就瞪大眼睛装萌;等到长大了,我们开始有了比生存更高的目标,但同样地我们也自己找到了实现这些目标的方法。当然了,有些时候有些人达成目标的方法如此之简单,降低标准、减少目标,即可,例如“2008年中国奶制品污染事件– 维基百科”、“Category:中国水污染事件– 维基百科”等等。

再者,从“听命行事”到“自组织”,团队也需要有一个适应和摸索的过程。最绝佳的一个案例,就是我们国人从高中进入大学的这一段时间。迫于高考的压力,我们无力反抗,只能拼命的读书、复习、做试卷,挑灯夜战,老师说什么就是什么,爸爸妈妈说选哪个大学基本上就选哪个大学,一切都是非常“填鸭式”的中国式教育(庆幸的是,现在已经有很多人开始反对这种教育方式,而且还在反思和尝试新的教育方式,例如郑渊洁,例如武汉这7对父母。当然,这其实也是一种悲哀,因为除了学习知识以外,在校园中学会如何与人相处、交流,也是非常重要的部分。)不瞒大家说,我刚入大学校园,也像是出笼的小鸟,简直就是进入了天堂,再没有父母的管教和唠叨(虽然我父母本来就管教不多),如果再没有任何的约束,那就不知道会变成啥样,逃课成风自然而然也就发生了。所以,对于自组织团队来说,必定要加以“辅导”、“引导”,而不是一味地放手,帮助团队切实地理解你对他们的期待,希望他们“自组织地”完成什么事,要做到什么样,等等。还要帮助他们学会处理这些他们之前并不懂得如何处理的事务,过一段时间之后,他们方才能顺利地接岗做好工作。

最后,虽然我们一直说“团队”,但其实“自组织”不仅仅只适用于团队,它适用于任何规模的群体,只要能给它一个目标和基本的行为规则以及边界,即可。但是,“有可能”并不意味着“容易”。改变一个人,跟改变一个团队,或改变一个部门,甚至改变一个组织、一个公司,是难度非常不一样的事业。涉及到的范围越逛,改变自然也就越难。毕竟,人都有惰性、惯性,我们可以影响某一个人,说服他不要多想,只管自己做出改变。但当你面对着一群人去宣扬“自组织”的时候,且不说大家都认同但却由于缺少支持而最终放弃的情况,更可能发生的是,大家七嘴八舌的嘟囔着“这怎么可能”,于是三人成虎,那就真的变成了不可能。

当然,最最重要的,就是转变思维,尤其是正在思考着“是否要自组织”、“怎么让团队自组织”的朋友们,尤其要注意。如果我们就认为人是懒惰的,不能姑息,那么,也许我们永远也无法“得到”、“找到”或“看到”那些积极主动上进的优秀员工。要懂得去发现他们,支持他们,鼓励他们,正如《管好你的隐形员工》中描述的那样。

转变思维其实也不难,对于那些经常玩脑筋急转弯的人来说尤其如此。比如,人们常说“常在河边站哪有不湿鞋”,我觉得未必啊,怎么会这样呢,事情非常的简单嘛,我不穿鞋,不就不会湿鞋了吗?对不?

测试自动化团队达成使命之后应该解散

测试自动化这块我还是有比较多经验的,通常为了提高自动化测试的比例,往往会成立专门的测试自动化团队来处理此事。这是好事,也是好方法,尤其是在刚开始实施测试自动化的时候。但这样的一个团队应该有明确地使命,和生存期。编写和执行自动化的测试用例,是每一个测试人员都应该做的事情。自动化,或手动,只是执行测试的手段不同而已,对于一名“测试人员”来讲,“执行测试”就是你的职责,执行测试的手段和工具不懂、不会,那就应该去学习,而不是找借口,或扔给别人。

测试自动化的主要成本在于设备、工具的开发和维护,初期投入尤其大,而且学习曲线高。对于这样的难题,就不应该全面摊开,所有人一拥而上,因为这样也解决不了问题。所以才要组建专门的测试自动化团队,以摸索情况、找到解决方案、搭建基础框架和设施为己任。然而一旦这些任务已经达成,就应该解散此团队,将“开发、执行和维护自动化测试脚本”的工作交还给研发团队的测试人员,但是“维护基础设施”、“开发、维护测试自动化工具”的工作则可以留下来,因为这些工作和研发团队的测试工作并无直接关联,研发团队测试人员不应该需要操心这些事情。而做这些“维护基础设施”、“开发、维护测试自动化工具”工作的团队,通常就被称作是EP(Engineering Productivity)团队,可以参考谷歌在测试方面的经验。国内的豌豆荚、豆瓣好像也设立有这种部门。另外,还有一部分工作需要做,那就是“教练”。研发团队的测试人员从接触到掌握测试自动化的工具和方案,需要时间和指导,他们需要学习如何使用测试自动化过程中需要用到的各种工具、基础设施,以及,如何写出高质量低维护成本的自动化测试脚本,而原来的测试自动化团队成员通常来说就是最佳的人选。不过,也需要从中挑选能够理解测试自动化大局,能够理解测试(这很关键),而且表达和呈现能力还要好,要有“教练”、“培训师”的实力或潜力。

当然,我们可以假想一番,如果长期保留测试自动化团队会是什么情况。通常会分工为,测试自动化团队负责将现有的测试用例做成自动化的测试脚本,而研发团队测试人员则负责编写测试用例。通常来说,都会渐渐地演变成,测试自动化团队坐在一块,研发团队测试人员坐在一块,但他们两大团队之间的距离却有点远。而且,研发团队测试人员正头疼的测试用例却不一定是测试自动化团队成员觉得当前最需要解决的问题,以及,测试自动化团队成员不一定能够理解研发团队测试人员到底想要测什么、检查什么,这一切,都徒增了沟通成本和风险。而且还会导致脱节,例如@Philonis高写的这篇《从QA到EP》中也提到了的QA团队关起门来自己跟自己玩的现象。

而且,在《Software Test Automation》(业内第一本专门写测试自动化的书)中,作者Mark Fewster和Dorothy Graham,在很前面就写到“测试自动化解决的是效率(efficiency)的问题,而不是效果(effectiveness)的问题”。所以……

最后

关于“理想”的作用在于激励自己超越“现实”这件事,我想起了一部电影里面的片段。《上班一条虫》中,当领班因为佩戴勋章的事情不停烦她的时候,詹妮弗·安妮斯顿扮演的主题餐厅女服务生反问道:“如果你真的希望我戴更多,那就说37个勋章而不是13个是最低限度不就行了?”

分分钟即可实现的那不叫“理想”,那叫“欲望”。

慢慢忍直到认命的那不叫“现实”,那叫“桎梏”。

xiangzuozou_xiangyouzou-010

About

Xu Yi is a professional Agile & Lean Coach, check out more at http://kaverjody.com/about/.

Posted in Thoughts, 中文文章

Leave a Reply

Monthly Archives

Categories