希望通过互联网+TEAM BLOG 为团队建设综合底座,帮助小伙伴们快速学习、掌握方法、进入协作状态,为项目产能、质量双升奠定基础。

随着我们项目经验的积累,我们越来越深刻的认识到,技术团队对项目实施的影响是有限的,需求理解、产品设计、项目管理、测试工程等领域也对项目成败起到至关重要的作用——TEAM BLOG 是我们团队的纲领性文件。

我们的愿景

希望通过 TEAM BLOG 逐步积累经验、教训,形成制度、规范和方法,提升团队的项目实施效率。同时,也希望 TEAM BLOG 能够抛砖引玉,启发大家的思考。请注意,TEAM BLOG 不是我们团队的政治正确,它仅仅是我们现阶段对事物的理解,大家辩证来看,也欢迎质疑和讨论。

我是谁?

正式开始前,先问问自己几个问题吧

框架代码

TEAM-BLOG

vuepress 的技术规范文档,人人都可以参与编写

点击我下载代码open in new window

Java 开发框架

Java-Develop-Platform 是 Java 开发框架

点击我下载代码open in new window

Java 模板项目

Java 模板项目,下载即可用,数据库连接到测试环境上,目前包名叫做 demo,大家自己改下包名为自己的包名

点击我下载模板open in new window

项目背景

历史上,都是 TerryQi 负责构建初始化的项目,基本上都是从成熟的项目中,挑挑拣拣,把核心的功能提取出来。那么随着公司的发展,越来越多的项目产生,那么就需要一套模板项目,支持大家快速构建系统。Java 模板项目集成了 RBAC,基本的 Swagger 配置等,可以快速构建起项目基础,具体

https://gitee.com/qrqy/java-base-template.git

如何使用

下载项目后,你需要:

  1. 创建数据库,并初始化数据,/docs/sql/init/initdb.sql 就是初始化的数据,此外,你还需要手动创建视图,视图为 user_role_view.sql,因为导入的方式下,视图有时会创建失败,所以建议还是导入数据库后,手动创建下视图
  2. 修改一下配置文件,application-dev.yml 中,配置数据库连接地址、项目名称等
  3. 修改下包名,模板项目中,报名为 com.qrqy.demo,将 demo 改为你的项目名,同时要修改 Application.java 中的包名数据,即 demo 转换为你的包名
  4. 在项目下,有 settings.xml,maven 要配置私有仓库
  5. 可以从 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 项目开发框架

点击我下载模板open in new window

WEB 框架——Element-vue-admin

管理后台框架,基于 vue-element-admin 封装的管理后台

点击我下载模板open in new window

WEB 框架——Arco Design

管理后台框架,基于 Arco Design,Vue3+TypeScript+Vite

点击我下载模板open in new window

代码地址

https://gitee.com/qrqy/vue-base-arc.git

如何使用

请注意,这套管理后台是配合 Java 的模板框架来实现的,其中:

  1. 要修改下配置文件和项目名称,更换下项目的 logo
  2. 接口在/src/api 下,那么你要使用综合工具平台来生成接口

修改项目信息

小程序框架

小程序目前使用 uniapp 框架

青青负责小程序的模板,目前我们通过 uniapp 来进行小程序的开发

点击我下载模板open in new window

清理脚本工具

clear.sh 是宝塔和/home/app/services 的清理脚本的工具

clear.sh


直接执行 bash ./clear.sh 就行

联系方式

大家有问题,可以随时 email 我,terryqi@yisa.art和qi.zang@qrqy.net,邮箱日日查,48 小时响应。

我是技术人员

先回答几个问题,你的痛点有哪些

你会复用别人的代码么?

大家很少或者根本不会复用他人的代码,原因是什么?

  • 不了解其他人的项目和业务,不知道哪里可以进行复用
  • 他人代码质量不高,读起来费劲,封装的不好
  • 没有文档支持,copy 不明白,还不如自己写
  • ...

我们总是需要重复写一样的代码么?

是的,每个人都在重复编写相同的功能,虽然业务有所不同,但一些基础模块我们应该有底座

  • 哪怕是登陆、注册这样通用的流程,不同的项目也不一样
  • 大家重新在编写相同的代码,质量低、交接能力差
  • 传递知识的成本高,团队难以形成合力
  • ...

