记一次中小公司的研发问题

640?wx_fmt=jpeg

作者: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、测试)去开发和维护,这个团队专注于框架的搭建和维护,公司或者部门都使用他们提供的技术体系和解决方案。

长按订阅更多精彩▼

640?wx_fmt=jpeg

如有收获,点个在看,诚挚感谢640?wx_fmt=png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core 3.0 使用gRPC

一.简介gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架。gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建。它使用HTTP/2作为通信协议,使用 Protocol Buffers…

Codeforces Round #739 (Div. 3)(AK实况)

Codeforces Round #739 (Div. 3) A. Dislike of Threes 找到第kkk个既不是333的倍数&#xff0c;个位数上也不是333的数&#xff0c;也已预处理然后O(1)O(1)O(1)输出&#xff0c;也可直接forforfor循环暴力。 #include <bits/stdc.h>using namespace std;int main() {/…

利用Helm简化Kubernetes应用部署(2)

目录定义Charts 使用Helm部署Demo Helm常用操作命令 定义Charts回到之前的“charts”目录&#xff0c;我们依次进行解读并进行简单的修改。Chart.yaml配置示例&#xff1a;apiVersion: v1 appVersion: "1.1" description: A demo Helm chart for Kubernetes name:…

linux查看磁盘空间命令

Linux 查看磁盘空间可以使用 df 和 du 命令。 df df 以磁盘分区为单位查看文件系统&#xff0c;可以获取硬盘被占用了多少空间&#xff0c;目前还剩下多少空间等信息。 例如&#xff0c;我们使用df -h命令来查看磁盘信息&#xff0c; -h 选项为根据大小适当显示&#xff1a; …

Visual Studio 2019 16.3 正式发布,支持 .NET Core 3.0

微软正式发布了 Visual Studio 2019 16.3 版本&#xff0c;主要更新内容如下&#xff1a;.NET Core 3.0Visual Studio 版本 16.3 包括对 .NET Core 3.0 的支持。注意&#xff1a;如果使用的是 .NET Core 3.0&#xff0c;则需要使用 Visual Studio 16.3 或更高版本。.NET Core 桌…

【干货】规模化敏捷DevOps四大实践之持续探索CE(中英对照版)

本文翻译来自SAFe DevOps社群帅哥网友贾磊&#xff1a;高级质量经理&敏捷教练 曾就职于外企、国企、大型上市企业等&#xff0c;担任过测试工程师、测试经理、项目经理、敏捷教练、质量总监、高级质量经理等岗位。是一名敏捷变革的爱好者和践行者。爱好网球、羽毛球。正文原…

Spring Cloud——Eureka——架构体系

1、概述 Eureka包括两个端&#xff1a; Eureka Server&#xff1a;注册中心服务端&#xff0c;用于维护和管理注册服务列表。Eureka Client&#xff1a;注册中心客户端&#xff0c;向注册中心注册服务的应用都可以叫做Eureka Client&#xff08;包括Eureka Server本身&#x…

推荐.neter常用优秀开源项目系列之二

.net社区有很多优秀的开源项目&#xff0c;我们今天再推荐12个开源项目&#xff1b;1. Domain-Driven-Design-ExampleDDD 示例 挺不错的。github https://github.com/zkavtaskin/Domain-Driven-Design-Example2.SmartStoreNET开源的电商项目github https://github.com/smartsto…

Zookeeper: Zookeeper架构及FastLeaderElection机制

本文转发自技术世界&#xff0c;原文链接 http://www.jasongj.com/zookeeper/fastleaderelection/ 一、Zookeeper是什么 Zookeeper是一个分布式协调服务&#xff0c;可用于服务发现&#xff0c;分布式锁&#xff0c;分布式领导选举&#xff0c;配置管理等。 这一切的基础&am…

与时俱进 | 博客现已运行在 .NET Core 3.0 及 Azure 上

点击上方蓝字关注“汪宇杰博客”导语9月23日&#xff0c;微软正式发布了 .NET Core 3.0&#xff0c;这个版本具有大量新功能和改进。我也在第一时间将自己的博客网站更新到了 .NET Core 3.0&#xff0c;并且仍然跑在微软智慧云 Azure 国际版的应用服务上。本文总结了我在博客迁…

