软件工程的问题

news2024/11/24 1:48:21

我长期以来一直是这个应用程序的用户,它一直快速、响应迅速且易于使用。

然而,在上周的一次更新之后,启动时间从不到一秒钟大幅增加到超过 15 秒。唯一明显的变化是添加了一个新的启动界面和更新了用户界面。

13bb8e5add70d5bb0578a83e8fd13e07.jpeg

我经常发现自己在质疑为什么工程师们会给应用程序添加某些功能,却无意中引发其他问题。

我理解添加有用的功能或修复特定错误的必要性。例如,如果对话框在没有网络的情况下需要 30 秒才能出现,一个简单的解决方案是立即打开对话框,并设置一个超时以便在没有网络连接时提前退出,这样用户可以选择刷新以再次尝试。

这样有针对性的修复可以显著改善用户体验并解决实际问题。

我感到惊讶的是那些没有明确理由却被添加的功能,我认为其中一部分原因是出于个人利益。这是我想在这篇文章中探讨的问题。

个人目的感 —— 为了 “贡献”

当你被调到一个新团队,或者成为新的技术负责人、工程总监或首席执行官时,你会感觉有必要展现自己的价值。我认为这就是问题出现的地方。

作为工程负责人、技术总监、首席执行官,甚至是程序员,你可能会对软件发表以下评论:

伙计们,你们用这种语言写的软件有这些问题,我们只需要启动一个新项目,将整个东西重写成另一种语言,因为它更好、更现代,而且有这个功能。

或者你可能会说:

伙计们,你们使用的这个数据库有时候会出问题,这是为什么我们会遇到一些麻烦,这里有几篇文章可以证明我的观点。实际上,这篇 Hacker News 的文章描述得最好。

几乎就像我们不再希望软件只是正常工作了,那不是我们的目标。我们的目标是炫耀并博客文章中展示我们使用的编程语言、选择的架构、运行存储层的数据库。

目标是表明你编写的代码是错误的,而我正在编写的代码是正确的。使软件正常工作和高效几乎不再成为目标,而总是关注这些多余的表面事物。

我认为这一切归结为人类的自我感。

在生活中的某个时刻,我们被告知我们很聪明,无论是父母、老师、朋友还是老板告诉我们,然后我们带着这个想法走下去。这种自我感情越来越强烈,并且失去了控制。内在的自我感会试图表现为 “嗯,让我向你们展示我知道什么” 或 “让我向你展示我掌握的这种技能”。

为什么这是个问题?

当工程师的自我感得到满足时,它会变得更大,导致傲慢的对话。这会引发怨恨和无效的结果。产品受到影响。

当自我感受不到满足时,会导致沮丧和焦虑,工程师的工作效率下降。产品也会受到影响。

你这么做也不行,不这么做也不行。

“保护” 自我感

你是技术负责人,你的工程师提出了一个与你最初构建应用程序的方式相矛盾的想法。你的自我感情让你无法接受这种改变,但在内心深处,你知道她的想法将显著改进产品。

这是一个例子,其中自我感情使你固守现状,阻止了可能带来 200% 改进潜力的变化,全部因为你对自己所建立的东西太过依恋。

现在怎么办?

我没有任何建议、最佳实践或克服自我感情的路线图。我自己也在与之奋斗。我认为第一步是认识到它的存在并承认它的存在。

我们无法消除自我感情,我认为我们必须极度意识到自我感情确实是所有问题的根源。在那个时刻,我们将别无选择,只能放下它,以及我们的形象。

如果你喜欢我的文章,点赞,关注,转发!

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

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

相关文章

qt+mysl的制作软件的整体思路

环境配置 conda env list 创建环境conda create -n qt python=3.8 激活环境conda activate qt

软考A计划-电子商务设计师-计算机系统基础知识

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

年内落地BEV,大算力芯片准备好了吗?

讲述|余轶南 编辑 | Amy 编者注: 本文是HiEV出品的系列直播「硬核拆解BEV」第二期,地平线副总裁兼软件平台产品线总裁余轶南博士分享的内容梳理。 第三期商汤绝影量产行车智能驾驶研发负责人蒋沁宏分享的《BEV三大关键:数据、迁移…

TSNE 参数超级详细设置 from sklearn.manifold import TSNE

文章目录 一、TSNE是什么?二、使用步骤1.引入库 from sklearn.manifold import TSNE2.参数详细说明 一、TSNE是什么? TSNE(t-Distributed Stochastic Neighbor Embedding)是一种非线性降维技术,主要用于高维数据的可视…

什么是lamp架构

LAMP架构介绍 LAMP动态网站架构 LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。 1、LAMP分别代表什么? L代表服务器操作系统使用LinuxA代表网站服务使用的是Apache软件基金会中的httpd软件M代表网站后台使用的数据库是MySQL数据库…

代码审计笔记之未授权审计(缺失功能级别访问控制)

主题 1、未授权漏洞以及危害介绍 2、未授权漏洞的审计思路与方法简介 大多数网络应用程序在用户使用功能之前,应用程序需要验证该用户是否有功能级的访问权限。如果请求未经应用程序的验证。攻击者讲通过伪造请求参数的手段,获取应用的业务响应。 危害…

