别试错了,是该关注一下软件内在质量了

太多这种例子了,老板们早上出的新想法,恨不得第二天就能上线。。每个互联网公司都试图突破固定领地,不断地尝试新的业务,一旦发现不行,就立刻砍掉,名曰“试错”。

研发部门,为了应对压力,必然采用大军团作战的开发方式。打个比方,一个 6000 的项目

  • 10 个人,每人效率 10,要 2 个月完成

  • 而 100 个人,每人效率 5,只要 12 天完成

当然,这 100 个人的薪资成本肯定远高于这 10 人,但是公司不缺钱,更看中 2 个月变半个月的时间效率提升。在激烈竞争下,晚一天都会导致产品处于下风。

为了让大军团作战成为可能,公司的软件开发流程和工具,把程序员打造成螺丝钉和流水线工人,让人员充分的可替代。同时,公司对程序员的个人能力要求并不高。即使面试的时候被考核到的知识面很广很深,但是实际工作中,由于只负责很小的一块,导致每天就是拧螺丝。

对于技术管理者,也看中他的团队协作能力、向上汇报能力,而技术实力的比重越来越小。毕竟管理 10 人团队,还是要自己参与研发过程的,而管理 100 人团队,参与研发已经不可能了。

微信截图_20231115144422.png

上述现象出现的根本原因,就是整个行业资金充裕,不需要自己盈利。如今,风口已经退去。互联网用户增长已经到顶峰,几乎所有能被互联网渗透的行业都被渗透,更关键的,获取风投、赴美上市的路子走不通了。所有的软件公司又要重新回到靠自己造血养活自己的正常商业模式。

风口过去了,资金没有那么充裕了,竞争也将逐渐缓和。大军团软件开发模式也难以继续下去,必然引发各大公司裁员,逐渐把大军团,缩减成小规模软件开发团队。人少了,但是要做的事情并不会等比例减少,为了应对这种情况,提升研发人员的个人能力成了必然的趋势。

低能力的程序员们应该尽早考虑逃离程序员行业,还在行业内混的程序员们,要不断提升个人的软件研发能力,来应对市场的变化。公司的用人理念也必将被迫转向更看中程序员个人能力。原本那些靠善于写 PPT,搞向上汇报,实际和研发脱节的管理者们,就业面越来越窄。

软件的内在质量,是用户看不到的质量,比如易读性、易测试性、易扩展性等。大军团作战时,由于团队总体水平低下,又特别赶时间,导致只要软件功能正确性能满足要求,就交付给用户了,没有多少时间去打磨软件的内在质量,代码逐渐变成屎山。屎山的后果是维护和再开发的成本越来越高。

由于有风口的加持,人力成本似乎都不是问题。等到屎山终于要倒塌了,出来一批勇士重写系统,再竖起一座新的屎山也就是了。这样的事情,在我过去十几年的从业经历中,不断重现。

哪些有益的实践要被重新重视起来?

比如,朴实实用的软件架构,而不是一味追求分布式微服务等高级架构。过往,有多少采用分布式微服务架构的系统,是因为真的有伸缩需求,真的基础设施能力达到了?我想有一大批只是为了向上汇报显得高大上吧?也有一些,单纯是因为团队太大,想借助分布式达成模块化,以符合康威法则吧?过往的经历中,大部分的微服务都是一场灾难。原本 IDE 内代码分析就可以掌握的代码依赖关系,必须依赖运行时的监控系统,原本 IDE 内一键重构的事情,必须变成线上灰度热替换,原本简单的上线步骤,变成复杂的分批上线。程序员为此加班掉头发,整个社会则为此浪费钱财。

image.png

再比如敏捷开发,大军团下,几乎没有全职能团队,部门墙,团队墙耸入云霄。敏捷开发的根本就是以人为本,近几年,在技术领域低代码是比较热门的话题,通过低代码工具,自动代码生成和可视化编程,只需要少量代码,即可快速搭建各种应用。

