软件工程,其实没有任何工程而言

解构软件工程困局:再论“没有银弹”视角下的永恒挑战与破局之道 再论‘没有银弹’”一章深刻揭示了软件工程发展的客观规律和现实困境。在未来的发展道路上,软件工程无法依靠单一的技术或方法实现革命性突破,但通过技术创新、管理优化、人才培养和团队协作等多维度的协同努力,我们能够逐步攻克软件开发中的难题,推动软件工程不断向前发展。每一次技术的进步、每一种管理模式的创新、每一位软件人才的成长,都是在为软件工程的发展添砖加瓦。 阅读详情

将大型软件研发过程,叫做软件工程,实在是个笑话。

 

能够叫做工程的,必然是以科学为基础,将科学知识凝结为定理和公式,从而能够系统地传承。这样,工程人员经过系统化培训后,就可以胜任工程中的工作岗位,从而能够进行大规模的工程实施。

 

土木、建筑、航空、交通、能源等等行业,都是将数学、物理、化学等科学知识凝结为行业定理和方法,如何分析土质,如何测量风力,如何评估抗震能力,这些都是有系统的方法的。经过系统化培训,从业人员都可以掌握这些方法,从而胜任工程中的具体工作。

 

但这些,在软件行业中都是不存在的。

 

软件行业,哪里有把科学知识凝结为定理和公式?哪里有系统地传承?无数的程序员还在为用Tab还是空格争执不休,是否用goto 还吵了几十年。从Tab还是空格这些细枝末节的问题,到单体还是微服务,从继承还是组合的设计方法选取,到Scrum还是XP的软件过程敏捷管理,到处都充满了争议,从未达成过一致。因此,也就没有任何可传承的东西。

 

每个程序员,就是在这样的环境中,通过自己的偏好进行判断和选择,汲取了自己认为是正确的知识,武装了自己的头脑。并且完全是靠自学,通过自己的理解和体会,最后自己认为自己学会了。

 

自己理解的,是正确的吗?自己理解的,是全面的?自己掌握的技术和方法,是最好的吗?这些,都无从回答。

 

因此,被叫做“野生程序员”,恰如其分吧?

 

大型的软件开发,居然都是由这些野生程序员来完成的,还管这叫软件工程?

 

名校的计算机专业和软件专业,也没有传授给学生如何编写大型可维护软件所需的技能。
大型成熟的软件公司,也没有什么系统的方法,指导程序员如何设计和开发大型可维护软件。

 

与40年前相比,今天我们的硬件有了天翻地覆的变化,编程语言和开发工具比之前不知先进了多少倍,但软件开发的进度和质量,并没有什么变化,依然停留在刀耕火种的原始状态。进度和质量,还是由具体写代码的工程师个人水平和工作心情决定的,完全不可控状态。

 

这是个巨大的鸿沟!但软件行业似乎对此视而不见,并漠不关心。老板的唯一招数,就是拿出996的杀器,迫使程序员加班,从而获得所谓的软件开发进度提升。对此,我只能呵呵了!

 

软件行业正在如火如荼地高速发展,并且快速渗透和融入各行各业中,并承担着数字化改造的核心作用。但软件研发人员水平参差不齐,软件产品的质量如此之差,软件交付速度如此缓慢,这终将酿成巨大的软件灾难。

 

是时候,需要正视这些问题了。软件需要回归到工程的状态,这样才能给各行业交付稳定可靠的高质量软件。而要实现这一目标,必须要保证软件开发人员是合格的工程人员,掌握了工程所需的知识与技能。

 

因此,编写大型可维护软件,需要哪些知识和技能,如何系统化地培训出软件工程人员,将成为时代的刚需。


我的微信号是 实力程序员,欢迎大家关注我。
 

当AI写小说——一个被严重低估的工程化战场 摘要 AI小说创作远非简单的prompt生成,而是一项需要系统化工程管理的复杂任务。本文通过真实案例分析,揭示了当前AI写小说存在的五大核心难题:设定一致性难以维持、文风控制缺乏个性、爽感节奏难以把握、长篇记忆能力有限以及平台规则适配困难。研究显示,90%的失败案例源于错误的创作方法,主要表现为对话框式随机生成和模板式同质化创作。要实现高质量的AI小说创作,必须建立包括设定治理、记忆管理、文风校准等在内的全链路工程化体系,而非依赖单一prompt指令。只有采用系统化的人机协同方法,才能突破当前AI创作的质量 阅读详情

