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

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

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

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

自动化思维

将能想到的重复劳动做成自动化,比如自动化生成代码,自动比对分析项目中多个版本的区别。
我们的项目模式为:按月作为版本迭代的期限,也就是没到月底就会要求上线一个新版本,而在这个月的新版本开发过程中,还需要对老版本的新需求进行迭代和修改老版本的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、压力还来源于突然之间的紧迫感,解决方案就是深呼吸,减少这种紧迫感,同时在平时有时间的时候,增多应急预案,避免突然之间面临一些复杂的情况而又没有参考解决方案而带来的紧迫心情。临时找解决方案是对未知结果的恐惧,解决方案就是提前编排好各类场景,然后找到对应的解决方案并形成文档。

绝佳的自律

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

等等

目录
相关文章
|
7月前
|
项目管理 UED 开发者
优秀技术产品经理应具备的关键能力
在技术开发领域,技术产品经理在项目中起着至关重要的作用,他们不仅需要具备项目管理的技能,还需要精通技术领域,能够理解和引领团队在技术层面上的决策,他们以技术的视角对项目进行管理,确保项目按时高质量交付。而且优秀的技术产品经理不仅是项目组的主心骨,还是技术决策的参与者和项目推进的关键人物。那么本文就来探讨一下如何成为一名优秀的技术产品经理,一个优秀的技术产品经理应该具备的关键能力,希望能够为那些渴望成为优秀技术产品经理的人提供一些启示和指导。
100 2
优秀技术产品经理应具备的关键能力
|
4月前
|
项目管理
软件项目经理需要具备这 11 个能力
软件项目经理需要具备这 11 个能力
298 1
|
5月前
|
移动开发 前端开发 架构师
前端架构师需要具备什么能力以及代码能力?
【7月更文挑战第17天】 前端架构师是技术、领导与管理的融合,需精通HTML/CSS/JS及React/Vue等框架,擅长工程化、跨平台开发与安全。他们设计高效架构,优化性能,领导团队,做技术选型,并持续学习分享,确保代码质量和团队成长。
204 7
|
7月前
|
缓存 监控 安全
如何设计大型项目技术运营服务架构
【2月更文挑战第3天】如何设计大型项目技术运营服务架构
456 1
|
运维 监控 NoSQL
【面试精品】运维工程师需要具备的核心能力有哪些?
【面试精品】运维工程师需要具备的核心能力有哪些?
657 0
|
前端开发 jenkins 测试技术
优秀的测试开发应该具备的六大能力
在国内测试开发很重要的一点是具备大部分测试所不具有或不擅长的coding能力以及技术广度,他可以通过借助已有的成熟工具框架或者二次开发,快速解决测试过程遇到的各种block效率的问题,以及为技术团队内部提供一些更高效的研发测试工具,提高交付过程的效率,并保障测试过程的质量。
优秀的测试开发应该具备的六大能力
|
存储 缓存 分布式计算
大数据架构必须具备的七大核心能力
大数据架构提供了新数据环境下的处理能力,大数据架构不仅必须扩展到包含传统和大数据源,而且还需要更广泛的功能集来支持数据的消费、处理和交付。
大数据架构必须具备的七大核心能力
|
数据可视化 搜索推荐 IDE
一款具备零代码和低代码能力的大数据可视化分析平台
什么是低代码平台: “低代码开发”旨在开发人员可以通过编写少量代码就可以快速生成应用程序的一种方法。 使用低代码开发平台类似于使用IDE,因为它包含了一套可以供开发人员直接使用的功能,和一套供开发人员使用的工具。然而,它实际上能提供的远远超过一个传统的IDE。简单来说,低代码开发就是将已有代码的可视化模块拖放到工作流中以创建应用程序的过程。由于它可以完全取代传统的手工编码应用程序的开发方法,技术娴熟的开发人员可以更智能、更高效地工作,而不会被重复的编码束缚住。相反,他们可以将精力集中于创建应用程序的10%部分,并使其具有与众不同的功能。与“低代码”开发相对的另一种方式是编写数千行复杂的代码和语
一款具备零代码和低代码能力的大数据可视化分析平台