应用入口:JNPF快速开发平台(http://www.jnpfsoft.com?csdn),找个有空的时间自己试试!除了低代码工具,其他工具我在以往的文章中都有提到,你可以自己看看。

如今,风口过后,该重新关注软件内在质量了,留下来的公司们,该调整用人策略了,留下来的程序员们,该重视提升自身的研发能力了。

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

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

相关文章

技术总结大杂烩

mysql引擎 MySQL常用存储引擎:MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。 MyISAM:mysql默认存储引擎。MyISAM不支持事务,也不支持外键,但其访问速度快&…

py 打开多个页面

要在Python中打开多个网页,可以使用Python的网络爬虫库(如BeautifulSoup或Scrapy)或第三方库(如Selenium)来模拟浏览器操作。 使用BeautifulSoup或Scrapy等库,可以通过编写代码来抓取网页上的内容&#xf…

[每周一更]-(第71期):DevOps 是什么?

Wiki的解释: DevOps(Development和Operations的混成词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。 通过自动化“软件交付”和“架构变更”的…

day14-文件系统工作流程分析

1.内核启动文件系统后,文件系统的工作流程 1.参数的接收 2.参数的解析 3.参数的应用 问题: 1. UBOOT 传给 KERNEL 的参数是以tagglist进行的 KERNEL 传给 文件系统(busybox)的参数是以什么进行的? 2. 在整个文件系统中都需…

马尔可夫过程

马尔可夫决策过程 马尔可夫含义 马尔可夫性质 在给定历史状态 s 0 , … , s t s_0,\dots,s_t s0​,…,st​的情况下,某个状态的未来只与当前状态 s t s_t st​有关,与历史的状态无关。 ​ p ( s t 1 ∣ s t ) p ( s t 1 ∣ s 0 , s 1 , … , s t…

【python】单词接龙

题目: 这是一个关于“单词接龙”的算法题目。在这个游戏中,我们需要从给定的一组单词中,以特定的开头字母构造出一条最长的“龙”。每个单词在这条“龙”中最多出现两次。当两个单词相连时,它们的重合部分被合并成一个。例如&…

spring boot中使用Bean Validation做优雅的参数校验

一、Bean Validation简介 Bean Validation是Java定义的一套基于注解的数据校验规范,目前已经从JSR 303的1.0版本升级到JSR 349的1.1版本,再到JSR 380的2.0版本(2.0完成于2017.08),目前最新稳定版2.0.2(201…

LMI相机配置步骤,使用Gocator2550相机

在此之前可以先浏览我编写的相机SDK通用类和LMISDK,进行配套观看 https://blog.csdn.net/m0_51559565/article/details/134404394 //LMI相机SDK https://blog.csdn.net/m0_51559565/article/details/134403745 //相机通用类1.启动LMI加速器 LMI加速器用于将相机…

什么是智能井盖?万宾科技的智能井盖传感器的效果

近年来为打造智慧城市政府一直在不懈努力。加速城市基础建设是一项重要的举措,它有助于推动城市综合治理城市生命线的建设工程。在改善市民生活质量的过程中,市政部门正积极进行井盖的改进和升级工作,特别是那些看似微不足道的井盖却蕴含着重…

Java基于itextPDF实现pdf动态导出

Java基于itextPDF实现pdf动态导出 1、制作PDF导出模板2 、集成itextpdf3 、编写实体4 、编写主要代码5、编写controller并测试补充:踩坑记录 现在的业务越来越复杂了,有些业务场景已经不能满足与EXCEL导出和WORD导出了,例如准考证打印&#x…

深度学习 植物识别算法系统 计算机竞赛

文章目录 0 前言2 相关技术2.1 VGG-Net模型2.2 VGG-Net在植物识别的优势(1) 卷积核,池化核大小固定(2) 特征提取更全面(3) 网络训练误差收敛速度较快 3 VGG-Net的搭建3.1 Tornado简介(1) 优势(2) 关键代码 4 Inception V3 神经网络4.1 网络结构 5 开始训练5.1 数据集…

深入理解JMeter中的JSON Extractor

Apache JMeter是一款出色的开源性能和功能测试工具,这款工具提供了丰富的功能和强大的扩展性,可以应对各种复杂的测试需求。当我们在进行接口测试时,经常会遇到需要从接口响应中提取信息并在后续请求中使用的情况。这时候,JMeter中…

arf_1解题

arf_1解题 镜像环境 version: 3.2services:web:image: registry.cn-hangzhou.aliyuncs.com/n1book/web-file-read-1:latestports:- 80:80新建yml文件将代码保存在当前位置 使用docker-compost up -d 拉取镜像 解题 访问该镜像映射端口为1520 可以看到页面只有一个holle但…

java Concurrent 线程安全的集合类

ConcurrentHashMap:是一个线程安全的哈希表实现,它支持高并发的读写操作。它采用了分段锁的机制,将整个哈希表分成多个段,每个段都有一个独立的锁,不同的线程可以同时访问不同的段,从而提高并发性能。 Con…

【Python】一文带你掌握数据容器之集合,字典

目录: 一、集合 思考:我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景为何又需要学习新的集合类型呢? 通过特性来分析: (1)列表可修改、支持重复元素且有序 (2)元组、字符…

DAY52 300.最长递增子序列 + 674. 最长连续递增序列 + 718. 最长重复子数组

300.最长递增子序列 题目要求:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 […

Home Assistant使用ios主题更换背景

Home Assistant使用ios主题、更换背景 lovelace-ios-dark-mode-theme 默认前置情况,1、已安转HACS插件2、搜索安装 IOS Dark Mode Theme1)第一、二步应该很容易实现,configuration.yaml文件很容易被找到2)而本人在进行第三步操作时…

python_定时任务自动匹配数据II

从配置文件读取配置参数,并每天定时执行日常任务、每周一定时执行周任务,匹配符合要求的org数据,文件查找-复制-合并-裁剪。 import os import re import shutil import threading import datetime import timeimport schedule# 全局变量&am…

php+vue3实现点选验证码

buildadmin 中的点选验证码实现 验证码类 <?phpnamespace ba;use Throwable; use think\facade\Db; use think\facade\Lang; use think\facade\Config;/*** 点选文字验证码类*/ class ClickCaptcha {/*** 验证码过期时间(s)* var int*/private int $expire 600;/*** 可以…