相关推荐

基于Java+SpringBoot+Vue的中小企业设备管理系统的设计与开发(源码+lw+部署文档+讲解等)

💗博主介绍:✌新人博主,工作经验两年+、专注于Java、小程序技术领域和毕业项目实战✌💗🌟文末获取源码+数据库🌟

2301_76502068的博客 1382

【先验知识归纳】没有银弹——伴随软件工程的长期问题

本文参考:没有银弹 '没有银弹'的含义: 没有任何一种单纯的技术或管理上的进步,能够独立地承诺在十年内大幅度地提高生产率、可靠性和简洁性。 软件工程中的根本问题和次要问题 根本任务-设计:打造构成抽象软件实体的复杂概念结构 次要任务-实现:使用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言 没有银弹更多的是指设计上的困难(也就是架构师的工作) 根本问题为什么那么...

a419715160的博客 559

破解拼多多网页字体加密的Python实现(静态)

爬取或者复制粘贴出来发现数字不是6372,而是这样的一个东西 ""从上图我们可以看出数字是一行的空白,后面被浏览器渲染后才展现的数字。我们可以用这个代码查看十六位进制对应的十进制,为什么要看十进制呢?​,而字体文件中的字符映射关系(cmap)也是以十进制存储的。我们搜索这个属性我们可以看到第一个这样的属性有一个URL,这个就是解密的字体包。然后我们构造一个这样的映射字典 key就是对应的十进制,后面的值就是对应的数字。然后我们需要封装一个函数,将加密文字和映射字典传入,返回解密后的数字。

weixin_64179111的博客 3539

再论软件工程没有银弹

为什么说软件工程没有银弹?上篇文章论述了软件工程之所以不存在银弹是因为,软件工程本身存在复杂性,一致性,不可预见性,不可视化性。有些专家就这个问题持有相反的观点,大致可以分为以下几种 时间倒退 在20世纪50年代,开发程序还是使用纸带打孔,我们在那个时候根本没有考虑到计算机硬件会发展的如此之快,更不会想到会有今天的智能编辑器和统一的开发环境,在今天看起来是次要困难的事情,可能在那个时候就是主要困难

u012516914的专栏 3247

达梦数据库JDBC连接池断开自动重连设置

一、场景 在网络状况不是非常良好,经常会出现暂时性的拥塞或者断开的情况,而且当我们重启数据库时也会发生类似的情况。所以需要配置中间件的连接池来实现连接测试以及自动重连,通过重新配置连接池,成功解决了这个问题。下面会给出一份数据源配置参数详单和一份推荐的数据源配置项。 二、连接池配置参数 1. initialSize:连接池启动时创建的初始化连接数量 2. maxActive:连接池中可同时连接的最大的连接数 3. maxIdle:连接池中最大的空闲的连接数,超过的空闲连接将被释放,如果设置为负

lilv1989的博客 7235

YOLO11多类别数据集的类别平衡方法:讲解类别不平衡问题的识别方法,以及过采样、欠采样、类别权重调整等解决方案(一)

类别不平衡问题是机器学习和计算机视觉领域中一个常见但棘手的挑战。简单来说,当数据集中不同类别的样本数量存在显著差异时,我们就称这个数据集存在类别不平衡问题。在YOLO目标检测任务中,这意味着某些类别的目标对象在训练数据中出现得非常频繁,而其他类别的目标对象则很少出现。 想象一下,你正在训练一个交通监控系统,需要检测不同类型的车辆。在这个场景中,"汽车"这个类别可能有成千上万个实例,而"自行车"或"摩托车"可能只有几百个实例。这种数量上的巨大差异就是典型的类别不平衡问题。 从数学角度来看,假设我们有一个包

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 939

软件工程真的是一门什么用都没有的学科么?

软件工程真的是一门什么用都没有的学科么?-----读《构建之法》有感楔子我很惭愧,构建之法这本书已经出版四五年了,我之前却未曾涉猎,还是在通过组织长沙.net技术社区之后...

dotNET跨平台 252

