研发管理的实质是解决以下三个问题:
1. 如何提升研发效率?
2. 如何保障研发质量?
3. 如何降低研发成本?
这三个问题,是作为技术管理者(CTO, 技术总监,架构师)无法逃避的问题,解决好了这三个问题, 就能做好研发管理。 下面就逐个分析下这三个问题。
如何提升研发效率?
提升研发效率的目的,是为了研发效率的最大化。
提升研发效率是谁的职责?通常大家都会认为,提升研发效率是每个工程师的职责,是分内之事,但我认为提升研发效率是技术管理者的职责,因为研发效率的提升最重要的是架构设计的提升,不管是后端架构还是前端架构。架构设计做得好的应用,整个研发团队的研发效率肯定是很高的,架构设计做得差,研发效率肯定高不了。
提升研发效率的方法,核心思想只有一个:复用。 复用思想能否做得好,不同的工程师,不同的团队的差别极大。 复用,简单的使用:写个方法,多个地方调用。 稍复杂点的使用:写个类/接口,用好继承,结合个工厂模式,进行封装调用,多处复用。再复杂点的:组件化编程,把常用的业务功能或展示交互封装成组件,哪里需要哪里就引入调用。还有没有再复杂点的?有,模块化编程,微服务化编程,把一类业务进行模块化或微服务化封装,统一对外提供接口服务。对于复用思想,绝大部分人最高也就只能认识到这个层面了,其实还有更高的复用思想,即“配置驱动开发”,这个留待后续章节再详细讲述。
提升研发效率另一种思想,就是把代码量降到最低,如果你能做到这点,就能极大提升研发效率,不仅效率能得到极大提升,代码量少,则意味着编码时间将大大缩短,研发工程师将有更多的时间放到真正重要的事情上去,用于提升程序效率与研发质量,同时测试工作量也将会大大降低。
如何保障研发质量?
质量与效率的关系是什么? 通常大家都认为:研发花的时间越少,则质量越没法保障(越差),研发时间越充足,项目质量就会越好。 实际情况真的是如此吗? 未必。 我认为,项目研发会有个最低时间,如果少于这个最低时间,则项目就没法真正进行开发落地。 这个最低时间因项目与团队情况而异。 也就是说正常情况下(不少于这个最低时间),花的时间越少,质量反而越高。从上一个问题,我们知道效率越高,则实际花费的时间就越少,开发的代码量就越少,这也就意味着可以更少的人参与,质量也将更有保障。
保障质量的方法,“复用”能有效保障代码质量。 复用意味着很多已经开发验证过的代码不需要重新开发了,直接使用就可以了。组件化开发,让一次开发测试完成后,多次多地复用,不仅降低开发测试的工作量,并使质量得到保障。模块化,微服务化开发也是为了更大层面的复用,可以更好的把控和维护,有利于质量的保障。“配置驱动开发”,可以升级到把很多开发任务本身都省去了,可以节省90%以上的开发时间,既然开发任务都不需要了,哪里还会有质量问题呢?
如何降低研发成本?
研发成本通常由两部分组成:研发人力资源投入和软硬件资源投入。软硬件资源又可以分为开发软件&工具资源和服务器软硬件资源(包括第三方收费服务,宽带,服务器等)。其中研发人力资源投入往往是主要投入部分。
研发效率的提升与质量的保障,可以有效降低研发投入成本。 研发效率高,意味着投入的人力资源可以大大降低,以前需要10个人开发的,现在只需要2-3个人即可完成。这是可以做到的。
架构设计做得好的话,应用性能也能得到很大提升,服务器资源就可以得到充分利用,可有效减少服务器硬件方面的成本投入。
研发管理,实际包含了很重要的编程思想,即 复用,更近一步,即面向对象,组建化,模块化,微服务化,配置驱动等。 这些本质上是架构设计,程序设计的一部分。通过架构设计最终解决团队研发的效率提升,质量保障,研发成本降低等问题。
注:第一次正式写编程思想类的文章,万事开头难,但总要从第一步走出。 文章内容纯属个人经验总结,若有写的不好的地方,还请大家多提提建议或意见,感谢大家!