大型项目技术负责人应该具备的能力

简介: 大型项目技术负责人应该具备的能力

这段时间部门做了很多项目,我也有幸负责了其中的一个项目。
谈谈我这段时间的感受吧,或许能给各位新晋项目技术负责人一点启示。

初做大型项目技术负责人犹如修炼,我提炼了技术负责人应该具备的以下能力:

自动化思维

将能想到的重复劳动做成自动化,比如自动化生成代码,自动比对分析项目中多个版本的区别。
我们的项目模式为:按月作为版本迭代的期限,也就是没到月底就会要求上线一个新版本,而在这个月的新版本开发过程中,还需要对老版本的新需求进行迭代和修改老版本的bug,那么此时就存在老版本bug修改了,但是新版本还是有对应的bug,老版本迭代的新需求需要做到新版本里面去等等,所以势必需要一个比对多个版本区别的程序。
在这个过程中,我大致解决了下面的问题的自动化

新老版本的数据自动化割接
自动化打包 私网工作流
数据库层代码自动生成
配置权限,维护权限
对接自动化及更新
比较多个版本代码的区别
编写格式化的接口文档
任务流程

后续的博客中我会挑有技术含量的部分详细说说实现原理。

极度抽象的逻辑思维

本质上讲就是对一种场景做技术抽象,提炼成算法模型或者设计模式的模型,然后再实现。
思考以下需求:
1、项目中所有的查询,和编辑(除修改密码)等要求去除用户输入的前后空格
2、当需要导入大量的数据的时候,如何提高导入效率,而导入的模块众多,如何做到统一?
3、对于一个系统,需要调用外部接口,当你的接口需要调用外部接口而相应又很慢的时候,如何去统一处理?
4、系统的各类关键操作需要存储操作日志,如何处理?
5、系统的某些模块遵循一定的数据权限(用户具有不同的角色拥有不同的可视范围)
上面的四个问题,都有一个共同的简单解决方案,即哪里需要做,我就去哪里写。这会带来一些问题:
1、对于同一个功能,不同的人写法参差不齐,后期维护升级的成本会很高。处处编写,处处维护。
2、开发人员会写很多业务无关的代码,而且会写掉,造成测试成本上升

所以,此时更好的方案是对这些通适需求进行抽象,然后形成统一的解决方案,尽可能的让开发人员感知较少或者无感知,排查问题也会比较简单。

以上面的需求为例,我想到了如下的解决方案:
1、去除前后空格,可以在请求拦截器中对请求的参数进行拦截,根据一定的策略拦截到那些需要去除前后空格的url的参数,如果是字符串类型,就去除前后空格。同时在数据库层查询和入库的时候,也对这些参数的值进行处理,一般的orm框架都提供了拦截器用于增加操作。
2、实现一个线程池组件,自动将导入任务拆分成小的导入任务,然后利用多线程的模式去提交任务。
3、暂无方案
4、由于日志是需要记录成功或者失败和上下文资料的,所以不能在请求拦截器里面处理,考虑利用切片编程,对所有的controller响应做处理。
5、在jwt里面放置一些权限信息,由于jwt不可更改的特性,就算用户解析到了自己的权限,也无法篡改,同时也无法造成越权,然后再利用请求拦截器对jwt里面的内容序列化成java对象注入到请求参数中,开发人员只需要在controller层接收一下这个参数并且放置到数据库层的查询中就行(数据库层是自动生成的)。
等等

极限编程的思维

这里说的极限编程狭义上是指的技术负责人自身应该具备高强度编程的能力,需要在极端压力的情况下也能保证写出的代码没有太大的问题。这里主要需要锻炼了逻辑思考能力,代码力和抗压能力。
广义上是一种敏捷开发的思维,要求项目团队保持加强沟通,勇敢反馈的态度,我总结就是不惧测试的bug,勇于修复bug;不惧新需求,勇于分析新需求;不惧批评,勇于弥补团队缺陷。
在极端环境中也能积极的去发现问题,解决问题。

丰富的编程底蕴

技术负责人要有广阔的技术眼界,对编程基础知识的强烈认知,对各种编程问题的丰富经验。
这一点,要做到,很难。人嘛,总是会沉浸在自己构想的虚拟世界中,总觉得自己什么都会了。

绝佳的动手实践能力

想到就去做,不要成为空想主义者

基本的运维知识

包括但不限于:服务器的各类命令,计算机网络的原理,安全领域相关的基础知识(漏洞产生的原理,解决方案)等等

应急响应方案-未雨绸缪

提前准备好各类场景的解决方案,避免临时需要快速寻找解决方案的问题。

海纳百川有容乃大

项目组成员技术水平参差不齐,无论出现什么情况,都要心平气和的跟团队成员进行交流,因为他们才是利益共同者,你们是需要一起战斗的。有句话叫兵来将挡水来土掩,没有过不去的需求或者批评。(ps:以前做纯开发的时候还真没面临这么多方来的压力)。一定要及时给予项目成员真心的称赞和鼓励。

