希望通过互联网+TEAM BLOG 为团队建设综合底座,帮助小伙伴们快速学习、掌握方法、进入协作状态,为项目产能、质量双升奠定基础。
随着我们项目经验的积累,我们越来越深刻的认识到,技术团队对项目实施的影响是有限的,需求理解、产品设计、项目管理、测试工程等领域也对项目成败起到至关重要的作用——TEAM BLOG 是我们团队的纲领性文件。
我们的愿景
希望通过 TEAM BLOG 逐步积累经验、教训,形成制度、规范和方法,提升团队的项目实施效率。同时,也希望 TEAM BLOG 能够抛砖引玉,启发大家的思考。请注意,TEAM BLOG 不是我们团队的政治正确,它仅仅是我们现阶段对事物的理解,大家辩证来看,也欢迎质疑和讨论。
我是谁?
正式开始前,先问问自己几个问题吧
框架代码
TEAM-BLOG
vuepress 的技术规范文档,人人都可以参与编写
Java 开发框架
Java-Develop-Platform 是 Java 开发框架
Java 模板项目
Java 模板项目,下载即可用,数据库连接到测试环境上,目前包名叫做 demo,大家自己改下包名为自己的包名
项目背景
历史上,都是 TerryQi 负责构建初始化的项目,基本上都是从成熟的项目中,挑挑拣拣,把核心的功能提取出来。那么随着公司的发展,越来越多的项目产生,那么就需要一套模板项目,支持大家快速构建系统。Java 模板项目集成了 RBAC,基本的 Swagger 配置等,可以快速构建起项目基础,具体
https://gitee.com/qrqy/java-base-template.git
如何使用
下载项目后,你需要:
- 创建数据库,并初始化数据,/docs/sql/init/initdb.sql 就是初始化的数据,此外,你还需要手动创建视图,视图为 user_role_view.sql,因为导入的方式下,视图有时会创建失败,所以建议还是导入数据库后,手动创建下视图
- 修改一下配置文件,application-dev.yml 中,配置数据库连接地址、项目名称等
- 修改下包名,模板项目中,报名为 com.qrqy.demo,将 demo 改为你的项目名,同时要修改 Application.java 中的包名数据,即 demo 转换为你的包名
- 在项目下,有 settings.xml,maven 要配置私有仓库
- 可以从 test/init/InitAdminScript 下的 createAdmin()方法来初始化管理员,因为也许你需要将 sys_user、sys_account_login、sys_account_auth sys_user_role 等表给清空掉,那么第一个管理员用户可以通过这个方法创建
@SpringBootApplication(scanBasePackages = {"com.qrqy"})
@EntityScan(basePackages = {"com.qrqy.demo.dao.entity"})
@EnableJpaRepositories(
basePackages = {"com.qrqy.demo.dao.repository"},
repositoryFactoryBeanClass = BaseSqlRepositoryFactoryBean.class
)
@EnableJpaAuditing
@EnableAspectJAutoProxy(proxyTargetClass = true)
@RestControllerAdvice(basePackages = {"com.qrqy.demo.controller"})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
以上如有问题,请 call TerryQi
php 模板项目
php 模板项目,下载即可用, Laravel 项目开发框架
WEB 框架——Element-vue-admin
管理后台框架,基于 vue-element-admin 封装的管理后台
WEB 框架——Arco Design
管理后台框架,基于 Arco Design,Vue3+TypeScript+Vite
代码地址
https://gitee.com/qrqy/vue-base-arc.git
如何使用
请注意,这套管理后台是配合 Java 的模板框架来实现的,其中:
- 要修改下配置文件和项目名称,更换下项目的 logo
- 接口在/src/api 下,那么你要使用综合工具平台来生成接口
小程序框架
小程序目前使用 uniapp 框架
青青负责小程序的模板,目前我们通过 uniapp 来进行小程序的开发
清理脚本工具
clear.sh 是宝塔和/home/app/services 的清理脚本的工具
直接执行 bash ./clear.sh 就行
联系方式
大家有问题,可以随时 email 我,terryqi@yisa.art和qi.zang@qrqy.net,邮箱日日查,48 小时响应。
我是技术人员
先回答几个问题,你的痛点有哪些
你会复用别人的代码么?
大家很少或者根本不会复用他人的代码,原因是什么?
- 不了解其他人的项目和业务,不知道哪里可以进行复用
- 他人代码质量不高,读起来费劲,封装的不好
- 没有文档支持,copy 不明白,还不如自己写
- ...
我们总是需要重复写一样的代码么?
是的,每个人都在重复编写相同的功能,虽然业务有所不同,但一些基础模块我们应该有底座
- 哪怕是登陆、注册这样通用的流程,不同的项目也不一样
- 大家重新在编写相同的代码,质量低、交接能力差
- 传递知识的成本高,团队难以形成合力
- ...
我们团队的技术氛围友好么?
有一点点的友好,最起码有一些规范,但还有很大的提升空间
- 新人来了应该有体系化的引导文档,让其了解我们的实施规范和一些协作经验
- 技术团队的知识应该可以共享,当然,更重要的是大家独立的检索方法、解决问题的能力
- 持续迭代和提升,深度思考能力不足,要考虑长远,做储备
- ....
我们如何解决上述问题
客观的说,我们的项目绝大多数情况下都是应用级开发,本质上我们面临的不是技术问题,而是工程化问题,可以依靠持续的过程优化来提升,例如:
- 我们做一些框架和组件,自动生成代码,提升效率和规范性
- 我们封装一些标准化的 PAAS、SAAS 能力,为应用提供服务(例如实时消息能力、业务统计能力、文件预览能力等)
- 我们进行技术培训、输出高质量项目供参考,安排专人负责实施提升工作
只要我们有提升的意识和愿景,我们就能持续提升!
我是产品人员
产品经理是团队的核心,直接影响项目的交付,同时,希望我们有一天找到一个方向,打造一款属于公司的优秀产品。
我是否认清工作职责?
实事求是的讲,公司对产品团队有很高的期待,产品团队是接下来的建设重点,也有很大的提升空间。
- 产品经理是下限特别低,同时上限又特别高的一个职业。产品经理大约在 2014 年确立角色,以往叫做需求师,负责对接客户需求,由于逐步扩展职责、界面,因此催发出产品经理的职位,我们公司产品经理是核心,大家都要围绕产品经理来协作
- 我们的产品经理大多数停留在需求记录员的角色上,往往是听取客户需求,协助实现原型,当然想做好这个角色也很不容易,但是还有更进一步的提升空间
- 往往我们听到产品经理为自己粗糙的产品原型找借口——时间太紧张,担心给技术团队增加工作量。事实上,需求梳理不清晰是对技术团队最大的困扰
- 产品经理更多的是对外,即与客户来协同,例如:初期和客户沟通需求;阶段性做汇报(例如完成某个核心需求),如果需求偏离尽快调整;项目交付前参与测试和验收;项目交付时做好收尾;维护期内定期做回访,获取优化点。
- 产品经理绝对不仅仅是输出原型,在整个项目实施周期内,都应该是深度参与的状态,我们报项目成本,产品经理一定是满额参与全部项目生命周期的
- 产品经理要关注客户服务,是公司对外服务的窗口,也是下一步团队提升的关键点
- ...
总之,产品经理的职责是:准确把握客户需求、高质量交付项目、提升客户满意度。现阶段,产品经理是公司的核心价值,我们要着力提升产品团队的能力和意识
产品经理的交付物
往往一个事物我们要从源头来治理它,问题和风险就像水面的波纹,影响范围将逐步扩大。那么对于项目来说,产品设计工作就是水波中央,产品设计质量的高低直接关系到实施成本和效果。请注意,我们要求项目经理也要有产品意识,要协助产品经理把控产品设计
产品经理应该交付什么?
- 产品原型
我们非常理解时间、成本和质量的关系,但产品经理要尽可能的提升原型质量。如果在项目初期比较紧张,那么实施过程中也可以逐步完善原型,要反复推敲自己的原型,那么给几个参考点:
- 产品原型是否完整?例如管理后台的原型,往往缺斤少两,比如导入功能,导入功能可能是系统中最复杂的设计点,导入表格是什么样子,整体导入的体验什么样,导入错误如何提示用户?往往我们接到的需求原型是导入按钮,没有其他逻辑说明...
- 产品设计是否自洽?产品经理有具备良好的逻辑思维能力,我们往往接到的产品原型是缺失的,包括数据上的缺失和流程上的缺失。例如电商业务在我的版块有一个我的积分功能,但积分怎么来的?如何消耗?都不知道,产品经理的答复是客户要求这里有一个积分...;流程上是否闭环,除了正向的流程,是否考虑了逆向的流程和异常情况
- 产品体验是否正确?一般情况下,移动端、WEB 端的产品体验不同,产品经理要了解当前主流的样式框架,例如 WEB 端是 ELEMENT UI、Ant Design,移动端是Vant UI、uView,我们经常会看到在移动端使用 select 的样式(一般移动端是 picker、actionSheet 等),同时 WEB 端、移动端的提醒方式也不一样,例如 WEB 端有 message、notification 等、移动端有 toast 等
- 流程图、状态机...
原则上来讲,产品经理应当交付 PRD,原型是 PRD 中的一部分,PRD 还包括需求详述、流程图、状态机、业务规则等,那么要求产品经理提供核心业务的流程图、核心对象的状态机(例如订单的状态机)、核心业务规则的描述(例如计划任务,按照什么时间处理什么任务)
流程图、状态机、核心业务规则是难点,可以约项目经理一起设计,这里想不清楚就做不好项目
- 产品使用手册
一般情况下,我们实施的项目都是 B 端的项目,B 端项目往往都需要培训。产品经理有义务进行产品宣讲、产品演示、产品配送和上线后的产品支持服务,我们非常深刻的理解产品经理的付出和价值,我们团队也会寻求一个有效的方法,当产品经理在非工作时间服务客户时进行补贴,确保劳有所得。
产品经理的提升
关于产品经理的提升,分享两点经验:
- 业务知识的提升
产品经理的业务知识是最宝贵的,打开 BOSS 直聘,专项产品经理(汽车行业、医疗行业、金融行业...)的价值远远高于通用产品经理。 目前公司没有深耕某个领域,无法给大家提供深入学习业务知识的机会,那么大家需要自己去学习,学习什么?
通用的产品,例如 CRM、ERP、WMS、SaaS 电商...,这里的学习是深入学习,使用淘宝 APP 和梳理淘宝整体业务流程是两码事。怎么学习?打开悟空 CRM、ABC 诊所管家...,成名的 SaaS 平台都值得研究。
- 综合素养的提升
作为一个产品人员的基础素养,在产品经理的交付物描述的体验样式属于应知应会。此外,产品经理是综合素质要求非常高的角色:
- 沟通能力:沟通力是基础,要主动开会、主动汇报、主动沟通,如果客户在本地,或者有条件,应该有意识的约时间拜访一次客户
- 管理意识:产品经理作为经理,要有一定的管理意识,或者说项目管理能力也是产品经理能力的重要组成部分。产品经理有业务与项目经理协同来管理团队,验收进度和质量
- 思辨能力:客观来讲,聪明人才能做好产品,脑子要快、对项目质量有追求,能否判断并决定产品的逻辑功能,有思辨和决策的意识。请放心,我们公司当前级别的项目,不存在决策风险,产品经理有权利指导所负责产品的走势
- 文字能力:文字能力是我们大多数人员欠缺的,无论是输出过程文档(周报、会议纪要..)、汇报材料还是交付物,如果在编写交付物时有困扰,请联系 TerryQi,尤其是编写标书、验收文档时
- 参与运营:本质上来讲,产品人员对商业模式、运营体系的理解,直接影响产品设计的高度,公司的 CEO 约等于是公司的产品经理。如果产品经理能够从商业模式、业务运营的角度来思考问题,那么将是更上一阶的提升
总而言之,产品经理团队是下一阶段公司重点建设板块,我们的目标是:以产品经理为核心,以项目实施为抓手,提升项目实施绩效和客户满意度
我是前端开发
前端人员要重视交互和体验,本小节是一个随笔,给出前端人员一些技巧和经验,前端人员要有体验意识,前端是客户最有感知的点,前端人员要对体验负责
前端的一些基本规范
- 移动端感知时长是多久?300ms,如果一个接口 3s 没能返回数据,那就一定要找服务端优化,服务端有义务把接口效率提升
- 前端如果缺少 UI,可以找产品输出,产品经理有义务协调设计输出细化的 UI
- 前端页面永远不要出现 null、undefined,要考虑对象多层级属性的获取
- 前端页面要考虑深层次的操作体验,例如移动端页面的触点,触点的引导等
- 前端人员要注重页面效率,例如:WEB、H5 页面的图片要通过tinypng压缩一下;页面的 icon 和 logo 要换一下;小程序分包要设计一下;
- ...
前端人员的发展
前端人员应该如何发展?哪位小伙伴有想法可以探讨,但是当前可以:
- 多学点框架、多上 github 看点优秀代码,这些是基础级别
- 之前推荐了vben Admin 框架,遭到了反对,的确这个框架的 ts 没有太大提升,但可以看看
- 如果做游戏,cocos、unity3d、白鹭可以学习一下
- 现在数字孪生比较有一定需求,可以学学 three.js
- uniapp 实施 APP 质量不高,如果追求质量,可以试试 flutter
- 像产品一样,去看看优秀的产品,优秀的产品体验做的都不错产品经理的提升
- 前端人员要适当转向后端,要读懂数据模型、要理解后端的接口实现思路,要会看数据库,了解数据流转,要懂业务
- ...
网上对高阶前端开发人员有定义叫大前端,我不能 get 到大前端的点,目前仅仅能够理解到就是对前端有深入理解,能够实施 web、小程序、公众号、混合 app 开发的人员,目前只有 xxx 项目中,使用了前端微服务的框架。
上述的大前端个人觉得并没有什么门槛,基本是项目经验级的要求,不能成为核心竞争力
我是测试人员
测试和产品经理很相像,都是底线很低,天花板又很高的一个角色,越是好项目,测试体系越发重要
测试人员的基本素养
- 懂业务、懂产品,这个是做测试的基础,好的测试是半个产品,甚至到项目尾期(或转运营后)比产品经理更了解业务
- 对质量有追求,页面不是点击点击,要注意体验、注意边界、异常情况
- 有逻辑思维,能够透视流程、校验数据正确性,例如一条数据值的变迁过程,因此测试要和产品、前后端技术紧密交流,了解业务流程和规则
- 有一定的方式、方法,例如编写测试用例,通过思维导图梳理测试过程
高阶测试的进化
本质上来说,项目实施质量是由开发团队负责的,测试团队存在的意义是进一步提升质量,项目质量出现问题,第一责任人是产品和技术,测试经理不背这样委屈的锅,但是我们要看到 coding 和 TAPD 中,有相应的缺陷提出,并且有高质量的缺陷提出,所谓高质量的缺陷——流程错误、数据错误级别的缺陷
我们共同的认知:找到问题比解决问题更重要。高阶测试社会非常稀缺,大部分情况下需要技术或产品来转,根本上讲已经是半挂技术、半挂产品的复合型人才:
- 高阶测试往往挂一些技术,要能看懂数据模型,能够在数据库中排查数据正确性
- 高阶测试一般要懂开发,能看懂日志,看得懂接口的请求报文和响应报文
- 高阶测试可以使用一些工具,编制脚本,提升(回归)测试效率
- 高阶测试甚至可以指导开发,协助开发人员 debug 问题
我最深刻的体会是在 xxx 项目中,虽然我是项目经理身份,但最后我对项目最大的产出是做测试,将问题定位到代码级别,综合从技术、产品、业务角度测试项目,最终整体提升了质量、提高了效率,在 xxx 项目中,我最大的贡献是深入到测试环节保证了交付质量
对测试人员的期望
很负责任的说,好的测试人员非常难找,也特别有价值,越是大业务、重要业务,越需要优秀的质量经理(做到这个级别已经是经理),总体上来说,无论测试、产品、技术都要打破自己的边界,思想意识上的提升是最大的提升,多找优秀产品、优秀团队学习,多思考、多总结、多探讨,希望大家有进步、有想法随时找 TerryQi 汇报(希望汇报有个 PPT,PPT 也是提炼思想的过程)。
结语
开始 TEAM BLOG 吧,公司经营任重道远,团队建设永不止步,我们要把价值放在第一位,为公司创造价值、为客户创造价值、为社会创造价值,这是我们的立足之本。