本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/Ry-G0Nikh6m-h3ZVC2cLyQ
导语
2017年来了,新年开篇,就不跟大家聊技术啦,给大家分享一篇鹅厂技术总监在多年工作中总结出的教训和经验。
这篇文章自从在腾讯内部论坛发表后,精神哥每年都会拿出来重新研读一番,每次都有新的感悟和收获,所以强烈推荐给大家。
正文
资深程序员是团队中最强大的生产力,但往往被不合理的工作安排浪费掉。因此作为一个团队的技术的“头”,必须要有明确清晰的认识,把主要的事务性工作剥离出来,并且放弃大量的管理“权力”,以提高团队开发质量和效率为最主要的目标去安排自己的工作。
一般来说技术总监其实会被要求做事实上是2个职位的工作:主程、项目经理(技术化)
因此必须明确此两个职位的工作任务分割,然后把项目经理的工作,安排给另外一个人做。当然其职称可能同样也得叫“技术总监”或“主程”,总之听起来越牛X越好。而真正的主程(技术总监)则应该投身于尽量多的技术工作中,其中最重要的工作则是开发———生产代码和文档。
主程的工作:
一、开发
从来没有一个资深的外科医生会放下手术刀,而转到手术室外面指手画脚。一个资深的程序员也不应该离开代码和文档的编写,而只是做做架构图。作为对一个复杂系统的负责人,必须亲手领导和参与建造,才能有足够的能力去负担起这个责任。因此需要至少使用60%的时间来参与开发的工作,并且建议从一开始上班就开始,虽然早上的效率很低,但是跟任何艰巨工作都一样:万事开头难。
在你好不容易等待电脑慢吞吞的打开了所有的IDE、需求文档、参考资料、工作计划这堆要命的东西之后,你就迈出了最重要的一步,你会发现你不在需要在网上看微博和聊QQ来提振开始工作的激情,而会被某一个优化代码的灵感而激励,或者被一个复杂而有趣的问题所吸引,从而更快的能投入到开发中。坚持打开电脑做的第一件事是打开IDE软件,是这一切最重要的一步。
开发的工作内容包括:
1. 提出非功能性需求
一般来说功能需求总是让开发人员焦头烂额的主要原因。但实际上,很多项目死在发布之后,却是因为性能、产品质量、扩展性、二次开发效率等非功能性需求没认真去解决而导致的。
主程作为经验最丰富的成员,必须要利用自己曾经的经验和教训(在这里教训往往比经验重要),提出那些自己折腾自己的“非功能性需求”,来保障整个项目在发布后不会轰然倒塌。
这是个吃力不讨好的工作,因为老板和客户往往只会抱怨技术人员在玩弄把戏,骗取更多的资源或者杞人忧天。如何说服这些家伙也许不是主程的工作,但是主程必须要以高度的责任心把问题放到台面上来。沟通的工作也许让项目经理去做会更好,他们有一整套如何威逼利诱老板和客户的戏法。
非功能性需求中,其中有三类:
- 性能需求
- 运维需求
- 开发效率
性能需求
最好的性能需求实际上所有没有需求,因为性能优化往往错的。特别是有一定经验的开发人员,更容易产生“执念”。经验不是特别丰富,而又热爱学习的开发者,往往对很多网上的所谓文章、经验没有太多的识别能力,又缺乏动手实际测试的机会,所以道听途说先入为主的观念也是非常多的。这些观念里面最多的就是关于性能的,先不论所谓优化性能的各种说法,就是推荐各种高性能框架、库的文章也很多。这个时候,拨开纷繁的信息迷雾的人,就只能靠主程了。
运维需求
运维需求的目标是尽量自动化,这里除了最基