工作模式所感

最近两周做了一件很傻逼的事情,感觉很痛苦。

事情是这样的,项目leader兴致勃勃想要做一个检测人脸、划定嫌疑人、报警这么一个项目,让我们几周之内出一个demo。

于是划定s做算法、y做前端、w做数据库和文件系统,我做后台架构以保证一定的并发。

工作就这么开始了,开始我并没有活,过了两周之后s拿出了一个demo,用到了openface这个东西,我们都暂时没有能力修改其中的代码,s的代码中用到了os.system(‘cmd’)这种方式调用,且流程是同步的,然后给了我,让我继续下一步工作,开始我是不想接的,后来想想算了吧,反正也不可能真正应用,就试着改改吧,于是悲剧开始了。

花了两三天功夫,将其中的代码一行一行梳理,拆出主要的三个模块。

花了一天功夫,优化,能用多线程的用多线程,能用多进程的用多进程。

花了一天功夫测试,各种悲剧,多进程各种报错,是底层torch库报的错,我无法改进

最后一天与y调试,可算修修改改调通了,单后w说了,这数据库怎么回事啊,entity都没有更新,我以为我忘记调用那个函数接口了,然后仔细核查代码,发现调用了,最后查了又查,结果是他自己拼接sql语句时偷懒了,where部分写死了,我都无语了。。。

于是我思考,到底什么样的工作模式才能高效的解决问题:

  1. 模块与模块直接,写接口,例如我和前端y,定义了一个json接口,利利索索,这种工作方式最好

  2. 封装服务,或者rpc调用,这种方式也解耦的很好,但是可能涉及网络,会有一定的延迟

  3. 代码层级的集成,这个最头疼,决定以后如果涉及这类问题,一定要别人将代码封装成模块级别,直接提供函数接口,我绝对不动他代码里的任何东西。I swear!