2018-01-21 你以为的是你以为

上周一和一同事两人一起出差重庆,主要目的是在合作方现场对我们算法进行实际部署和测试,根据测试的效果商谈下一步合作事宜。对方属于业务单位,对于项目相关的技术要求比较务实,也就是“要看疗效”。周二上午和对方进行了1个多小时的业务相关技术方法交流,讨论的相当激烈,在讨论中也对他们的需求了解的更为深入。从下午开始便进入本次出差的主要流程:环境部署和算法效果测试。一切才刚刚开始!

这次合作的算法由我的这位同事主要负责,对他属于第一次进行这种高要求的实际项目实施,因此欠缺足够的经验,尽管在家里已经对现场的复杂性有了预判,同时在家里也进行了多次测试。现场还是出现了种种的障碍和问题:
1)无网络下的系统环境安装:在家里都是在网络正常的装款下进行的系统环境配置,可现场因为保密的原因,所有软件/程序都只能通过光盘的形式导入,这就导致原本几行命令就可以解决的环境配置流程复杂。虽然我们来前考虑到了无网络环境,预先已经将可能要用到的环境软件下载,可还是疏漏了两个软件。这就导致在现场通过手机热点下载软件,而其中一个软件的安装涉及到多个层层嵌套的文件。这导致我们原计划2个小时完成的部署直到晚上10点才完成。
2)数据库连接不支持算法语言:来前在电话中和合作方的技术人员进行了交流,尽管在电话中问到了数据库采用的具体类型,对方提到了用的是MPP数据库,同时说了一句这个比较简单,过来修改几行代码即可。来前对该数据进行的查询,资料很少,属于小众的数据库。于是就先采用主流数据库进行了算法测试,计划来了直接用他们提供的样例修改连接方式即可。可周三上午开始对接数据库才发现对方连接数据库的语言是java,而我们用的是python,因为语言的不同,导致他们连接的程序样例我们没办法进行参考。于是对Python连接该数据库的方法进行现场搜索学习。尽管周折,还是找到了方法,下载了对应的软件,并进行测试。然而却总是连不同,提示的错误信息在网上搜索也一无所获。实在没有办法就请教合作方和数据库的提供商进行协商,几近周折联系到数据库提供商的专家,得到的回复令我们大失所望“这个数据库暂时不知道python语言连接,并且下一个版本也不支持”。这就意味着我们一上午的尝试都会白忙活。经过大家的再次沟通,在不支持语言的情况下,临时采用其他数据库替代,以验证我们算法效果为主。于是,我们又开始从现在的数据库导出数据,导入到临时数据库中,重新构建数据库表字段,数据读取代码。终于在晚饭后完成了整个数据库工作。
3)算法输出和对方预期有差距:在现场和对方进行需求交流时,对于输出他们提出了新的要求,而为了能尽快让他们看到效果,我们周三晚上加班进行效果优化。因为基本功不扎实,这位同事在现场修改很不顺利。即使是自己写的代码,依然没有思路。在两人的配合下,输出效果基本满足了合作方的要求。
4)算法的现场性能远低于期望:在输出效果完善后,发现算法的运行速度太慢,原计划1-3s输出结果,然后我们现场测试至少要30s,有些测试更慢。这样的效果明显不能用。原因除了现场测试机器速度和测试数据量超过了在家里测试规模以外,更重要的是算法本身的优化。于是周三晚上到周四早晨,两个人在机房一点一点的扣细节,一步一步的排查,最终发现的算法设计中可以优化的若干个点,在周四上午7点左右可以实现大多数测试时间<3s。
5)优化后的算法输出依然没有达到预期:周四上午合作方如约看到了测试结果。原本以为我们通宵的优化能够获得对方的认可,而在他们看了我们的结果后,从专业需求角度立刻否定了现在的结果,提出了更为苛刻,但是和需求紧密结合的要求。他们提的要求有道理,而这样的需求实现显然需要算法的进一步优化。

我因周五还有其他事情处理,我先返京,同事留在现场继续优化。

在回来的路上我一直在反思这次失败的对接原因到底出在了哪里:

首先从我个人角度,作为管理者,在整个项目的前期需求了解以及工作部署中存在着诸多不足。
1)对项目的真实需求了解不够仔细和深入。合作方作为业务单位,对需求最为迫切和了解。然而作为一线业务人员,对于需求的表达和从技术实现角度的理解存在着误差。实际上这次也是,从电话里他们讲的需求和具体现场沟通后了解的需求以及他们看到我们实现的效果提出的需求存在的很大的不同。这就导致我们的工作不断的迭代更新和更多的工作量。
2)对于现场环境复杂性预判不够准确,造成现场话费大量原本可以在家里进行的环境搭建工作,造成时间和精力的不必要浪费,同时影响整体进度,影响合作方对我们专业水平的判断。
3)对关键连接点的沟通存在盲区,比如对方采用的数据库类型,支持什么样的语言欠缺详细的了解,导致在家里测试的环境和现场不同,现场数据库类型不支持我们采用的语言,导致现场的低效推进。
4)现场情绪管理失控:看着同事一直顶着压力进行各种测试,我心里既着急又帮不上忙,终于在连续两天的进展不顺利下,撸起袖子和他一起改,在过程中对于同事的各种不专业技术表达了不满,事后也有些后悔,毕竟这是他第一次参与这种现场调试工作,而我原本可以在家里提出更高的要求让他测试。

总之,这是一次失败的现场部署经历。事后的总结对于失败的现场于事无补,只希望以后不出现类似的情况。

你可能感兴趣的:(2018-01-21 你以为的是你以为)