作者:zollty,资深程序员和架构师,私底下是个爱折腾的技术极客,架构师社区合伙人!


一、一些不好的现状,及对应的改进方法

1、前后端代码绑定在一起,很难维护,前端UI做得太差,后端也需要大的改善。

前端代码乱,是架构和规范问题。

前端UI做得太差、很掉档次,是因为不够重视和没有专业的人来设计和制作。

改进方法:

1)前后端代码分离,一些人做专业的前端,提高前端UI质量,一些人专注于后端优化。

2)前期可以先重构,先从技术上把前端代码和后端代码分离,然后专注规范和优化前端(包括html、js和css),同时相应地简单重构后端。

3)后期划分人员职责,前端代码交由专门的前端开发工程师维护,新增的页面功能修改也由前端开发人员编写,后端只需要提供数据的接口。

前后端人员比例问题:

对于一些小网站、内部系统,如果后台并不复杂(通常比较独立 几乎不依赖其他系统,而且用户不多),但前端功能、展现层的功能较多,那么前端的工作量会是后端的两倍以上。

这种情况,建议前端开发和后端开发的比例是 2:1,假设一个项目6个人,那么4个前端+2个后端。

另外,针对这种系统,产品很重要,产品需要准确地给出需求,甚至给出功能的原型,如果界面要求高,可以配置专业的美工,否则前端可以直接根据产品的原型设计页面UI。

对于一些后端比较复杂的系统,比如分布式的大型网站,或者后端牵涉多个其他系统,对后端要求较高,则需要较多的后端开发。

所以,前端和后端的人员比例,要看项目情况,是偏UI操作?还是偏后端技术?

客户的关注点是不是在UI上?如果是,那就得加强UI、UX的研发能力。

2、系统有很多明显的BUG,有做过正规的测试吗?

正式系统BUG多,是研发水平低的表现,显得这个系统质量很差。

改进方法:正式投入运营的产品,要有质量保证,原则上要通过测试验收,测试不通过不能上线。

具体方案:

1)测试参与需求评审,测试参与产品评审;

2)测试前置(提前介入),必要时增加回归测试,性能测试,安全测试。

3)测试监督、考核,质量保证。

3、产品水平低,很多地方设计不合理

如果产品设计不合理,那后果是最严重的:

  • 要么考虑不全,做出来的东西无法满足要求,甚至漏洞百出;

  • 要么不切实际,实际开发过程中困难重重;

  • 要么扩展性不好,导致后期增加、修改功能时必须得全部重做;

  • 要么用户体验不好,被用户吐槽 难以使用。

改进方法:(注意:下面描述了完整的产品环节,其他方面并不完整)

1、需求收集阶段,广泛征求用户意见,同时产品从专业角度和用户沟通,要注意:很多用户只顾自己,提出的需求有些是不合理的,需要产品人员去正确引导,有些需求是极其片面和个性化的,需要产品综合考虑,有些需求是高难度的,需要从成本、时间、资源等多方面考虑。

2、整理需求阶段,将收集到的需求,转换成专业的产品需求文档,可以拿这份初步的产品需求文档,请求资深产品人员、开发方的项目经理、测试经理给以评审和意见。最终形成较正式的产品需求文档。

3、产品设计阶段,有了产品需求文档之后,对产品进行详细设计,最好是有可视化的产品原型,并对其中产品需求的细节进行清晰、准确的描述。做好之后,将产品需求和原型发送给资深产品、项目经理和测试经理审阅。

4、项目经理和测试经理拿到产品需求和原型后,初步查阅,提前就不明白的地方与产品经理进行沟通,同时就一些技术问题或者业务问题与组内的开发和测试负责人初步商议。

5、产品召开产品宣贯和评审会议,产品、相关开发人员、测试人员全部参加,产品负责对产品需求和原型进行讲解说明,开发和测试一同讨论。如果没有重大修改,会后就一些小的修改项邮件确认即可。如果有重大修改,则产品修改后,找时间再次发起评审会议。

6、项目经理、测试经理就产品需求进行开发、提前测试进行分工、排期,就完成时间节点与产品达成一致。

7、开发完成后,提交测试版本,编写提测文档,交付测试。测试人员介入,验证测试环境是否正常,对比开发的功能是否与需求一致,就不明之处,和开发进行沟通。沟通和初步验证做完后,测试负责人发出接收测试的说明,并安排好测试人员,开始正式测试。同时,通知产品参加初步的验证测试。

8、每次提测之后修改BUG和优化代码,均需升级测试版本,同时附上改动的影响范围,通知测试人员。

9、测试按实际情况可进行冒烟测试、第一、二轮测试、回归测试、自动化测试、接口测试、UI测试、性能测试、压力测试、安全测试。

10、在临近测试结束时,通知产品进行验收测试。

11、准备上线。

二、研发规范太差

1、代码不规范

解决方案:

规范的代码风格,代码质量符合sonar里面的各种规则。

使用sonar等平台和插件自动扫描和判断代码质量。

2、提交到仓库中的代码无法正常编译

版本管理混乱

解决方案:

规范源代码的管理,提交的代码需要有质量保障,主干(master)分支必须是时刻可用的。

版本号管理需要规范。

3、Maven缺乏维护(public居然无只读权限,导致无法构建项目)

从这一点暴露出来的问题:基础设施没有专人长期维护!!

解决方案:

严格保障基础设施的正常运行,指定专人维护(可以是各个开发部门或者运维部门、测试部门的人),包括数据库、jenkins、maven、sonar、redis等。

4、数据库表设计不合理,甚至有些查询需要联合8个表,左连接、内连接一大堆。

SQL严重不符合规范,效率极低,查询3条数据需要50秒钟;可维护性极差,在SQL里面去做各种运算,使用了许多函数。

解决方案:

