• 简单之美—软件开发实践者的思考—故事场景3


    “Rachel,有空吗?我想找你谈一谈。”在孔如之和王蓉吃饭的时候,宗方已经到王蓉的block找过她两次了。

    “好的。”王蓉跟着宗方进了经理办公室。

    “SC项目有点变化,需要增加两个SA。我想从你那里抽一个人。”宗方眯着眼,看着王蓉。

    “啊,这怎么可以。TFC项目连我在内,只有三个SA。”王蓉有点急了,“这个项目估计要2000个man day,需求分析的任务很重的。”

    “你知道我也很难。”宗方一脸无辜地说,“总共就这么几个SA,项目上都在抢。”

    “Ralph知道吗?”

    “我还没跟他说,先和你商量一下。”

    “那我不同意。”王蓉斩钉截铁地说。

    “我知道你也很难。”宗方推心置腹地说,“Rachel,你也知道,需求这一块的预算就这么大,如果别人做得多,奖金就要倾斜一点。”

    王蓉有点犹豫。宗方接着说,“这样吧,人先抽过去,下面再马上招一个SA。你看怎么样?”

    “新招的人不熟悉业务,我担心不能马上上手。” 王蓉已经顺着宗方的意见在往下想了。

    “培训一下嘛。我尽快安排招人,你们也可以早点培训。好吧,就这样?”

    王蓉还想说点什么,可是又不知道该说什么。

    于伦给孔如之发了一封邮件,结合上午的需求工作会议谈了自己对敏捷方法的一些看法。

    昨天晚上,他接到了宗方的电话,询问他对新计划的看法。他听出了宗方心中的怒气,也明白对方用意明显的试探,可是,他只能支支吾吾,不敢表达自己的意见。

    接到宗方的电话后,于伦特别想和孔如之谈谈。他坐在新家的新沙发里心不在焉地看着电视。他不知道自己想和孔如之谈什么,总之是想谈谈。事实上,他和孔如之之间并没有什么更深的交情。谈谈的想法也只是留在心里纠结,直到老婆叫他抱孩子上床睡觉。

    不过,今天上午的需求工作会议,突然让于伦找到了一个话题,他很快给孔如之发了一封邮件。

    于伦在邮件中主要谈了敏捷方法形式化的问题。很多做法看上去都很有道理,可是没法落实。比方说,在需求分析的时候,要和客户一起工作。可是,客户有自己的工作安排,也不可能长时间和项目组讨论。再比方说,项目组觉得需求已经足够清楚了,可是客户总会提出不同的想法。这些问题,无论开多少次会都无法解决。

    于伦的结论是,技术人员应该多熟悉业务。不懂业务,不成为领域专家,开发的时候就会有很大的麻烦。

    发出邮件后,于伦感到一阵轻松。他甚至回过头和李小兵开了个玩笑。

    李小兵感到很郁闷。昨天他还在为孔如之的新计划兴奋不已。可是,今天开完需求讨论会,他突然觉得孔如之的能力比他想象的要糟很多。整整3个小时,孔如之就像个菜鸟一样问了两个问题。相反,宗方给他的感觉要好很多。在保险这一块,宗方应该算是一个专家了。

    “老大,你说快乐开发是怎么搞的?”李小兵问于伦。

    “一边听相声,一边开发。”于伦笑道。

    “去死。我认真的。”李小兵说,“需求能不变吗?”

    “国外项目已经好很多了。要是国内项目,你都想砍人了。知足吧你。”于伦转身回到自己座位上,仔细地看起客户需求文档。

    孔如之很快给于伦回了邮件。事实上,关于形式化的问题他已经在昨天的会上谈到了。要解决形式化的问题,必须从主动性和知识积累的角度来考虑。

    “好像每个人都想一下子解决问题。”孔如之在心里想,“怎么可能。就像我昨天讲了这么多,很多人都在点头。可是在解决问题的时候,又完全走自己的思路。这需要时间。”

    孔如之抬起头,隔着经理室的玻璃向外看去。Office里一片忙碌的景象。他知道大家都在忙什么。两个维护项目到现在还没有结束,每个人的嘴里都在谈论着bug。再这么搞下去,大家不成IT民工才怪呢。他凝视良久,最后,突然发现自己的目光竟然一直停留在王蓉的身上。

    他双手捂着脸揉搓了两下,又开始写新的邮件。

    王蓉调整完需求分析的计划,开始看起孔如之介绍的那本书。她看书很快,一般都是从目录中找到感兴趣的话题,然后直接翻阅。

    她被“需求故事的讲述技巧”那一章吸引住了。这些技巧都非常简单,例如,如何使用陈述句,如何层层展开故事,如何使用术语,如何形成讲述风格等等。

    “简单就是最有效的。”她在心里点了点头。

    于伦感觉到有一些压力了,这完全在他的意料之中。他曾经做过五年左右的软件开发,在技术方面有一些心得。但是最近这三年,他几乎没有参与过具体的开发工作。尽管频繁参加各种技术会议,尽管在会议上他总是发表很多决定性的意见,但是真正要构架一个系统,他没有信心。

    本来,他不会遭遇到这种尴尬,是孔如之推广的新方法让他不得不面对这个问题。

    TFC项目有一个处于雏形阶段的核心系统。这个核心系统是欧洲R&D部门开发的,它包括一个框架,一套工具和一些公共的功能模块。两个月前,R&D部门曾经派人来为国内的软件开发人员做过培训,数千页的技术文档让大家领教了这个系统的复杂性。不过,至今为止,这个核心系统还从来没有在实际的项目中使用过。

    TFC项目包括10个AD和2个(原先有3个)SA。这样的人员配备完全是想当然的,因为谁都没有开发这类项目的经验。

    按照孔如之的说法,TFC项目中的每一个人都要有精确的任务分工。这里的任务是特指的,不是指那些相同工作内容的分解(当然也需要分解),而是指不同的任务类型。比方说,专人从事架构设计,专人从事工具维护,专人从事代码配置,专人从事数据库脚本,专人从事编写代码,专人从事软件测试。这种精细分工,在一个不满20个人的小型团队中是很少见的。

    孔如之和参与项目的每一个人都进行了单独的沟通。他尝试了解每一个人的技术特长,兴趣爱好,以及将来的技术发展方向。最后,他制作了一份任务分工表。

    在这次走马灯似的沟通中,于伦被暂定为TFC项目的架构师。可怜的于伦没有感到一丁点的骄傲和自豪。他每次回想起孔如之和自己的那次谈话,总是觉得备受煎熬。

    “项目上只有10个AD,如果再这么精细分工,不是没有几个人写代码了?”当于伦听到孔如之介绍精细分工的时候,感到非常惊讶。

    “如果工作量是固定的,人数是固定的,那么是否精细分工又有什么不同呢?”孔如之耐心地解释道,“从分配到个人的角度来看,工作量没有什么不同。可是,从个人的专业知识积累这个角度来看,区别就大了。如果提高了专业技能,生产效率就提高了,而且往往可以找到更好更快捷的实现方法。”

    “那么没有到测试阶段,软件测试人员不是没事干了吗?”于伦说。

    “没事干?”孔如之反问了一句,然后继续解释,“软件测试在项目开始的时候就开始了。要参与需求分析,编写测试用例,要向软件开发人员介绍测试中发现的问题,帮助他们在开发时避免发生类似的问题。其实,所有的人,不管是从事哪种任务,都是贯穿整个开发周期的。这才是专业的做法。”

    于伦有点茫然。

    “再比方说,架构。”孔如之开始畅谈自己的方法论,“不是架构设计结束就结束了。架构师一方面要不断完善自己的想法,通过重构来改善系统的结构,一方面要持续地把自己的设计思想传递给软件开发人员,并且指导程序员的编码,听取程序员的反馈。越是专业,就会考虑得越是全面,就会发现要做的事越是饱满。不精细,就不可能做到专业,不专业,就不可能有成熟的产品。”

    于伦点了点头。其实,他并不太理解孔如之的想法。但是,就像过去技术会议上他的发言总是被采纳一样,孔如之的位置,使于伦只能发表一些疑问,然后表示赞同。

    接下来,孔如之开始和于伦谈论一些构架方面的理念。于伦的话总是被孔如之直截了当地打断,反驳,纠正。这在孔如之看来,似乎很自然,可是在于伦看来,却是非常尴尬。他有点方寸大乱,心浮气躁。

    “不,要用最简单的思路来构架系统,不要增加复杂性。”

    “不,工具的使用要慎重,要保持应用逻辑的独立性。”

    于伦在整个谈话的过程中备受煎熬。他有很多现实中的经验体会一直在嘴边涌动,可是很难表达出来。他觉得孔如之好像生活在真空中,过于天真,过于理想。当他结束这次谈话离开经理室的时候,他长叹了一口气。

    “跟孔如之走绝对是个错误。”他在心里摇了摇头。

  • 相关阅读:
    HDU 1402 A * B Problem Plus (FFT)
    CodeForces 935E Fafa and Ancient Mathematics (树形DP)
    HDU 5355 Cake (构造 + 暴力)
    HDU 5360 Hiking (贪心)
    Java高阶回调,回调函数的另一种玩法
    关于git 指令
    Retrofit2 完全解析 探索与okhttp之间的关系
    HTTP中GET与POST的区别
    TCP,IP,HTTP,SOCKET区别和联系
    android 实现类似qq未读消息点击循环显示
  • 原文地址:https://www.cnblogs.com/PatrickLee/p/2604753.html
Copyright © 2020-2023  润新知