CUDA内核反汇编实战:用cuobjdump解锁SASS指令的奥秘

本文详细介绍了CUDA内核与SASS指令的关系,以及使用cuobjdump工具进行反汇编分析的方法。主要内容包括:1. CUDA内核的基本概念及其在GPU并行计算中的重要性;2. SASS指令作为底层汇编指令的关键作用;3. cuobjdump工具的安装配置和使用方法;4. 通过数组加法实例演示反汇编过程;5. 深入分析SASS指令格式、分类和执行流程;6. 两个实际案例展示性能优化和问题排查的应用。文章为开发者提供了深入理解CUDA程序底层执行机制的有效途径。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 438

飞算全自动软件工程平台:让天下没有难做的软件工程

文 | 曾响铃 来源 | 科技向令说(xiangling0815) 在数字化转型的这场时代浪潮中,软件服务企业遇到了最好的时代,但同时也是最坏的时代。 顺势而上,伴随着时代趋势同步成长,这一点很好理解,可是,“坏”从何来呢? 企业的数字化转型通过各种各样的软件工程来实现,然而现在的现实是,很少有软件服务企业会考虑对自身的管理,对软件工程项目的管理也进行“数字化”转型,对传统的“需求分析、设计、编码、测试和维护”这一套传统流程进行概念化重塑,以至于当企业规模达到一定程度后,也陷入到与实体企业一样“剪不

691

三菱FX5U-PLC建立CClink的IO通讯

最新需要用三菱的FX5U的PLC搭建一个CClink通讯,PLC做主站,控制CClink从站的IO,下面2个输入模块AJ65SBTB1-32D,两个输出模块AJ65SBTB1-32T。3、在右侧的部件,选择网络模块:FX5-CCL-MS,CC-link主站模块。依次把加入两个AJ65SBTB1-32D,两个AJ65SBTB1-32T。7、基本设置,网络配置设置,链路刷新设置,设置好下面参数,应用。6、基本设置,网络配置设置,CC-Link配置设置。8、部件选择,模块,右键,添加模块标签。

wzz418550729的博客 1001

YOLO11改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

YOLOv11改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

魔改工程师的博客 4509

软件工程实训有必要吗_软件工程专业有没有必要考研

该楼层疑似违规已被系统折叠隐藏此楼查看此楼今天的这个话题是由一个学妹在QQ上问我的,请看下图:对于学计算机软件类专业的学生,或许都会遇到这么一个问题,而我也不止一次被问及到这么一个问题了,那么,今天就来聊一聊我对这个问题的看法,仅代表个人观点,仅供参考!认清自我先撇开考研的问题,这个问题最大的问题在于对自我认识不清晰,自我规划的缺失,处于迷茫阶段,不知道自己以后想干嘛,能干嘛,而你要做的就是先认...

weixin_39640767的博客 214

Qt QCustomPlot 图形库详解及使用

QCustomPlot 是一个开源的 Qt C++ 库,专门用于创建数据图表。易于集成到 Qt 项目中。支持多种图表类型,如折线图、散点图、条形图等。提供丰富的交互功能,如缩放、平移、选择和拖动。高度可定制,支持图形的各种样式设置。// 添加第一条曲线i < 101;++i) {// 设置曲线颜色// 添加第二条曲线i < 101;++i) {// 设置曲线颜色// 设置散点样式// 添加图例。

MusicScore的博客 764

软件工程实训有必要吗_软件工程专业有没有必要考研?

认清职业在我看来,这个是决定你有没有必要去考研最重要的一个因素;说白了就是你以后想做什么1、如果你以后想考公务员系统、事业编、国企等单位,考研很有必要对于计算机软件专业类的学生,有打算考公务员、当老师、想进入事业编、国企等单位的就很有必要去考研,因为学历有助于你晋升、评职称、加薪,而且对于这类单位,往往对学历要求会更高。不过话要说回来,有这类想法的学生,几乎是会把本专业放弃了,因为做软件技术开发的...

weixin_30062561的博客 1209

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

专业是软件工程,现在好迷茫,感觉什么都没有学到,该怎么办?

