问:谷歌每两个星期就发布一此软件,那么谷歌是如何平衡已有软件和新软件的投入?
答:在谷歌,有着70/20/10原则,70%投入已有核心产品,20%与新产品相关,10%是高风险创新产品。
谷歌有很好的测试基础设施,例如每天5000个CPU进行65K次编译,执行超过100M测试用例。 Build和测试系统为了适应负载需求,每年增长75%。项目的平均Build和测试时间是4分钟。在谷歌,产品组总是维护一个可用的版本(Green Build),因此,我们在建设测试系统时候,非常注重以下几个方面。
1)速度:所有的测试和分析都应该搞的非常快。如果花费的时间太长,工程师就可能根本不鸟那些数据了。
2)反馈:测试系统必须是高质量的。我们希望工程师在任何时候都保持产品高质量代码,而不是出问题才修正。
3)简单:工程师不需要了解底层系统的工作状况。(不要只是把含有3kb底层信息的错误log丢给他们——编者注)所有的数据和反馈都必须容易理解,结合常用的产品工具,在一个简洁明了的流程中展现出来,以引起工程师足够的注意。
问:优秀(Good)测试人员和卓越(Great)测试人员的区别是什么?
答:优秀测试人员是可以培训的,他们有好的背景,理解客户,熟悉开发流程等等。卓越测试人员是可遇不可求的,非常稀少的。卓越测试人员通常都是卓越开发人员,但是卓越的开发人员未必是卓越测试人员。对于卓越测试人员来说:1)他们有很好的直觉找到真正问题 2)他们对于测试有极大的热情。
问:设计,开发和发布高质量的软件过程中,最大的障碍是什么?
答:每个产品都有自己独特的开发方法,其中有许多变化。项目要根据自己的情况在敏捷和严格流程中找到自己的最佳平衡点。
问:对于想成为资深技术人员的年轻软件工程师,你有什么建议吗?
答:
1)注重技术
2)成为创新者和组织者
3)把握自己职业:不要等待别人来赏识你。告诉他人你的想法和成果,你是你最好的广告牌。
4)发挥你的强项:选择你喜欢的项目,你能够取得更大影响。
问:你是否特别喜欢的开发语言?
答:没有,谷歌最常用的就是Java,Javascript,Python,Perl和C++。