由于这家公司是为国家级平台提供技术的,觉得很有前途,也与自己的特长和独特感悟比较吻合,认为能充分发挥自己,因此特地降低了30%以上的薪水从一线城市进入这个二线城市的公司.
刚进公司没两天,中心老总就要求我做一个复杂算法的功能性产品的预研,以取代Oralce数据库,说oracle spatial提供的功能不行,没法用,问我多长时间能完成.由于这个东西我刚在上个东家做过,知道其复杂性,就说至少需要4个月,同时补充了一句:”仅算法部分就有二万多行代码”,老总当时说最多只能三个月,时间再长的话就会影响转正,让我考虑考虑.
由于刚进去,尽管感觉似乎有点问题,但想到自己对公司各方面不了解,也许这家公司的企业文化跟一般公司不一样吧,毕竞是能为国家级平台提供技术的公司,应该不错的.盘量再三后,认为自己辛苦一些的话,应该能够在三个月内完成,就答应了.于是,公司安排了三个人参与这个产品的预研,一个是本人,负责设计与核心算法研发,时间三个月,一个是负责协议设计与功能封装,还有一个负责集成与测试,总时间五人月左右..
由于刚在上个东家那儿完成了这个产品,为了不违背职业道道,我提出了三种算法,并将优缺点都写得清清楚,由公司挑选,并特意指出个人比较倾向选择那个全新的更先进的算法,我认为那种算法是最好的算法,在同类产品中是一流偏上的.没想到公司挑选了我在上个东家那儿刚实现的算法,那种算法属于一流偏下的那种.正常情况下,公司应该挑选算法提出人指出的优点比较大、缺点比较少的方案,可能由于那种方案存在一定的风险吧,最终没被挑选。
作为技术研发人员,要遵守职业道德吧?如果从事过算法研发的,就知道已经走过的某条路,用同样的算法再走一次而又不违背职业道德,难度是很大的。同时在安排我负责这个项目时,公司对人员的安排采取了弱矩阵强责任模式,也就是说对另两个人我不但没有任何的管辖权,而且对他们的工作好坏也没有任何的制约权,但如果项目出现了什么问题,我就会成为首要责任承担者。
再强调一次,在立项前,我就指出过研发出这个产品需要几万行的代码。
在时间紧、难度大的情况下,我就准备根据立项的要求开始相关文档的设计工作,可没想到,内部的一个小小预研项目,刚一立项还没启动,公司的各种管理要求都来了,根据那种管理要求,是需要写很多的管理文档的,而这些管理文档对项目的进度与质量毫无价值.我一看傻眼了,小东西弄出大阵仗了,这是要完全按照对外的大项目来进行管理了,如果真的按照那种管理模式来执行,项目肯定无法按时完成,因为要写的文档实在太多了,需要消耗大量的时间的!没办法,先争取能精简就精简吧,无法精简就自已苦一点了。
在征得指导人同意精简的情况下,按照立项要求,终于在短短半个月的时间内完成了近三百页的多个文档设计工作,并发送评审。
这时公司要求我只能提供一份概要设计的文档进行评审,而在立项时要交付哪些文档与完成日期可是写得清清楚楚的,我也是按照立项的要求来的,其实文档的作用就是证明研发的可行性,同时为研发提供质量保障用的,事急应该从权,只要相关的内容不缺,大不了在后来将几个文档合并就行了,象另一位的访问协议文档还得在我的文档的基础上来完成,没必要在一部分文档的编写工作还没启动的情况下,弄一个不全的文档进行评审,那样更不容易通过,而且在将来结项时如果按照立项来验收,问题就更严重了,那种要求纯粹是个坑。说实在话,这时我心里已经开始有点犯滴沽, 很多事也开始多留一个心眼了,因为公司的不少行为似乎并不是为干事者提供条件,更谈不上去创造条件.
在我的再三争取下,公司最终同意对我写的文档进行评审,内容倒是评审通过了,不过在结论上留了一个尾巴,文档不是一份概要设计文档,而是多个文档,不符合公司管理的要求。
我刚进公司,对公司的各种管理根本就不了解,公司既然有这样死板的管理要求,那么为什么不在立项的层层审批过程中提前指出这一点?仅在工作正式开始后才指出来?
文档评审勉强通过了,而且相关内容也不违背职业道德,因为各个方面都与上个东家的也完全不同。
文档写完了,我自己应该进入研发阶段,这时公司的各种管理要求又开始重提,一边是同意精简,一边是要求按照公司的管理流程来,对于刚进公司的人来说,在时间这么紧的情况下,这个要求确实太过份,因为熟悉相关的管理内容都需要花不少的时间。
没办法,我一边凑合着完成公司规定的各种文档,一边加快产品的研发,因为这时我感觉到有些不对头了。
为了尽量不出意外,在立项时我特地为做功能封装的人预留了熟悉文档的时间,由于对相关人员没有任何的约束权力,因此在对方的工作启动前我再三的与他进行沟通,要求对方熟悉我写的文档,以便根据我的文档进行相关的服务访问接口设计,而且在对方的工作应该启动的当天,也与对方及其小组长进行了沟通,强调规划时间内的主要精力要用于预研项目上。
封装人员的工作启动两天后,我根据经验找他进行沟通,希望看看他的工作开展到哪一步了,没想到,对方说看了我写的文档,完成没问题,但因为公司有其它事需要他来处理,工作还没有开始。
于是又一次的与对方及其直接领导进行了共同协商,在对方满口没问题而且也承诺按期完成相关文档的情况下,同意对方再被抽调两天把公司的其它事务处理完毕。
过了两三天后,我再去找对方沟通,没想到工作不但还没有开始,而且说公司又给他安排了其它事务。这时我发现问题严重了,直接找到指导人,要求专人专事,否则相关工作进度无法保证。
经过我的交涉,公司为项目更换了另一位来完成功能封装的工作,暂称此位为A,说实在话,在刚更换时我根本不知道A工作还不足一年,因为公司说A的技术非常的好,完成任务没问题。
项目终于走上了正常的轨道,A确实也是一个不错的人,很虚心也很认真,我一边加紧研发,一边解答A提出的各种问题,并对其不足的地方也进行了相关的提点。
A的文档设计结束日期到了,尽管我花了不少的精力进行了提点,但是完成的文档还是不如我意,那时也没想到A工作才一年,而我自己的任务也是很紧的,按期完成都没把握,再加上对公司协议的制订规范要求并不清楚.且这个项目只是预研,成败的关键不在A那儿,根本没精力过多的再去参与对方的设计工作。
这时我已经看出了问题的严重性,为了项目不失败,我把主要精力放在了自己的工作进度上,让A直接进行功能封装的研发工作,因为功能封装的研发工作相对比较简单,如果是我直接研发的话,一周多的时间就差不多了,而我在立项时足足安排了一个月的时间
A在研发了半个月后跟我说已经完成了,现在没事做,由于是并行研发,在我的东西没出来前,他只能虚拟出相关的接口进行研发,我问了一些关心的问题,他说都做了,并把相关的结果也发给我看了,我一看,访问结果都符合设计的协议,于是我安排他重新完善设计文档,因为在成果的基础上写文档更容易。
A的文档补充完善后,我找到他的直接领导,说把A还给他了,但是强调如果有什么事需要A的话,在项目规定的时间内(就是A在我项目的参与时间内)有需要的话再调给我,对方也答应了。
根据经验,我感觉A的成果不靠谱,但自己确实没有什么精力去折腾,就一心加快自己的研发。幸好,在A参与项目终止时间的前两天,我完成了部分接口,并将成果发给A,由A将我的成果与他的成果进行合并,A说小组长给他安排了其它的事,找到小组长进行协商,对方开始不同意,说A自己说没事可做才安排的,现在也抽不出时间来,A也说下班的时间自己弄,我也没时间折腾,等我自己把时间腾出来再说吧。
两三天后,我的研发工作结束了,就把成果发给了A,并通过争取,给了A半天时间进行两种成果的合并。这时的主要风险已经解决,A的东西本来属于次要风险,现在属于主要风险了,我可以亲自与他共同进行工作的开展,在成果合并时,先拿一个简单的接口进行合并,前期倒是解决合并中出现的的一些问题,一切正常,接口顺利合并后,A说剩下的接口由他自己来完成,我一想已经有了一个成功的例子,其它的应该没问题,就提出了一个要求:把配置文件给我看看,而A却说没有做。
配置文件是我再三强调的,它是产品灵活应用的核心,作为向国家级平台提供产品的公司,这方面的经验应该很丰富,不需要我操心的,缺少配置文件,意味着A的成果存在着重大的问题,于是我找到他的小组长进行协商,希望他将A安排二三天的时间给我(因为当时已经过了立项中安排给A终止时间二天),这时小组长不同意,我一看这明显的不是合作做事的态度,就找指导人要人,毕竞按计划时间,A还有十几天的时间没用完,而时间却刚好离A的终止时间只过二三天而已.
经过争取,最终同意按排A一天的时间,在规定的那天时间我去找A,发现A不在,小组长说他请假了,好不容易争取的一天时间被请假,那工作怎么办?找小组长协商补充其它的时间,小组长说A周六加班做,我不同意,这不靠谱,我对公司并不熟悉,如果周六再不来,其它的时间又不补给我,那不直接影响项目?说实在话,由于公司在我研发期间存在着许多说不出口的小动作,属于有苦难言的那种,相信许多人都曾遇到过的,我已经不相信公司的任何人和任何承诺了,现在只想着能按时完成项目就谢天谢地了,为了保证项目不出问题,找到各方进行协商,由A在电话中承诺周六一定过来.
周六呢,公司停电了(仅公司停电,其它地方都没停电),干不成了,这次的协商倒容易,改为周日.
到了周日,我亲自在A的旁边看着他开展工作,首先是在我的协助下完成配置文件的设计,然后检查我最关心的数据实时更新的那个功能,说实在话,由于封装只是将我接口中的成果转换成符合公司访问协议的内容,很简单的,只有数据实时更新略微复杂点,而这些可以根据我提供的流程图来进行研发的.
我一看数据实时更新那部分的代码,发现完全象是一个参加工作不太长的人做的,这时我开始旁敲侧击的了解A的工作时间,结果发现A还工作不到一年,根本就不是公司相关人员在换人时所说的A是属于技术非常好的那种.
联系到A的工作态度一直相当不错,我已经意识到A的成果不靠谱,是受水平的限制,而公司的相关知情人,不但没进行任何的提点,甚至还在一开始就对我进行误导,这样的公司属一级危险级的.
于是,我把精力完全放在指导A上,经过协商,又争取了两天的时间,终于使A的成果基本达到要求.
由于我自己面前工作的完成时间比预期提前了好多天,所以下一步的测试工作的启动还有段时间.
在这期间,也就是我试用期的最后一天,公司发通知让我写转正申请,说实在话,如果项目完成了,我会立马离开,但为了项目的完成,我写了转正申请,呵呵,没想到这家公司隔一两天就冒出一个与转正有关的东西,其中指导人告诉我,象我这种情况属于试用延期,没想到对于我这个干了十几年技术的人(做的东西如何最后一并给结论),居然混到试用延期的地步了.
试用期满后的第五六天吧,召开我的转正评审会,会上,A对我是肯定的,他的小组长呢,说我不重视设计,认为不需要设计,其实在换人前,我再三强调的是文档的设计,而且在A动手研发前,我还要求A可以放松一两天,好好的理清整体的思路再动手,而我提供的文档中都有实现相关功能的流程图.总工呢,说由于我的设计文档不是一份概要设计,.而是多份文档,但看在我的工作强度确实太大,勉强通过,指导人呢,满口没问题.后来的闭门会议不清楚情况,最终的结果是转正通过,其实这时我已经否定了这家公司,太危险了.
测试工作应该开始了,这时又产生了歧义,因为集成测试组的工作与想象的完全不同,说只进行集成测试而不进行性能与稳定性测试,通过协商,稳定性与性能测试由A和我来完成,集成测试由立项时指定的那位(暂称为B)来完成.
根据情况的变化超出预期,从慎重出发,我安排B作三轮测试.
A现学一些测试软件的使用和编程, 性能和稳定性测试倒是顺利.呵呵,特别提出一个怪现象,在服务器上进行测试时,每次测试,都会在中间出现突然的2%左右的性能下降,而在周日我为了能顺利写出测试报告而偷偷的进行测试时,那种性能下降并没有出现,也有人提出这个如何解释,我拿出了另一组有说服力的数据(比较专业的,描述起来太复杂,就不描述了)说,如果谁能解释这种不应该出现的现象,那这种问题就可以得到解释,最后不再有人提起这个问题.
由于前期的遭遇,我已经对B的工作无成效有心理准备,果然,向B要相关文档时(B也需要完成测试方案文档),无果,第一轮测试开始,我就找对方的小组长,小组长说公司有更重要的事,优先级比我的高,测试的事要延期,既然如此,反正时间也充足,先完成公司重要的事吧.
第二天,研发成果汇报会我作汇报,评价还不错,有人问到测试如何,没想到小组长说:集成没通过.我当时以为是A的原因,我可是当他的面对各个协议进行了复查的,根本不应该有问题,只有兼容老协议时,A说他自己来,我想到他已经做了一遍新接口,老接口我又不便于接触,就没有亲自复查.再说,测试已经开始了,我居然还不知道,当时可是说好的,如果开始测试的话应该通知我一声,在我以为测试还没开始时,突然意外的听到了第一轮的测试结果。
事后向B了解,B说测试没有问题啊,没有给出测试没通过的结论,只是A上传的内容中缺少了公司产品中的一些基础东西,补上去就好了,而A说,这些东西在公司的相关文档中写得很清楚的,其它的服务也没有上传这些东西,也都通过了.
针对这个问题进行协商,公司的结论是:第一轮测试的结果不可更改.
我问发现有其它问题没有,对方说暂时还没有,那就进行第二轮测试吧.
第二轮的测试结论依然是集成没通过,这怎么可能?一了解,原来兼容的老接口不对,一排查原因,敢情是公司提供了错误的老接口文档,错误的文档当然会导致错误了,这是我的责任没错,因为我根本不知道有这个文档,也没有任何人向我提起过,属于工作没作到位.但是,我对集成没通过的结论产生异议,要求改成测试没通过,因为我的邮件中写的清清楚楚,是合理性与缺陷性测试,而不是集成.公司的答复是:测试就是集成,结论不可更改.
好吧,这么简单的东西,我要的是测试而不是集成,因为集成由我和A完成了,没必要通过B的,我不需要你来做测试了,结果得到的答复是:项目结项需要集成测试小组的签字,否则无法通过.
第三轮,我把任务由测试改成集成,并和A全部重新集成了一次,没想到,B却做起了测试的工作.
顺便说一句,到我离开时,我还没看到B所作工作的任何资料,似乎那不在我的权限范围内。
|