心有猛虎,细嗅蔷薇

粗中有细,做技术负责人一定要胆大心细。包括:仔细读各类文档,仔细观察产品原型,仔细了解用户需求等等。
细节决定成败。

合理的项目控制

项目文档,需求管理,缺陷管理等等,推荐一个工具:语雀的缺陷管理,用起来简单好管理,刚好与它的知识库相结合。

抗压

这是最沉重的话题,压力这种东西,是自发产生的,而抗压这个主题要解决的事儿,就是需要发现自己压力产生的原因,然后分析怎么去解决。
这段时间,我通过以下分析和调整,压力有所减少:
1、压力来源于对未知的恐惧:那么解决方案就是尽可能减少未知
2、压力还来源于突然之间的紧迫感,解决方案就是深呼吸,减少这种紧迫感,同时在平时有时间的时候,增多应急预案,避免突然之间面临一些复杂的情况而又没有参考解决方案而带来的紧迫心情。临时找解决方案是对未知结果的恐惧,解决方案就是提前编排好各类场景,然后找到对应的解决方案并形成文档。

绝佳的自律

中午和晚上的时间安排,根据自己的生物钟调整,让自己处于恒定的学习周期中。

等等

目录
相关文章
|
20天前
|
项目管理 UED 开发者
优秀技术产品经理应具备的关键能力
在技术开发领域,技术产品经理在项目中起着至关重要的作用,他们不仅需要具备项目管理的技能,还需要精通技术领域,能够理解和引领团队在技术层面上的决策,他们以技术的视角对项目进行管理,确保项目按时高质量交付。而且优秀的技术产品经理不仅是项目组的主心骨,还是技术决策的参与者和项目推进的关键人物。那么本文就来探讨一下如何成为一名优秀的技术产品经理,一个优秀的技术产品经理应该具备的关键能力,希望能够为那些渴望成为优秀技术产品经理的人提供一些启示和指导。
23 2
优秀技术产品经理应具备的关键能力
|
10月前
|
架构师 项目管理
如何平衡架构师的技术能力和项目管理能力?
架构师和项目经理(PM)都是在项目中扮演着重要的角色,他们都需要对项目的进度和里程碑进行关注和管理。然而,过度关注进度和里程碑,很容易导致架构师“PM化”,从而脱离实际、脱实向虚。关于如何平衡架构师的技术能力和项目管理能力,个人认为一名架构师,需要有很强的技术能力,同时也需要对项目的进度和里程碑关心。然而,过度的关注进度和里程碑,很容易导致架构师“PM化”,从而脱离实际、脱实向虚。
129 1
如何平衡架构师的技术能力和项目管理能力?
|
前端开发 jenkins 测试技术
优秀的测试开发应该具备的六大能力
在国内测试开发很重要的一点是具备大部分测试所不具有或不擅长的coding能力以及技术广度,他可以通过借助已有的成熟工具框架或者二次开发,快速解决测试过程遇到的各种block效率的问题,以及为技术团队内部提供一些更高效的研发测试工具,提高交付过程的效率,并保障测试过程的质量。
优秀的测试开发应该具备的六大能力
|
存储 缓存 分布式计算
大数据架构必须具备的七大核心能力
大数据架构提供了新数据环境下的处理能力,大数据架构不仅必须扩展到包含传统和大数据源,而且还需要更广泛的功能集来支持数据的消费、处理和交付。
大数据架构必须具备的七大核心能力
|
机器学习/深度学习 人工智能 Devops
构建测试平台与对应的组织架构需要哪些能力?
腾讯、阿里、百度、华为等知名公司里的测试平台与测试产品越来越多,他们是如何做的,又有什么样的价值,来听思寒仔细给你解答。 ### 01 我们先来说下测试平台这几年开始火爆的原因。 随着DevOps与持续交付的成熟应用,交付速度越来越快,对测试的要求也会越来越高。很多测试团队中都有大量的测试过程需要执行,比如手工测试、UI自动化测试、接口自动化测试、性能测试、安全测试以及大量的非功能/专项测试
|
机器学习/深度学习 人工智能 运维
基于RPA的自动化优先,正在成为广大组织的主流管理思维
什么是自动化优先思维?它与RPA有什么关系?因何正在成为企业管理主流思维?
119 0
基于RPA的自动化优先,正在成为广大组织的主流管理思维
|
运维
初,中,高级的 ABAPer 应该各自具备什么水准的开发能力
初,中,高级的 ABAPer 应该各自具备什么水准的开发能力
179 0
|
架构师 Java
技术负责人所需的四个核心能力,你具备几个?
「技术负责人」这一称呼其实比较泛了。往大了讲,可以指 CTO、技术VP、技术总监,往小了讲,可以指 小组Leader、技术主管、架构师 等。 这些不同岗位的「技术负责人」在工作中会处理着各不相同的问题,因此对他能力要求的侧重点肯定也是不同的。
1538 0