更轻更快更耐用,重量79g,支持4KHz回报率的雷柏VT9上手

喜欢用键鼠玩游戏的朋友,都会选择专业游戏鼠标和键盘,特别是游戏鼠标,往往会有着更高的精度,以及更丰富的自定义空间,在游戏中可以实现更加精准的点击。最近我看到雷柏出了一款支持4K回报率的VT9鼠标套装,这…

查看Oracle中指定用户下包含的包、函数、存储过程及其对应内容语句——查看当前数据库的连接内容

一、需求分析 在项目运维的时候,公司出于数据安全的考虑,对数据库的权限进行了控制,限制运维人员只能够通过堡垒机查看Oracle数据库内容,并且堡垒机只是设定了一个只读的账号查看数据库;这就导致了运维时在查看数据库的…

【量化交易笔记】7.基于随机森林预测股票价格

前言 机器学习在量化交易主要有两方面的应用,第一就是用时间序列的日频数据来预测未来的股价,第二 用截面数据来预测收益,现在量化基因的因子都基于这个模型。 接下来,我分别来说明,机器学习分成预测结果分成分类和回…

MyBatis——MyBatis配置信息

1.MyBatis的日志配置 log4j1和log4j2的使用 在项目中添加依赖 log4j2 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.12.1</version> </dependency>log4j1 <…

基恩士IV3工业相机的使用

注意&#xff1a;此教程仅为IV3相机分类模型教程&#xff0c;IV3还具有工件缺陷检测模型&#xff0c;即将工件分为NG/OK,为二分类 IV3相机注册分类程序 一、传感器设定 拍摄条件&#xff1a;调节亮度与焦点&#xff0c;一般选择自动调节&#xff0c;调节完成后可手动微调。触发…

Hudi(四)集成Flink(2)

6、读取方式 6.1、流读&#xff08;Streaming Query&#xff09; 当前表默认是快照读取&#xff0c;即读取最新的全量快照数据并一次性返回。通过参数 read.streaming.enabled 参数开启流读模式&#xff0c;通过 read.start-commit 参数指定起始消费位置&#xff0c;支持指定 …

基于双分支残差结构的低光照图像增强研究与应用实现

1.摘要 在低光条件下拍摄的照片会因曝光不足而产生一系列的视觉问题&#xff0c;如亮度低、信息丢失、噪声和颜色失真等。为了解决上述问题&#xff0c;提出一个结合注意力的双分支残差低光照图像增强网络。首先&#xff0c;采用改进InceptionV2提取浅层特征&#xff1b;其次&a…

AndroidStudio插件 - Json转Class、实体类(JSON To Kotlin Class)

Kotlin用挺长时间了&#xff0c;最近网络请求时因为接收、解析实体类的问题&#xff0c;后台直接给到了json文件&#xff0c;客户端可直接将json转为对应的model&#xff0c;故此我们需要用到一些插件来提升工作效率 为了提升工作效率&#xff0c;一键转换json为吾所需实体类是…

详解Comparable和Comparator

目录 Comparable接口 Comparator接口 Comparable接口 Comparable接口在源码中的声明&#xff1a; public interface Comparable<T> {public int compareTo(T o); } 可以看到&#xff0c;只要一个compareTo方法&#xff0c;也就是说&#xff0c;实现Comparable接口的类…

网站留言板的功能

开发环境&#xff1a;dreamweaverCC html jscirpt php 前置条件&#xff1a;1、一个简单的网站已经搭建完毕&#xff0c;支持用户登录网站。 2、用户已登录网站。 实现步骤&#xff1a; 一、新建留言板网页 1、新建网页&#xff1a;whiteboard.html 留言板&#xff08;j…

基于AT89C51单片机的十字路口交通灯设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87849986?spm1001.2014.3001.5503 源码获取 主要内容&#xff1a; 本项目中采用单片机 AT89C51为中心器件来设计交通信号灯控制器&#xff0c; 系统实用性强、操…

丢失mfc100u.dll修复,总结mfc100u.dll丢失的四个解决方法

mfc100u.dll是 Microsoft Visual C 2010 可再发行组件包的一部分系统文件。它通常位于 Windows 系统文件夹中&#xff0c;用于支持各种应用程序的运行时库。如果出现缺失或损坏的情况可能会影响应用程序的正常运行。打开软件或者游戏程序的时候&#xff0c;会提示‘由于找不到m…

[Java Web]Cookie,Session,Filter,Listener,Thymeleaf模板

文章目录 CookieSessionFilterListener了解JSP页面与加载规则使用Thymeleaf模板引擎Thymeleaf语法基础为标签添加内容 Thymeleaf流程控制语法Thymeleaf模板布局提取重复内容参数传递 探讨Tomcat类加载机制 Cookie 它可以在浏览器中保存一些信息&#xff0c;并且在下次请求时&a…

layui框架学习(26:弹出层模块_tips框输入框)

弹出层模块layer中的tips框和输入框函数也是其底层核心函数open的特定应用实现&#xff0c;其中tips框是可以将弹出层与具体元素绑定&#xff0c;能出现在指定元素周围&#xff0c;而输入框则是弹出信息框获取用户的输入&#xff0c;这两类弹出框的说明如下&#xff1a;   ti…