我们团队的技术氛围友好么?

有一点点的友好,最起码有一些规范,但还有很大的提升空间

  • 新人来了应该有体系化的引导文档,让其了解我们的实施规范和一些协作经验
  • 技术团队的知识应该可以共享,当然,更重要的是大家独立的检索方法、解决问题的能力
  • 持续迭代和提升,深度思考能力不足,要考虑长远,做储备
  • ....

我们如何解决上述问题

客观的说,我们的项目绝大多数情况下都是应用级开发,本质上我们面临的不是技术问题,而是工程化问题,可以依靠持续的过程优化来提升,例如:

  • 我们做一些框架和组件,自动生成代码,提升效率和规范性
  • 我们封装一些标准化的 PAAS、SAAS 能力,为应用提供服务(例如实时消息能力、业务统计能力、文件预览能力等)
  • 我们进行技术培训、输出高质量项目供参考,安排专人负责实施提升工作

只要我们有提升的意识和愿景,我们就能持续提升!

我是产品人员

产品经理是团队的核心,直接影响项目的交付,同时,希望我们有一天找到一个方向,打造一款属于公司的优秀产品。

我是否认清工作职责?

实事求是的讲,公司对产品团队有很高的期待,产品团队是接下来的建设重点,也有很大的提升空间。

  • 产品经理是下限特别低,同时上限又特别高的一个职业。产品经理大约在 2014 年确立角色,以往叫做需求师,负责对接客户需求,由于逐步扩展职责、界面,因此催发出产品经理的职位,我们公司产品经理是核心,大家都要围绕产品经理来协作
  • 我们的产品经理大多数停留在需求记录员的角色上,往往是听取客户需求,协助实现原型,当然想做好这个角色也很不容易,但是还有更进一步的提升空间
  • 往往我们听到产品经理为自己粗糙的产品原型找借口——时间太紧张,担心给技术团队增加工作量。事实上,需求梳理不清晰是对技术团队最大的困扰
  • 产品经理更多的是对外,即与客户来协同,例如:初期和客户沟通需求;阶段性做汇报(例如完成某个核心需求),如果需求偏离尽快调整;项目交付前参与测试和验收;项目交付时做好收尾;维护期内定期做回访,获取优化点。
  • 产品经理绝对不仅仅是输出原型,在整个项目实施周期内,都应该是深度参与的状态,我们报项目成本,产品经理一定是满额参与全部项目生命周期的
  • 产品经理要关注客户服务,是公司对外服务的窗口,也是下一步团队提升的关键点
  • ...

总之,产品经理的职责是:准确把握客户需求、高质量交付项目、提升客户满意度。现阶段,产品经理是公司的核心价值,我们要着力提升产品团队的能力和意识

产品经理的交付物

往往一个事物我们要从源头来治理它,问题和风险就像水面的波纹,影响范围将逐步扩大。那么对于项目来说,产品设计工作就是水波中央,产品设计质量的高低直接关系到实施成本和效果。请注意,我们要求项目经理也要有产品意识,要协助产品经理把控产品设计

产品经理应该交付什么?

  • 产品原型

我们非常理解时间、成本和质量的关系,但产品经理要尽可能的提升原型质量。如果在项目初期比较紧张,那么实施过程中也可以逐步完善原型,要反复推敲自己的原型,那么给几个参考点:

  1. 产品原型是否完整?例如管理后台的原型,往往缺斤少两,比如导入功能,导入功能可能是系统中最复杂的设计点,导入表格是什么样子,整体导入的体验什么样,导入错误如何提示用户?往往我们接到的需求原型是导入按钮,没有其他逻辑说明...
  2. 产品设计是否自洽?产品经理有具备良好的逻辑思维能力,我们往往接到的产品原型是缺失的,包括数据上的缺失和流程上的缺失。例如电商业务在我的版块有一个我的积分功能,但积分怎么来的?如何消耗?都不知道,产品经理的答复是客户要求这里有一个积分...;流程上是否闭环,除了正向的流程,是否考虑了逆向的流程和异常情况
  3. 产品体验是否正确?一般情况下,移动端、WEB 端的产品体验不同,产品经理要了解当前主流的样式框架,例如 WEB 端是 ELEMENT UIopen in new windowAnt Designopen in new window,移动端是Vant UIopen in new windowuViewopen in new window,我们经常会看到在移动端使用 select 的样式(一般移动端是 picker、actionSheet 等),同时 WEB 端、移动端的提醒方式也不一样,例如 WEB 端有 message、notification 等、移动端有 toast 等
  • 流程图、状态机...