记住,每个人学习的节奏和方式都是不同的,找到适合自己的学习路径是关键。学习软件工程可能会遇到迷茫和困惑的时期,这很正常,尤其是在学习初期。明确目标:思考你学习软件工程的目的是什么,是为了将来从事软件开发工作,还是对编程和创造软件有浓厚的兴趣。网络建设:加入相关的社群和论坛,与其他软件工程师交流,这可以帮助你获得新的视角和解决问题的方法。持续学习:软件工程是一个快速发展的领域,持续学习新技术和工具是非常重要的。反思和调整:定期反思你的学习过程和成果,根据需要调整你的学习计划和方法。

704

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

软件工程没有项目经验,怎么准备校招

软件工程同学没有项目经验,并不等于校招没机会。2026 年校招更看重的是:你能不能把基础、工程能力、业务理解和数据思维串起来。现在不少企业的研发岗位已经不只是“写代码”,还要求理解用户、指标、增长和智能化应用,这也是为什么近几年被越来越多学生和企业关注。CDA 认证新版大纲强调“探索-诊断-指导-工具”四步分析模型,并新增 AI 技术应用、数据驱动决策等内容,对软件工程学生补齐“业务+数据”短板很有帮助。

XIAOYU672013的博客 319

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

程序员为什么不写注释?因为没有软件工程

程序员为什么不写注释?因为没有软件工程

编程之道在明明德在亲民在止于至善 969

软通动力软件工程师笔试_避免成为一个没有动力的软件工程师

软通动力软件工程师笔试Comes a day when you really don’t want to work. You just want to check-in and check out of the job. Doesn’t happen to me a lot, because I love what I do, but there are few ways to motivate ...

weixin_26706567的博客 432

女性售前工程师_我采访的24位软件工程师中没有一个是女性

女性售前工程师I just wrapped up my first job hunt for a software engineering role. Over 7 weeks, I had 24 rounds of technical coding interviews at 11 companies in the Bay Area. The number of women I intervie...

weixin_26644585的博客 800

漫谈软件工程(1)——回顾十年软件开发经历

 软件工程专业毕业,从事软件开发工作将近十年了,近来我重看一些软件工程书籍,回顾着这些年的软件开发经历,越发有一种冲动:结合这些年软件开发的经历,倾述当前软件过程管理中的行业现状。当然我所说的并不一定就是正确的,权当作是一种经验总结。        回顾十多年前,软件开发工作还是由英雄人物似的程序员主导,一个牛X的程序员就可以完成一个软件项目。但软件发展到今天,一个软件或一个系统动辄都是几十万行上...

cpq37的专栏 2216

10-230 查询计算机工程专业学生选修但软件工程专业学生没有选修的课程

分数 10全屏浏览题目切换布局作者 张庆单位 集美大学本题目要求编写SQL语句,查询计算机工程专业学生选修但软件工程专业学生没有选修的课程名称。提示:请使用SELECT语句作答。

dqd66的博客 3405

一软件工程师猝死,愿天堂没有代码

点击上方 "编程技术圈"关注,星标或置顶一起成长后台回复“大礼包”有惊喜礼包!每日英文You never know how strong you really are u...

程序员小乐 422

软件工程本质性工作的四大难题--没有银弹

http://www.cnblogs.com/wyx-xyz/p/7290902.html 软件工程的本质性与附属性工作 所有的软件创作都包括本质性和附属性工作:前者是创造由软件实体组成的复杂概念模型;后者是用程序语言表达软件实体,并在时间和空间的限制下翻译成机器语言。本质性工作存在四大难题:复杂性、隐匿性、配合性和易变性。   软件工程本质性工作的四大难题 1.复杂性 随着“软件吞噬世界”不...

weixin_33843947的博客 867

书评:人月神话(不朽的软件工程名著)收藏

 已经有好几周没有写书评了,今天突然想起来要写一写。由于上次的书评是关于C++的,今天打算写写软件工程方面的。对于软件工程而言,我个人认为到目前为止,尚未有哪本书的影响力和深刻程度能够超越《人月神话》(全名是:The Mythical Man-Month -- Essay on Software Engineering)。于是考虑来聊一下鼎鼎大名的《人月神话》。如果你已经熟读此书,并且自认为深刻掌

云淡风清Weblog 758
上一篇: 为什么聪明的程序员会写出糟糕的代码
下一篇: 学习哪门编程语言好,我来回答
实力程序员K
博客等级 码龄5年 16粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值