Zookeeper:基于Zookeeper的分布式锁与领导选举

本文转发自技术世界&#xff0c;原文链接 http://www.jasongj.com/zookeeper/distributedlock/ 1、Zookeeper特点 1.1 Zookeeper节点类型 如上文《Zookeeper架构及FastLeaderElection机制》所述&#xff0c;Zookeeper 提供了一个类似于 Linux 文件系统的树形结构。该树形结构…

Asp.Net Core Mvc Razor之RazorPage

在AspNetCore.Mvc.Razor命名空间中的RazorPage继承RazorPageBase&#xff0c;并定义的属性为&#xff1a;HttpContext Context 表示当前请求执行的HttpContextRazorPageBase定义为抽象类&#xff0c;并继承了接口&#xff1a;IRazorPageIRazorPage接口定义属性如下&#xff1a;…

Spring Cloud——Consul——架构体系

我们知道&#xff0c;Eureka 2.X因遇到问题&#xff0c;已停止研发。Spring Cloud官方建议迁移到Consul或者Zookeeper等其他服务发现中间件。 下面是 Spring Cloud 支持的服务发现软件以及特性对比&#xff1a; 一、Consul 介绍 Consul 是 HashiCorp 公司推出的开源工具&…

ASP.NET Core 3.0 gRPC 双向流

目录ASP.NET Core 3.0 使用gRPCASP.NET Core 3.0 gRPC 双向流ASP.NET Core 3.0 gRPC 认证授权一.前言在前一文 《二. 什么是 gRPC 流gRPC 有四种服务类型&#xff0c;分别是&#xff1a;简单 RPC&#xff08;Unary RPC&#xff09;、服务端流式 RPC &#xff08;Server streami…

开源公司被云厂商“寄生”,咋整?

上周 OSS Capital 召集一些开源公司&#xff0c;组织了一场关于如何面对“云厂商给开源带来的危害”的会议。OSS Capital 是一家风险投资公司&#xff0c;该公司只投开源&#xff0c;其董事会合伙人之一是开源运动的先驱人物 Bruce Perens。网上有一个十分有名的“开源商业化独…

Spring Cloud Config——原理解析

springCloud config项目,用来为分布式的微服务系统中提供集成式外部配置支持,分为客户端和服务端 可以让你把配置放到远程服务器&#xff0c;目前支持本地存储、Git以及Subversion。 spring官方如下介绍: 简而言之: 通过配置服务(Config Server)来为所有的环境和应用提供外部配…

AWS加入.NET Foundation企业赞助商计划

.NET 走向开源&#xff0c;MIT许可协议。 微软为了推动.NET开源社区的发展&#xff0c;2014年联合社区成立了.NET基金会。.NET基金会是一个独立的组织&#xff0c;支持.NET社区和开源&#xff0c;旨在拓宽和加强.NET生态系统和社区。这可以通过多种方式完成&#xff0c;包括项目…

Spring cloud——Hystrix 原理解析

1、背景 分布式系统环境下&#xff0c;服务间类似依赖非常常见&#xff0c;一个业务调用通常依赖多个基础服务。如下图&#xff0c;对于同步调用&#xff0c;当库存服务不可用时&#xff0c;商品服务请求线程被阻塞&#xff0c;当有大批量请求调用库存服务时&#xff0c;最终可…

【B】替换 Quartz.net 默认使用的 MySql.Data 为 Mysqlconnector 的学习过程

文章转载授权级别&#xff1a;B无论是 Quartz.net 还是 MySql.Data 都是我们比较熟悉的库了&#xff0c;Quartz.net 如果配置为使用 MySql 数据库做持久化时&#xff0c;默认是硬编码了使用 MySql.Data 来操作 MySql 数据库的。下面是我的一些个人诉求和实践&#xff0c;和大家…

APM(应用性能管理)与Dapper原理介绍

一、APM&#xff08;应用性能管理&#xff09; 1.1 什么是APM&#xff1f; APM (Application Performance Management) 即应用性能管理&#xff08;应用性能监控&#xff09; APM主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化&#xff0c;提高企业IT应用的可靠…