原则上来讲,产品经理应当交付 PRD,原型是 PRD 中的一部分,PRD 还包括需求详述、流程图、状态机、业务规则等,那么要求产品经理提供核心业务的流程图、核心对象的状态机(例如订单的状态机)、核心业务规则的描述(例如计划任务,按照什么时间处理什么任务)

流程图、状态机、核心业务规则是难点,可以约项目经理一起设计,这里想不清楚就做不好项目

  • 产品使用手册

一般情况下,我们实施的项目都是 B 端的项目,B 端项目往往都需要培训。产品经理有义务进行产品宣讲、产品演示、产品配送和上线后的产品支持服务,我们非常深刻的理解产品经理的付出和价值,我们团队也会寻求一个有效的方法,当产品经理在非工作时间服务客户时进行补贴,确保劳有所得。

产品经理的提升

关于产品经理的提升,分享两点经验:

  • 业务知识的提升

产品经理的业务知识是最宝贵的,打开 BOSS 直聘,专项产品经理(汽车行业、医疗行业、金融行业...)的价值远远高于通用产品经理。 目前公司没有深耕某个领域,无法给大家提供深入学习业务知识的机会,那么大家需要自己去学习,学习什么?

通用的产品,例如 CRM、ERP、WMS、SaaS 电商...,这里的学习是深入学习,使用淘宝 APP 和梳理淘宝整体业务流程是两码事。怎么学习?打开悟空 CRMopen in new windowABC 诊所管家open in new window...,成名的 SaaS 平台都值得研究。

  • 综合素养的提升

作为一个产品人员的基础素养,在产品经理的交付物描述的体验样式属于应知应会。此外,产品经理是综合素质要求非常高的角色:

  1. 沟通能力:沟通力是基础,要主动开会、主动汇报、主动沟通,如果客户在本地,或者有条件,应该有意识的约时间拜访一次客户
  2. 管理意识:产品经理作为经理,要有一定的管理意识,或者说项目管理能力也是产品经理能力的重要组成部分。产品经理有业务与项目经理协同来管理团队,验收进度和质量
  3. 思辨能力:客观来讲,聪明人才能做好产品,脑子要快、对项目质量有追求,能否判断并决定产品的逻辑功能,有思辨和决策的意识。请放心,我们公司当前级别的项目,不存在决策风险,产品经理有权利指导所负责产品的走势
  4. 文字能力:文字能力是我们大多数人员欠缺的,无论是输出过程文档(周报、会议纪要..)、汇报材料还是交付物,如果在编写交付物时有困扰,请联系 TerryQi,尤其是编写标书、验收文档时
  5. 参与运营:本质上来讲,产品人员对商业模式、运营体系的理解,直接影响产品设计的高度,公司的 CEO 约等于是公司的产品经理。如果产品经理能够从商业模式、业务运营的角度来思考问题,那么将是更上一阶的提升

总而言之,产品经理团队是下一阶段公司重点建设板块,我们的目标是:以产品经理为核心,以项目实施为抓手,提升项目实施绩效和客户满意度

我是前端开发

前端人员要重视交互和体验,本小节是一个随笔,给出前端人员一些技巧和经验,前端人员要有体验意识,前端是客户最有感知的点,前端人员要对体验负责

前端的一些基本规范

  • 移动端感知时长是多久?300ms,如果一个接口 3s 没能返回数据,那就一定要找服务端优化,服务端有义务把接口效率提升
  • 前端如果缺少 UI,可以找产品输出,产品经理有义务协调设计输出细化的 UI
  • 前端页面永远不要出现 null、undefined,要考虑对象多层级属性的获取
  • 前端页面要考虑深层次的操作体验,例如移动端页面的触点,触点的引导等
  • 前端人员要注重页面效率,例如:WEB、H5 页面的图片要通过tinypngopen in new window压缩一下;页面的 icon 和 logo 要换一下;小程序分包要设计一下;
  • ...

