关键词:
许多企业的开发需求是存在波动的,这就要求技术支撑能力也有一定的伸缩弹性。本文简单谈一下怎样构建有弹性的技术支撑能力。立足点是技术团队具备全栈能力,但人员配置偏少,在需求突然增加的时候,需要引入外包人员。
这种情况下,需要有一个完善的管理体系,来确保外包人员能够真正发挥作用,并且其贡献的代码不会成为将来自由团队的负担。
管理层面
需求控制
要建立比较强的需求控制能力,包括:
- 能迅速识别并整理需求,形成规范、全面、详细的需求文档,对开发团队而言,比较重要的就是:交互原型设计文档,视觉设计相关的材料,算法具体描述等。
- 需求文档能够做到整齐详尽,不遗漏需求,尽量减少歧义,各种逻辑分支描述清楚,不能只有一个主干流程。
- 设计文档要有规范,手机端、PC端基于什么尺寸进行设计,给出的设计图最好可以通过工具自动标注和切图,避免设计图的缺失,减少技术和设计师沟通的工作量。
配置管理
要建立规范的代码和配置管理体系。
- 代码权限控制,原则是程序员尽量只拥有其工作所需的最小权限。
- 分支、主干、测试环境、生产环境之间的对应规则要清晰。
- 代码合并由谁来控制,合并之前要满足哪些条件。
项目管理工具
要有成熟可用的项目管理工具,方便监控项目进度,需要有以下功能,可以由一个或者多个工具共同满足。
- 任务和进度监控。
- Bug管理。
- 测试用例管理。
- 文档管理(用来管理项目各类文档)。
- 知识共享(用来向团队所有成员公开各类规范)。
技术层面
持续集成
代码的提交和合并来触发自动化的代码规范检查、持续打包、自动化测试(如果有的话),尽早发现代码层面的低级问题。
在线联调环境
考虑到外包的人员未必总是在甲方办公室,也考虑到远程加班的可能性,必须有在线的联调环境。
接口文档工具
最好使用RAP2/Swagger/Showdoc/YAPI之类的接口文档工具,方便文档的生成,通过mock server方式来提高前端开发效率。
统一的技术栈
- 统一的技术栈,有利于人员在不同产品、项目之间进行调配。
- 开发时使用的各类工具代码,也应该尽量统一,比如发邮件、发短信、生成随机数这类日常工具代码,也要统一,减少重复工作,也方便维护。
- 开发环境的配置、IDE的使用,可能的情况下也尽可能统一,目的是减少因环境差异引起的不必要问题(不强求)。
解耦复用
对系统进行解耦,对模块进行复用。原则是降低代码的逻辑复杂性,降低对程序员的要求。
- 前后端要分离。
- 必要的时候做服务拆分,建立微服务架构体系。
- MVC里面的层级拆分,数据层,业务层,控制层等。
以上的管理体系建设,是一个基础,有了这些,需要应对额外的需求时,就可以更从容有序,工程质量也更可控。外包力量的引入,有两种方式。
项目外包
如果需求中有一部分比较独立,与其他系统之间关联不大,可以考虑作为一个项目整体外包。管控重点是:
- 需求必须清晰明确,需求文档的描述尽量细致,避免疏漏以及歧义。
- 有清晰全面的需求文档之后,再谈价格和工期。
- 外包商必须基于我方技术规范进行开发。
- 数据库表设计、架构设计、新技术的引入和选型,必须经由甲方技术负责人同意。
- 项目开发阶段,持续以一定的频率评审代码,并及时跟踪修正情况。
人员外包
需求没有足够清晰全面,时间紧张,或者很难切出一个相对独立的模块时,可以考虑采用人员外包的形式。管控重点是:
- 对人员进行技术面试,确保其技术能力基本达标后才可同意其到岗。
- 人员到岗后,第一时间提供各种规范、要求以及说明文档,并限定期限对外包人员进行相关考核,确保其对我方现有体系有足够了解。
- 工作安排上,和内部员工在能力偏差不大的情况下,要一视同仁,以同样的标准来进行要求,避免区别对待。
- 公司福利上,对外包人员也尽量提供一视同仁的待遇,避免区别对待。
- 其他方面,对公司内部员工如何管理,对外包员工如何管理,就可以了。
怎样应对“需求不确定型项目”?
...c;项目经理不能或不方便参与,打下手,这类项目怎样办?要深层次了解客户的想法,各种利益,地盘等,这很难做得到吧?并且也要花不少时间去沟通吧?做需求分析是不是应该偏向于把真实得业... 查看详情
作为产品经理,如何有效应对需求变动和技术开发?
...操作,在迭代产 品的过程中 产品经理 如何去应对需求变动和技术开发。 企业情况 创业公司当中,是独裁还是群策,很大程度上取决于老板的心情,每个人对于公司的产品都有1-10 分的看法,这里的看法指的是员... 查看详情
用户意见千千万app开发该如何应对处理
...意见千千万APP开发该如何应对处理 无论我们开发怎样的app,其最终目的都是为了获得用户的认可。只有用户认可了,才有可能帮助推广成为平台的忠实用户。若想获得用户的认可,首先产品得是能解决用户需求的,其次... 查看详情
编码规范--如何应对需求变更(代码片段)
如何应对需求变更 现在的程序员为什么这么累,其实很大程度上来说是加班原因使编码质量占了大部分因素,但是不少同学都不认为是代码质量导致的加班,都认为是不断的需求改动导致的加班。但是话又说回来,谁的需求... 查看详情
突发事件的下poi数据应对策略
近日来武汉新型肺炎对地图行业的及时应对提出了考验,大量和武汉肺炎的POI需要上线,很多服务行业、电影院,景区等POI暂停营业。这些信息在地图上显示和POI实际状态是否相同,能否真实的反映现实世界,是否能为用户... 查看详情
挨踢部落坐诊第六期:机器学习如何判断突发情况?
活动说明:挨踢部落是为核心开发者提供深度技术交流,解决开发需求,资源共享的服务社群。基于此社群,我们邀请了业界技术大咖对开发需求进行一对一突破,解除开发过程中的绊脚石。以最专业、最高效的答复为开发者解... 查看详情
测试如何应对新的开发模式?
1、为什么需要测试左移,测试右移?测试可以保证产品质量,重要性不言而喻。但,要做好测试也比较困难,需要克服很多挑战。尤其是,持续交付、敏捷开发等开发模式为传统软件测试方式带来了更大... 查看详情
app开发怎样了解客户需求
APP开发怎样了解客户需求 一直以来困扰着无数app开发公司的问题莫过于该如何挖掘用户需求了。很多企业在找app开发公司时只是带着一个想法,他们突然想到了一个好的点子或者是基于扩展自己业务的需要。具体的用户... 查看详情
前端框架选型
...架构的设计和演进2.寻找架构的关注点性能性能需要达到怎样的性能指标、可以实现多少用户的并发安全如何保障用户安全、如何应对客户端攻击、如何应对服务端攻击平台化是否需要作为一个平台,来承载其他系统代码维护是... 查看详情
如何应对雪崩式的请求
如何应对雪崩式请求?雪崩式请求:当服务提供方由于某种原因挂掉导致服务调用方阻塞,最终引发系统的雪崩式崩溃称为雪崩。通常可分为两种:缓存雪崩和应用雪崩缓存雪崩:缓存服务器挂掉、突发流量导致局部缓存失效、... 查看详情
一个好的olap框架
...用,只需关注业务即可)2、高可维护性(冗余代码少,应对需求变更的能力强,最少的代码变更实现最多的需求)3、高可移植性(新项目上线可快速复用已有代码,要求框架的通用性、精炼度要高)二、为什么需要olap框架?1... 查看详情
敏捷开发和极限编程
敏捷软件开发(Agilesoftwaredevelopment):它是一种用来应对软件需求的不断变更的新的软件开发技术。强调整个开发过程中业务人员和开发人员紧密协作在一起,面对面交流,频繁性的交付软件,随时应对需求的变更。追求在尽可... 查看详情
如何应对aiot对芯片的碎片化需求?
近几年,尤其是2018年以来,国产芯片产业迎来了前所未有的发展高潮。从政府到民间,智能物联网(AIoT)时代已来,AIoT设备开始部署在越来越多的领域。很多人家中已经拥有可以通过手机APP控制的嵌入了... 查看详情
记首次敏捷开发
...调整范围内,有些人独行惯了,对于自己的东西总会有些突发性的新想法,而不顾前台实现情况,“反正也差不多啊,改动又不 查看详情
作为产品人,如何更好的应对需求变更?
...计划对于产品经理来说可能并不是项目中最难的事情,要应对计划之外的情况,才是最令大家头痛的地方。在项目实际推进过程中,不加控制的需求变更往往给项目带来沉重的负担和无法预料的风险。因此,设计一套合适的需求... 查看详情
我的编码习惯-如何应对需求变更
原文出处:晓风轻 我之前的文章程序员你为什么这么累?中,我个人观点是加班原因是编码质量占了大部分因素,但是不少同学都不认为是代码质量导致的加班,都认为是不断的需求改动导致的加班。这位同学,说的好像别... 查看详情
测试人员遇到不断变化的项目需求该如何应对?
需求频繁变更这个产生的主要原因是: 1.前期需求调研工作没有做到位,在需求调研时没有真正深入了解用户需要什么东西?用户做这个东西的目的是什么?为什么要这么做? 2.项目经理对项目掌控力度够,在... 查看详情
我们应当怎样做需求分析
软件需求分析就是把软件计划期间建立的软件的可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对... 查看详情