1、掌握必备的专业技能
研发是一项技术性很强的工作,以至于你要学习很多东西才能做好这份工作,研发人员要掌握的技能有:至少掌握一种编程语言、如何构造代码、面向对象的设计、算法和数据结构、开发平台及相关技术、框架或堆栈、基础数据库知识、源代码控制、构建和部署、测试、调试等等。
因为是团队管理,所以本身的技术能力放到了最后。作为技术管理者,如果具体技术业务能力强,这是锦上添花的事情。技术能力强,就是要对技术理解比较深刻,所掌握的技术可以帮助公司更好的实现客户需求,并且能更低的成本实现客户的要求,为公司挣到更多的利润。
2、文档习惯
良好的文档是正规研发流程中非常重要的环节,作为研发者,30%的工作时间写技术文档是很正常的。而作为高级研发者和系统分析员,这个比例还要高很多。缺乏文档,在未来的查错、升级以及模块的复用时就会遇到很大的麻烦。
3、需求理解与分析能力
对于研发工程师来讲,他们需要理解一个模块的需求,理解需求就可以完成合格的代码,但是对于研发项目的组织和管理者,他们不但要理解客户需求,更多时候还要制定一些需求。
4、 项目设计方法和流程处理能力
研发工程师必须掌握不少于两到三种的项目设计方法,并能够根据项目需求和资源搭配来选择合适的设计方法进行项目的整体设计。设计方法上选择不当,就会耽误研发周期,浪费研发资源,甚至影响研发效果。一个开发设计者还需要把很多功夫用在流程图的设计和处理上。
技术方向的敏感性,对技术趋势具备很强的判断力。保证公司技术储备跟市场需要接轨,这是技术负责人的最重要的核心能力。把公司的资源(人员、资本、设备、投入到最该投入技术地方,是很考验技术负责人的。也是技术负责人的首要职责。
作为技术负责人,对于技术开发流程具备深刻理解,帮助公司搭建好产品开发流程,保证产品技术开发按质按量低成本实现,是第二重要的能力。很多公司有自己的研发流程,但是跟公司的团队切合,并且流程使团队开发好公司的产品是一个不断优化的过程,需要技术负责人不断打磨。
5、复用性和模块化思维能力
复用性设计、模块化思维就是要程序员在完成任何一个功能模块或函数的时候,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,就会有更多时间和精力投入到创新的代码工作中去。
6、整体项目评估能力
作为系统设计人员,必须能够从全局出发,对项目又整体的清醒认识,比如公司的资源配置是否合理和到位,比如工程进度安排是否能最大化体现效率又不至于无法按期完成。评估项目整体和各个模块的工作量,评估项目所需的资源,评估项目可能遇到的困难,都需要大量的经验累积。
7、团队组织管理能力
完成一个项目工程,需要团队的齐心协力,一些技术性的指标和因素如下:
(1)工作的量化
没有量化就很难做到合适的绩效考核,而程序量化又不是简单的代码行数可以计算的,因此要求技术管理人员需要能真正评估一个模块的复杂性和工作量。
(2)对团队协作模式的调整
一个优秀的软件开发工程师应该能够根据程序员之间的能力水平差距,以及根据项目研发的需求,选择合适的组队方式,并能将责权和成员的工作任务紧密结合,这样才能最大发挥组队的效率。
管理讲求对人的管理,要对人有深刻的理解,给团队每个成员设置合理的目标和具体行动方案,让目标被成员认可,并且知道如何切实可行的去做。团队每个成员都有自己的优势,目标的制定需要结合团队成员的具体的优劣势,不可以统一标准,必须因人而异。
有些技术开发人员,可以把客户工程修改保证在2轮以内客户就满意和结束了,有些需要10轮等。这里就设计到做技术开发的思路和沟通能力问题。