文章目录[隐藏]
这几年从大数据开发工程师走到技术组长,我对技术管理的理解发生过一次明显变化。最早我以为技术管理主要是“把事情分下去”,后来在标准报表迁移、AIDA多系统迁移、数据仓库建设和云平台治理这些项目里,我逐渐意识到,技术管理不是简单管人,也不是把表格填完整,而是把分散的技术资源、业务目标、人员能力和外部支持组织起来,让复杂项目能够稳定交付。
我不喜欢形式化的管理动作,也不喜欢为了流程而流程。好的管理应该尽量少打扰人,但能让关键信息透明;好的流程不应该变成手工填表的负担,而应该和清单、工具、代码规范、测试记录、自动化校验结合起来,真正帮助团队减少返工、降低风险、提升交付确定性。
一、技术管理首先要理解技术问题
技术团队的管理和普通项目管理不一样。项目经理可以关注时间、资源和风险,但技术组长如果不理解代码、系统差异和数据链路细节,就很难做出有效判断。
在数据迁移和数据仓库项目里,很多风险不是从进度表上看出来的,而是藏在具体对象里:一个存储过程里有复杂游标,一个CLOB字段存在截断风险,一条SQL在原来的库能跑但迁到新库就运行不了,一个报表看似只是数据展示,背后却有多个DWS汇总层口径。
所以技术组长不能只看“完成百分比”。真正有价值的管理,是能判断哪些对象只是体力活,哪些对象有隐藏风险,哪些任务需要经验更强的人处理,哪些地方必须提前制定统一标准。
二、复杂项目要先拆清楚
我第一次明显意识到自己不只是开发,而是在做技术管理,是在某个系统数据库迁移时。当时项目涉及大量表、视图、存储过程和脚本,如果只是口头说“这个人负责这一块”,可能就会出现进度不清、对象遗漏和测试口径不一致的问题。
所以我开始要求建立数据对象列表,用列表显示交付进度。每个对象是否完成转换、是否自测、是否交叉测试、是否进入UAT,都可以被跟踪。项目不再依赖某个人记忆里的状态。
后来在多系统迁移中,这种思路进一步成型。一个系统如果太大,就不能简单按人切分,因为一个人很难独立吃下完整链路。我的做法是采用“核心系统按阶段、周边系统按人划分”的混合方式:核心系统开发上线的阶段推进;周边系统则根据复杂度和人员能力分配。
这个过程让我更明确了技术组长的角色:不是只分配任务,而是把复杂系统拆成可并行开发、可验证、可回滚的小块,再把合适的任务给到合适的人。复杂任务要给能判断风险的人,标准任务可以给执行稳定的人,新人可以从规则明确、边界清晰的对象开始。技术管理不是追求每个人任务数量相等,而是追求整体交付风险最低。
三、技术标准是为了减少重复判断
在迁移项目中,如果每个成员都用自己的方式处理数据类型、空值、各类函数、异常逻辑、命名规则和部署脚本,短期看似灵活,长期一定会变成维护成本。尤其在多系统、多对象并行迁移时,标准不统一会带来大量隐性返工。
因此我会把反复出现的问题抽象成规范,比如数据类型迁移规范、存储过程语法迁移指南、ETL命名规范、批次控制规则、异常处理模板、部署回滚脚本要求等。规范不是为了显得正规,而是为了减少同类问题的重复判断。
我理解的技术标准,本质上是一种经验复用。一个人踩过的坑,不应该让全组再踩一遍;一个项目验证有效的方法,也不应该只停留在个人电脑里。
四、质量管理要从“相信完成”变成“验证完成”
数据项目最怕的不是代码没写完,而是代码看起来写完了,数据其实不对。尤其在医疗、金融等场景中,数据质量问题可能不会立即报错,但会影响报表、指标、业务判断和上线信任。
所以我更认可“可验证的完成标准”。一个任务不能只说开发完成,还要明确验证方式:记录数是否一致,字段哈希是否一致,关键报表是否逐单元格比对,异常差异是否有解释,新旧系统是否通过并行验证,回滚方案是否准备好。
在多个迁移项目中,我推动过表级、字段级、记录级三级递进的数据质量校验。表级校验解决对象和记录规模问题,字段级校验解决字段映射和空值率,记录级校验则通过唯一ID排序后逐单元格对比。
质量不是最后几天测试人员的事情,而是从任务拆解时就要定义清楚。每个开发任务都应该对应自测、交叉测试和验收标准。
五、流程要服务交付,而不是消耗团队
我参与过CMMI相关实践,也确实从中受益。它让我看到,计划、需求管理、估算、评审、验证、根因分析与控制并不是抽象概念,而是可以落到日常项目里的动作。
但我也认为,流程如果只靠手工填表,很容易让团队反感。尤其技术人员更关注实际问题,如果流程不能帮助他们减少重复劳动、减少返工、减少争议,就会被视为额外负担。
我更能接受的方式,是把流程和信息工具结合起来。设计表单与多维表格,提供可选项让成员快速完成,并做到表与表的关联。
好的流程应该轻量、可用、能复用。它不是为了管住人,而是为了让复杂协作不依赖个人记忆和临场沟通。
六、技术组长要协调的不只是开发资源
技术管理既要管理技术资源,也要协调其他方面的支持。一个数据项目能不能顺利交付,往往不只取决于开发写得快不快,还取决于业务口径是否明确、测试环境是否可用、客户UAT是否配合、运维窗口是否安排、权限是否开通、上下游系统是否按时提供数据。
在这些环节里,技术组长需要把技术问题翻译成别人能理解的影响。比如某个字段口径不明确,会影响哪些报表;某个上线窗口延迟,会影响哪些后续测试;某个权限没开,会导致哪条数据链路无法验证。只有把技术风险和交付影响说清楚,才能争取到外部支持。
这也是我理解中技术管理和单纯开发最大的不同。开发可以专注解决自己手上的问题,但技术组长必须看到问题之间的依赖关系。一个人的任务卡住,可能不是能力问题,而是需求没澄清、数据没准备、环境没打通、标准没统一。技术管理动作的价值,就是尽早发现这些阻塞并推动解决。
七、我的技术管理方法论
回头看这些项目,我会把自己的技术管理经验概括成五个动作:
第一,识别真实目标。不是只看需求文档写了什么,而是理解客户、业务和系统真正要解决什么问题。
第二,拆解复杂任务。把大项目拆成可并行开发、可验证、可回滚的对象、阶段、链路和验证点,让每个人知道自己负责什么,也让项目状态可以被看见。
第三,建立统一标准。把重复出现的问题沉淀成规范、模板和清单,减少团队成员之间的理解差异。
第四,定义完成标准。任务不是写完就结束,而是要能被测试、被比对、被追踪、被回滚。
第五,协调外部支持。技术问题往往需要业务、测试、运维、客户和项目管理共同解决,技术组长要能把问题说清楚、把影响讲明白、把资源协调到位。
我本身并不是喜欢强控制的人,所以我更倾向于用清晰目标、透明信息和可复用方法来管理团队,而不是用高频催促和形式化表格来推动工作。未来如果继续承担技术管理角色,我也希望延续这个方向:少一些无效管理,多一些真正能帮助团队交付的机制;少一些口号,多一些可验证、可复用、可传承的方法。




评论