软件研发--“扭曲变形正成为一种常态”

2023-12-25 17:28

本文主要是介绍软件研发--“扭曲变形正成为一种常态”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        现在越来越多的声称提质增效的的工具,被一批所谓的只知道无脑上马的“专家”,拎起来放到了我们这一代工程师头顶,所谓的仰望星辰,逐渐的成了乱花渐入迷人眼的状态。那些深层次的底层的运作方式确实支撑起这个时代的基础。这是一个很大的问题,甚至正在毁掉我们的未来发展空间。

        “方向盘是个抽象概念,却能帮助我们轻松驾驭车辆。动力转向又是另一个抽象层次,用于进一步改善驾控体验。所以抽象本身并没有错,只是在丹麦流传这这样一句谚语:

        无论太少还是太多,都会毁掉一切。

        如果抽象过度泛滥,那么如果有一天再没人理解其底层实现逻辑,我们又该如何应对呢?

自动化和信息化让程序员们变懒了

        科技行业的意旨其实都是以利润为核心进行驱动,人们对其他任何事情都没有兴趣。所以厂商必须要尽快发布新的产品或者服务,也就必须采取更多的抽象和自动化元素、努力压缩人手,对于整个系统底层的理解自然愈发浅薄。

        如今,早就不存在什么程序员和系统管理员了,取而代之的是DevOps甚至DevSecOps。行业正努力把每项任务都塞进同一个智能角色的日常工作当中,就是说技术人员需要独立完成开发(Dev)、安全(Sec)和运营(Ops),即整个系统管理流程。但由于没有哪个人敢自称真正的通才,所以我们只能匆忙上马自动化方案,在节约资金的同时避免不同技术部门间的成员在复杂的交互中迷失方向。于是乎,现代技术人员被教导只使用特定的工具,而对启底层实现知之甚少。

        所以一方面技术正变得越来越难以理解,另一方面我们的现代生活正越来越多地依赖于这些技术。那么,当克己行业的理解水平不断下滑,大多数人甚至根本不知道该如何修复自己手头的工具时,会引发怎样的后果?

        换言之,人们已经习惯了高度抽象的状态,并认为这才是正确的方式,他们也很乐意添加更多抽象来加剧这种混乱。

        也许会有傲慢的开发者嘲讽道:既然这样,那咱们直接用回汇编语言的了!

        毫无疑问,我们是需要抽象的,但每一个层次的抽象都有相应的代价。而且讽刺的是,处于利润追求抽象最终可能引发巨大的收益损失。

        现在,大多数“安全人员”对于安全知之甚少,只晓得如何使用某种预制的渗透测试工具。渗透测试工具的Web GUI板上显示了一大堆绿灯,就代表系统运行良好。但也许某位新村恶意的技术大牛早就入侵了该系统。并不断把有价值数据卖到暗网上去。整个过程看似毫无一场,也许会持续数年而无人发现,毕竟GUI仪表板说没问题的嘛。

过度依赖抽象,埋得不深的真相永远不会有人发现

        好多现在的公司用到的一般都是第三方的开发伙伴,“快餐”时代带来的后遗症。那边的开发人员指导怎么使用“现代框架”把网站和API组合起来,但对框架本身的编码了解不多,对安全行更是一无所知。一旦出现问题,没人能判断到底发生了什么。于是在遇到问题并挣扎了几个月后,他们最终放弃并选择对外求助。

        其实只要看看系统的真实运行情况,就能知道肯定出了问题。复制了所有内容来进行离线检查,之后花了一个晚上直接查看了系统文件中的各个代码行,并把公司主机上运行的文件跟原始框架文件进行了简单比较。

        其实并不是建议大家手动检查所有内容,但保持这种手动检查习惯能让我们学到很多东西。真相往往埋得并不深,只要有点耐心就肯定可以找到。当然,这也要求我们对技术原理有基本了解。

        长话短说,最终发现他们已经遭到了黑客入侵,其系统被用作某种色情内容的后端分发数据库。但性能问题并非源自黑客攻击,而是有框架本身所引发,因为该框架速度极慢。另外这次黑客攻击也是高度离散,要不是决定“四下打探”并认真查看了文件和代码,很可能永远发现不了。

