第一季度在葡萄纬度(简称葡萄),之后进入了阿里。在葡萄,做的launcher和App Store,launcher后来转移给更有经验的人。而我带的组启动了两个新的项目:日历和IM。
App Store基础功能已经完善,主要解决一些疑难问题,不过做app store过程也发现了之前代码质量没有控制好,导致修bug过程很痛苦。现在看来,初期如果更好地控制代码质量,后期改bug会简单的多,当然那样也意味着就要申请更多的周期,以及更好的预估风险,这就是另外的问题了。
日历项目中,我负责功能评估,设计评审以及解疑。由于这个项目较为简单,我给了大概的思路,然后就投入到其他项目上了。几天之后,问负责人项目进度,却发现并未按照我说的方式去做。当时很为恼火,询问之下才知,使用我的方案有问题不好解决,他并未和我沟通解决方法,直接用了另一套方案,新方案也有又有其他的问题,这样的沟通问题有很多,而项目在进行中,也不可能停下来再解决沟通问题,只能继续在新的方案上帮忙修改,让项目继续推动。在理想的环境中,应该是有足够的时间去评审,解决协作问题。然而创业公司的资源不足,至于应该停下来整理好再走还是项目推动中渐进式地修正更好,这就不得了而知了。因为不久之后我就离开葡萄,不能践行我的想法,即使有时间,也不可能两种方式都做。然而,速度和控制力不可能两者兼得,掌握之间的平衡是个艰难而长久的问题。
IM项目的主要难点是视频通话,市场上上有成熟的方案,我的建议是直接用市场上成熟方案,然而我的技术leader却坚持要自己做。我并没有坚持,自己的做法,加上对这块的技术实现较感兴趣,开始查询webrtc晦涩难懂的资料,找源代码。最终花了很大精力实现,然而性能并不算好。这个项目的教训,一是创业公司精力有限,使用成熟方案不失为更好的选择。二是功能原型与成熟产品之间的距离很大,往往需要花数倍的时间。
在我看来,葡萄的环境并不算极佳,然而我也做的不算很好,虽然当时并未发觉,现在却看得很明显。3月底,进入了阿里。
阿里是个很大的话题,而且说多了容易泄密,因而还是少说事实多说感悟吧。
前三个月再做ICBU,做跨境贸易软件客户端,与之前公司相比,发现这里的特点就是业务层实现很复杂,想做好首先要理解业务。由于自己对生意并不是很熟,做的很艰难。另外一点就是发现,这里的技术栈很多基于阿里自有的框架以及支持库,之前熟悉的技术栈不能直接用,需要很多时间学习。这段时间接触新东西很多,感觉自己做的并不好。试用期后不久,零售通事业部成立,被调到零售通事业部。
在零售通是座客户端开发并且一直做到现在。这里和以前公司相比,主要的感悟是。 1. 重视自测的质量,之前公司将测试全部扔给测试,然而这里要求开发者自己自测好了,再交给测试。为了提高自测效果,这段时间学习了更多的单元测试知识。比如robolectric mockito等,发现做好单元测试并非简单,也并不能保证做了单元测试代码质量会有显著提升,不过代码结构却是更加合理,质量意识也有所提升。2. 重视监控,无论是业务还是技术数据,都需要监控,这样可以持续跟踪体验以及产品效果。
此外在阿里有几个观念上的转变(或者加强)有:
1. 对结果负责
2. 为什么做 的意义 大于 做什么 大于 怎么做
3. 想好了,想透彻了再做