前端人员的发展

前端人员应该如何发展?哪位小伙伴有想法可以探讨,但是当前可以:

  • 多学点框架、多上 github 看点优秀代码,这些是基础级别
  • 之前推荐了vben Admin 框架open in new window,遭到了反对,的确这个框架的 ts 没有太大提升,但可以看看
  • 如果做游戏,cocos、unity3d、白鹭可以学习一下
  • 现在数字孪生比较有一定需求,可以学学 three.js
  • uniapp 实施 APP 质量不高,如果追求质量,可以试试 flutter
  • 像产品一样,去看看优秀的产品,优秀的产品体验做的都不错产品经理的提升
  • 前端人员要适当转向后端,要读懂数据模型、要理解后端的接口实现思路,要会看数据库,了解数据流转,要懂业务
  • ...

网上对高阶前端开发人员有定义叫大前端,我不能 get 到大前端的点,目前仅仅能够理解到就是对前端有深入理解,能够实施 web、小程序、公众号、混合 app 开发的人员,目前只有 xxx 项目中,使用了前端微服务的框架。

上述的大前端个人觉得并没有什么门槛,基本是项目经验级的要求,不能成为核心竞争力

我是测试人员

测试和产品经理很相像,都是底线很低,天花板又很高的一个角色,越是好项目,测试体系越发重要

测试人员的基本素养

  • 懂业务、懂产品,这个是做测试的基础,好的测试是半个产品,甚至到项目尾期(或转运营后)比产品经理更了解业务
  • 对质量有追求,页面不是点击点击,要注意体验、注意边界、异常情况
  • 有逻辑思维,能够透视流程、校验数据正确性,例如一条数据值的变迁过程,因此测试要和产品、前后端技术紧密交流,了解业务流程和规则
  • 有一定的方式、方法,例如编写测试用例,通过思维导图梳理测试过程

高阶测试的进化

本质上来说,项目实施质量是由开发团队负责的,测试团队存在的意义是进一步提升质量,项目质量出现问题,第一责任人是产品和技术,测试经理不背这样委屈的锅,但是我们要看到 coding 和 TAPD 中,有相应的缺陷提出,并且有高质量的缺陷提出,所谓高质量的缺陷——流程错误、数据错误级别的缺陷

我们共同的认知:找到问题比解决问题更重要。高阶测试社会非常稀缺,大部分情况下需要技术或产品来转,根本上讲已经是半挂技术、半挂产品的复合型人才:

  • 高阶测试往往挂一些技术,要能看懂数据模型,能够在数据库中排查数据正确性
  • 高阶测试一般要懂开发,能看懂日志,看得懂接口的请求报文和响应报文
  • 高阶测试可以使用一些工具,编制脚本,提升(回归)测试效率
  • 高阶测试甚至可以指导开发,协助开发人员 debug 问题

我最深刻的体会是在 xxx 项目中,虽然我是项目经理身份,但最后我对项目最大的产出是做测试,将问题定位到代码级别,综合从技术、产品、业务角度测试项目,最终整体提升了质量、提高了效率,在 xxx 项目中,我最大的贡献是深入到测试环节保证了交付质量

对测试人员的期望

很负责任的说,好的测试人员非常难找,也特别有价值,越是大业务、重要业务,越需要优秀的质量经理(做到这个级别已经是经理),总体上来说,无论测试、产品、技术都要打破自己的边界,思想意识上的提升是最大的提升,多找优秀产品、优秀团队学习,多思考、多总结、多探讨,希望大家有进步、有想法随时找 TerryQi 汇报(希望汇报有个 PPT,PPT 也是提炼思想的过程)。

结语

开始 TEAM BLOG 吧,公司经营任重道远,团队建设永不止步,我们要把价值放在第一位,为公司创造价值、为客户创造价值、为社会创造价值,这是我们的立足之本。


Last Updated:
Contributors: TerryQi, mtt-Ada@yisa.art