写给技术人们的建议:别跟风、保持好奇、不断学习

        1、别总跟着炒作话题或热门趋势跑

        2、保持好奇心。不断单纯学习工具,更要了解其底层技术是如何起效的。

        3、如果可能,至少试着手动执行操作,例如如何配置工具来满足实际需求。

        4、如果可能,请查实查看当前工具的代码。对这些代码的基本了解将非常有价值。

        5、培养良好的求知习惯、保持学习、不断试验,深入钻研你感兴趣的技术。最好能建立一个家庭实验室,在这里探索并尝试剖析一切。

        记得质疑一切,特别是那些看似没有意义的事情。不要简单建设“我不懂的,总有人懂”--这只会让你变成盲目的追随者。有时候其他人确实懂,但这是不够的。我们要勇敢起来,坚持追寻自己的理念和客观事实,哪怕这会显得跟其他同行格格不入。

        我想在本文中强调的,并不是每个人都要从第一原理出发认识一切,或者说就不该使用便利的自动化工具。文章开头我就提到,抽象当然是好的。而且不同的专业事务当然要由不同的专家来做,比如驾驶卡车有司机,修理开车有技师。

        我真正要说的,是工程师到底该用怎样的态度对待技术工作,以及这种态度对于技术从业者们的重要意义。

        以软件开发为例,有太多的专业知识都被抽象了出来,进而被工具和自动化所取代。了解整个体系的人越来越少,很多人甚至连当前的工作的往下一层都不愿深挖

        这已经是个严重问题,导致很少有人能够修复垂直领域中的技术细节。没错,大家扪心自问,究竟是不是这样?

        大约大半年前,我偶然发现有些前端Web开发者根本不知道无需部署工具就能创建网站,甚至连JavaScript都可以不用。他们开发的可视赚钱的商业网站!带着惊讶之情,我询问了一位教授Python编程可的朋友,他的反应倒是很平静:

        “别那么吃惊,这就是如今的常态。技术行业希望我们培养更多只知道‘按按钮’的从业者,而不是把专业学深、学透的人。”

        我知道,总会有人想要把专业学深、学透,但这不是重点。关键在于,我们的软件开发行业已经开始扭曲变形;由于加入了太多的抽象层,大家已经看不懂整个体系在如何运作。最终,这个行业一定会搬起石头砸自己的脚。

        我敢肯定,当一位Web开发者--无论前端、后端还是“整合工作”--在制作网站时,完全不需要编码、TCP/IP、DNS、HTTP、TLS或者安全性知识,而只靠预制的工具和框架就能搞定的时候,那大麻烦恐怕就离我们不远了。

网友怎么看?

        这篇帖文在Hacker News上发布后,引来了诸多围观者。不少开发者在下方留言发表了自己的观点。

        有网友称,文中提到的现象的确存在,但这不能完全怪开发者不去主动学习,因为一项优秀、可靠的技术需要很长时间的积累才能出现,开发者实际上不需要理解它就能操作它。

        “举个例子,文中提到了‘是的,让我们都回到汇编编程吧!’事实是:在高级语言成为主流之后的很长一段时间里,开发者仍然必须了解汇编才能成为一名开发者,即使你的大部分工作时用C或C语言完成的。这是因为高级语言的编译器及其调试工具最初是一个‘有漏洞的’抽象。当你的程序失败时,你必须了解汇编才能找出问题所在。如今,编译器和调试工具已经变得如此出色,那些日子已经一去不复返了,你真的不需要再了解汇编了。

        但我们今天面临的问题是:我们一层又一层地堆积有漏洞的抽象,却没有给它成熟所需要的时间。我们的设计是为了缩短开发人员完成某件事所花费的时间,但其实这是个错误的假设,因为开发者只想要一切按计划进行,不想花费大部分时间来调试计划之外的工作。这些抽象就是复杂且毫无意义的。”

        ID名为figassis 的网友称,自己一直不理解那些没上过大学就能从事编程工作的开发者。Figassis表示自己看到了一个怪象:过去几年还是十几年间,不需要上大学就可以成为程序员似乎成为一种趋势。Figassis称:

        “确实,我的大部分技能都是在大学毕业后获得的,但是你从大学中获得了某种全球系统的理解(在我的例子中是计算机+软件+网络工程),掌握了这些基础技能,你可以快速缩小问题的潜在根源,包括TCP/IP堆栈、CPU架构、内存管理,以及编译器如何错误地优化某些代码。它对于提出正确的问题也有很大帮助。如果你所知道的知识最新的框架/语言/工具,那么当问题出现时,周围的整个世界都会‘咬你一口’。关于抽象:我总是逃避那些鼓励抽象的语言。Java就是其中之一,即使在大学里,整个OOP趋势对我来说也只是平淡无奇。我对于框架(尤其是JS)最大的恐惧是他们被抽象到这种程度,以至于我无法希望在不寻求论坛或GitHub帮助的情况下在合理的时间内解决问题,因为我甚至不理解这些概念。什么是效果?反应如何工作?等等。”

这篇关于软件研发--“扭曲变形正成为一种常态”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/536320

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

csu(背包的变形题)

题目链接 这是一道背包的变形题目。好题呀 题意:给n个怪物,m个人,每个人的魔法消耗和魔法伤害不同,求打死所有怪物所需的魔法 #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>//#include<u>#include<map

hdu3389(阶梯博弈变形)

题意:有n个盒子,编号1----n,每个盒子内有一些小球(可以为空),选择一个盒子A,将A中的若干个球移到B中,满足条件B  < A;(A+B)%2=1;(A+B)%3=0 这是阶梯博弈的变形。 先介绍下阶梯博弈: 在一个阶梯有若干层,每层上放着一些小球,两名选手轮流选择一层上的若干(不能为0)小球从上往下移动,最后一次移动的胜出(最终状态小球都在地面上) 如上图所示,小球数目依次为

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank&nbsp;正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww