当前位置: 首页 > 科技观察

外包这几年,技术和管理经验总结

时间:2023-03-20 16:18:03 科技观察

——由于种种原因,最近萌生了跳槽的念头,联系了过去不错的同事。多年的管理和技术经验,随便跟老大聊聊。在这种背景的驱使下,我决定将四年多的外包工作经验总结出来分享给大家。估计90%以上的java程序员都会对下面的系统感兴趣。2010年4月加入华为外包公司,5月跳槽到现在的公司。到现在为止我一直在这里。我目前是公司的认证PM,华为技能等级为五级。技术文章:这些年我一直在做同一个项目。某个业务分发网关管理系统(这里简称SPXX)主要用于管理网络中的所有BOSS系统和所有网元。用于数据通信的Webservice技术,总体结构如下。营业厅BOSS(多个)<—>SPXX(一个)<—>网元(多个)1、组网说明:一套SPXX系统支持北方320个营业厅BOSS同时在线分配,北方支持64个网元南方版本和实例。2、系统结构:分布式系统有6个↑进程,支持增加扩展板进行负载分担。进程之间的数据通信是通过Mina和Jms进行的。标配主备双活双板,支持倒换和扩展。主要涉及Java、C++、Shell、Python、VB、Xslt等语言,大致结构如下。1)业务发布流程(Mian用于进程间数据通信)营业厅BOSS(多个)↓↑Webservice调用(ACL/用户名密码认证)—SPXX——————————————————————————————————DPU4N(北方业务分发进程,监听SOAP、TL1、MML等消息端口,支持并发320连接)↓↑MinaSPU(消息处理进程,有多个,支持随时扩容,DPU4N回合选择)↓↑MinaDPU4S(SouthboundConvergence)——–SPXX——————————————————————————————————————————————↓↑Webservice调用网元(多个)2)配置管理进程(JMS用于进程间数据通信)PMU(Tomcat进程)、CMU(数据持久化进程))、OMA(配置管理进程)、JMX(进程监控进程)、Common(非进程,公共代码项目)3、工作原理:使用MyEclipse作为开发工具,共8个项目。切换、支持扩容、升级等操作。1)系统有Web管理界面,主要用于业务和配置管理,包括系统用户、BOSS用户、角色权限、日志、网元版本、网元实例、业务流程管理、用户策略管理、去中心化权限和域管理、Batch/Bulk批处理等功能。A。系统北端使用Webservice调用。配置管理主要是为北向BOSS配置ACL和用户名密码认证信息。只有认证通过的消息才允许分发给网元;b.系统可以为每个BOSS用户指定服务发行权限和权限下放,即限制部分用户只能开户或改号,部分用户只能设置第139段等;d.SPXX系统本身没有任何业务,只有网关管理,主要是网元提供的wsdl接口。SPXX系统南向有十几个网元。每个网元使用SPXX系统提供的模板工具生成接口包(包中包含wsdl接口文件),然后将包加载到SPXX系统中,然后添加一个Instance对象(该对象包含网元IP/端口/服务名称),SPXX系统会根据网元加载的接口包自动生成服务提供接口(wsdl接口文件本身包含命令和参数类型、参数范围等信息),自动生成的界面仅用于维护。BOSS需要使用接口包中的wsdl接口进行二次开发,可以屏蔽BOSS直连十几个网元。只要连接到一个SPXX系统,SPXX系统就会管理所有网元。避免界面混淆的元素;C。系统支持业务定制功能,内置业务流分析引擎,支持多网元命令封装。主要原理是通过XML编写一套业务流程文件和wsdl接口,然后将业务流加载到SPXX系统中,再将wsdl接口发布到BOSS系统中。当BOSS系统向SPXX系统发送命令时,系统通过机制判断该消息为业务流,然后通过命名空间path+command找到XML脚本解析其中定义的原子命令,分解原子命令发送给各个网元,然后将各个网元的返回结果按照XML脚本定义的规则组合起来返回给BOSS系统,解决了一个账号呈现十几条命令的问题向BOSS开放只需一个命令即可。此外,业务流脚本支持定义变量、循环、条件分支判断、失败回滚等操作。说白了,SPXX系统提供了一套自己的编程语言和语言解析器。d.系统还提供了批量发行的功能,类似于市面上的充值卡,直接开通的手机卡都是通过批量开户完成的。支持分步累加批处理和多个命令放在一个文件中的批处理。2)分布式进程的主备双活。这里双活的概念是部署到两套单板上,两套单板都处于active状态。单板挂掉不影响业务发放。如果进程挂了,JMX会进行自动修复,如果多次修复不成功,会进行切换操作,支持升级和打补丁。3)工具的其他流程功能和工作原理这里不再详述,在后续博文中输出。管理:这里必须植入背景。早期,我们的团队管理规划不清晰,人员技能过于单一,系统过于复杂。将简单的WEB系统改造成多进程的分布式系统,涉及到很多技巧。要求也比较搞。导致版本转移测试延误和错误修正以及修改不完整的问题非常严重,经常被客户投诉。进入项目不到半年,项目经理、区域经理迫于压力相继离职,每天加班的老员工也相继离职。该项目濒临死亡。半年才勉强交付一个版本,客户让我带一群人现场交付。合作方式:每个版本需求包分为两部分,客户+合作伙伴共同开发并合并到同一个SVN库中,双方投资比例为3:7。独立运营:我们的开发模式是敏捷开发,一般一次迭代2周左右,整个开发阶段有4到5次迭代,一个版本大约45000行代码。1、任务分配:客户PM跟我划分交付特性,然后我和核心员工把每一个需求分到负责人。这里主要是每个人的claim系统,也会根据重要程度来划分;2.方案制定:我们内部制定了完整的开发流程,所有成员可以根据流程特点在2天左右给出交付方案;3.任务跟踪:利用晨会,每个成员讲述自己的计划完成情况和下一步计划。反馈风险和寻求帮助。我主要解决风险求助,纠正计划偏差;4.流程保障:我们有专门的SVN目录,用于归档开发和日常规范的流程规范文档,包括迭代开发流程规范、特征系列&回复流程规范、检查格式规范、编码规范(包括开发者要求的规范)customer)、传输测试CheckList规范等。统一项目人员操作规范和输出规范,确保交付结果。因为有了这一系列的流程保障,我可以把管理的工作时间缩短到每天2小时左右,剩下的时间和组员一起写代码,处处以身作则,迁移保障流程小组成员;5.技能提升:项目各模块采用代码责任域制。共有19个模块有地主和副地主。每个人至少有2块土地。我们定期进行代码互查,挖掘历史版本问题,编写知识点文档。根据每周的知识点文档,经过两次下午茶培训,人员技能增长的效果非常明显。多个模块都有专家。房东基本可以在一线处理紧急问题;6、团队活动:我们每个月都会组织两人一组的活动。我们已经翻遍了深圳的名山、穿越、烧烤、骑行等,80%的员工已经工作三年以上;工作成果:1、所有工作一年以上的员工均具备独立开发能力。我们的迭代开发流程:从特性熟悉、大纲设计、串扰、模块设计、模块防御、BBIT用例编写、编码、用例测试、VT、迁移测试全部由一个开发者完成。功能交付负责人完成安装、升级、前端开发全过程,效率和质量满足客户要求;2、项目再次出海交付。经过一年多的现场改造,我们的交付能力已经基本与客户的员工持平,我们又实现了离岸交付;体会:一个团队制定合理的流程规则非常重要,而通常管理者在人事管理和任务跟踪上花费过多的时间和精力,而团队成员却把时间浪费在琐事上。1.我们的项目经理在项目前期制定交付计划,与客户就任务交付及反馈机制达成共识,并与客户维护需求清单,让团队成员在事后无处反省他们已经完成了他们的工作。2、每天早上的晨会,检查计划是否正常进行,解决每个成员目前遇到的困难并寻求帮助,让成员可以专心写代码,四处交流,寻求帮助是每个程序员的通病,尤其是外包公司,别让他们浪费你的时间在这上面。3、尊重每个成员的想法,培养他们规划自己工作任务的能力。我们的管理者只需要评估计划的合理性,是否在允许的效率和可接受的风险范围内,就可以让团队成员快速成长。两年后,你的团队已经不缺少关键成员了。——————————由于时间关系,后面会补上。第一次写博文,自己的文笔水平有限。https://img.ydisp.cn/news/20220914/ktftpkfqlhr.html