增强数据库的相关规范,架构评审,DBA评审,SQL评审。

增强开发框架的约束能力,简化SQL编写并保证质量。

使用SQL自动审核工具,例如 Inception。

线上监控,慢查询等。

三、架构能力不足

项目的框架,项目A和B(真实名称略)的都很一般,看得出来,搭框架的水平,差不多是高级工程师的水平。

我不建议由 高级工程师 随便搭一个框架。

一个高级工程师搭的框架,能用,但可能并不好用,框架这东西,是项目的基础,需要进一步优化。

解决方案(一):由资深工程师和架构师来选型和搭建,并经过评审和实际验证,才开始规模使用。

解决方案(二):由基础框架团队(一个完整的、专业的团队,包括前端、后端、产品、UI、测试)去开发和维护,这个团队专注于框架的搭建和维护,公司或者部门都使用他们提供的技术体系和解决方案。

长按订阅更多精彩▼

如有收获,点个在看,诚挚感谢

记一次中小公司的研发问题相关推荐

  1. 【恒生公司2016研发工程师笔试卷选择题分析】

    static局部变量相关知识 静态变量在内存的静态存储区,静态数据一直占有着该存储区单元直到程序结束: 静态局部变量只声明一次,一旦申请内存成功,不再接受重复申请: 静态局部变量的作用域与一般局部变量 ...

  2. 硅谷行记二:走进百度美国研发中心

    硅谷行记二:走进百度美国研发中心 牛智超 02月01日 12:44                  分享到:                                              ...

  3. 软件开发生命周期(SDLC) 【详解】(含公司产品研发流程图、大厂研发架构图、大厂研发流程图)

    目标 通过最少的资源,交付出高质量的软件. 六大阶段 1.分析 >> 2.设计 >> 3.开发 >> 4.测试 >> 5.部署 >> 6.维 ...

  4. 3、信管网A公司准备研发一款手机无线充电器,项目启动时间为2018年1月

    信管网A公司准备研发一款手机无线充电器,项目启动时间为2018年1月,项目整体交付时间为2018年6月. 按照资源配置和专业分工,公司将项目初步拆为7个子项目,其中,项目A-C负责产品主体研发和生产, ...

  5. 某公司北京研发中心“产品经理”内训圆满结束!

    2015年8月21--22日,某公司北京研发中心"产品经理"培训,在软件园区举办,各事业部产品核心人员共50人参加了此次培训,本课程采用开放式教学,以引导为主线,让学员参与.思考. ...

  6. 一种广泛存在于Facebook、谷歌、小米、阿里等公司的研发组织管理方式

    这是研发管理的第2条军规,我迫不及待的将组织架构的设计作为基础理念推荐给尽可能多的研发管理者. 在阿里有个习惯性的动作,战略调整的第一步是组织架构的调整,可见组织如何排列组合是个极其重要的事情.让张飞 ...

  7. Velodyne收购高清地图公司 将研发更安全的ADAS系统

    据Future Car报道,Velodyne公司周一宣布收购位于旧金山的高清地图创业公司Mapper.ai的知识产权资产,双方将合作开发更安全的ADAS系统. Velodyne公司以其在激光雷达方面的 ...

  8. 受壁虎启发,材料公司Felsuma研发一种能黏在任何材质表面的“壁虎皮肤”

    目前,该公司已经在官网开始出售该"壁虎皮肤". 日前,材料公司Felsuma受壁虎启发,研发了一种命名为"壁虎皮肤(Geckskin)"的新材料,它几乎能够将任 ...

  9. 专访Pivotal公司Greenplum研发总监姚延栋:Greenplum开源的这一年

    杭州·云栖大会将于2016年10月13-16日在云栖小镇举办,在这场标签为互联网.创新.创业的云计算盛宴上,众多行业精英都将在这几天里分享超过450个演讲主题. 为了帮助大家进一步了解这场全球前言技术 ...

最新文章

  1. SpringMVC拦截器-快速入门详解(应用)
  2. CVE-2020-16875:Microsoft Exchange RCE复现
  3. 十大最酷云计算应用程序创业企业
  4. DataGrid分页;指定列的总和和平均值;显示鼠标背景色;弹出式窗口;
  5. 【软件测试】白盒测试与黑盒测试的区别(不同)
  6. selenium问题记录
  7. php系列框架的加速器Opcache
  8. CF 235C. Cyclical Quest [后缀自动机]
  9. 翻译: 如何使用 Xcode 的内存图调试器检测 iOS 内存泄漏并保留周期
  10. 驱动开发:实现驱动加载卸载工具
  11. 窥探PTAM之Mapping线程
  12. 银联在线php支付接口,PHP网站在线银联支付实现大额付款案例
  13. 阿里云物联网平台如何通过云产品流转使两个设备互相通信
  14. 支付宝对账数据下载及解析
  15. 方舟手游非官方服务器修改器,方舟非官方服务器作弊码 | 手游网游页游攻略大全...
  16. 在Excel中查找/替换时使用换行符
  17. 2021年危险化学品经营单位主要负责人考试及危险化学品经营单位主要负责人考试试卷
  18. 问题:当运行exe程序时遇到错误0000007时如何解决
  19. drawio,程序员最好用的在线画图软件!!!
  20. 处理海量数据之awk命令

热门文章

  1. 60佳优秀的 Photoshop 网页制作教程【下篇】
  2. 迁移聊天记录到Teams
  3. 直播源码中有哪些网络协议需要注意?
  4. jvm(Java virtual machine) JVM架构解释
  5. Golang并发模型:合理退出并发协程
  6. python装饰器执行顺序
  7. js 深复制一个对象
  8. 小程序 - 学习笔记
  9. ORACLE利用STANDBY端RMAN备份进行数据恢复
  10. Java wait notify