软件工程是否可以提高代码质量?

2019-05-14 15:02:28 +08:00
 azuki

所谓软件工程

↑这是王垠的一篇博文,上面的链接是备份。他的博客上已经看不到了。不知是不是改变了观点。

我发现软件工程这整个领域,基本就是吹牛扯淡卖“减肥药”的。软件行业的大部分莫名其妙的愚昧行为,很多是由所谓“软件工程专家”发明的。 …… 他们把这些所谓方法论兜售给各个软件公司,鼓吹它们的各种好处,说使用这些方法,就可以用一些平庸的“软件工程师”,制造出高质量低成本的软件。 …… 全都是一群饭桶。他们其实根本就不懂很多编程的东西,写出文章和书来也是极其肤浅,一知半解。

软件工程真的如此不堪吗?对提高软件质量帮助很小?虽然没有经常被提到的数据库、操作系统、网络等学科重要,但是否像文章里说的毫无价值?

这些“方法论”或者“原则”对于你们写出更好的代码是否有帮助?

5982 次点击
所在节点    程序员
50 条回复
jingyulong
2019-05-15 09:12:05 +08:00
现在的人比较浮躁,讲究技术的实用性。

中国软件行业起步比欧美晚,认知也比较落后。

经常有人问,程序员到 35 岁,是不是要转管理层?

你看欧美技术大神,五六十岁的都有在搞技术的。如果没有对这个行业的热爱,只能在这个道路上越来越平庸。

理论任何时候都不会过时,等你融会贯通了,你就是大神级别的人物。
anmie
2019-05-15 09:15:09 +08:00
话说你们不觉得软件工程 更适合产品经理 项目经理们看看么。
zephyru
2019-05-15 09:26:06 +08:00
大致扫了一遍...这篇文章没什么营养....就是典型的自己立个靶子自己打..
一番批判却没有提什么解决方案....有种自嗨的意味....没什么建设性..
我觉得这一块..概括为
对于软件工程,尽信书,不如无书..
足够了
exploreXin
2019-05-15 09:29:31 +08:00
本来想写一些软件工程方面的东西,从而说一说它的特点与优势,不过点进来看到你引用的时王淫大神的言论,我决定来说点别的。

相比于搜索此人的言论,不如去搜一下此人的经历,看完之后你会发现,全世界范围内筛选人才的方式,目前仅止于看你的学校出身,也就是看分数,分数高就是高端人才,面对众多的学子,要批量的筛选符合自己培养条件的人才,这也是目前没有办法的办法。但把某一个人拿出来单独评审一下他的方方面面,就可以较全面的评价之。

群众的眼睛是雪亮的,所以那些靠自己记忆力强,会考试,懂得如何拿高分上名校的人,就算你毕了业,有知名导师推荐,可以去国外留学,最后也只能灰溜溜的被赶出来,该上那去上那去。这样的人也就只能写一些神仙打架的事情糊弄一下不明事理的小白,本来可以成才的小白被忽悠之后很容易就飘起来了,受到这些不良影响,从而自己的职业规划道路也被毁了。所以提醒一下想要提升自己能力的各位,网络时代,提高技术能力的同时,也要提高分辨是非的能力,这年头,什么鸟兽鬼怪借着网络都能成神,要小心时刻提防,谨防上当。
yim7
2019-05-15 09:32:45 +08:00
计算机行业毕竟太年轻了,软件工程积累的经验不足
ErrorMan
2019-05-15 09:48:49 +08:00
通篇看下来没有论据啊,只是在提他的观点,也没有具体的说法,这让人怎么信服
nosky
2019-05-15 10:07:54 +08:00
工业界需要
suixn
2019-05-15 10:09:00 +08:00
@zqx #4 一级学科
whatsmyip
2019-05-15 10:11:57 +08:00
软件工程科班出身,它是一门工程学,私以为软工的目的在于*把个性化十足的程序员变成流水线上的装配工*,从而减少替换所带来的一系列问题。同时它组织了整个项目的开发流程,主要目的在于在给定的时间内按照质量完成任务。

与其说它提高了代码质量,不如说它更加关注性价比。软件工程扯淡的地方在于,它的需求期很长,自以为能够在一开始就把所有的需求确定下来,但是这是不可能的,也不符合当前互联网企业的开发风格。

当然了,开发流针对这些问题也做了一些改进,如迭代之类,但是对于现在的敏(快)捷(速)开发,仍然不那么有用。

说软工完全是扯淡的人才是在扯淡。
jameskuk
2019-05-15 10:33:30 +08:00
“可是你最后发现,无论你如何高效的使用这些工具,它们都只能起到辅助的,次要的作用。编程工具永远不是程序本身,对编程工具的熟练掌握,永远也无法代替真正的对程序和计算的理解。过分强调这些工具的使用,是本末倒置的,让工程走上失败道路的作法。”

看了这一句,就知道这是个用“嘴”编程的主。真正做工程时候时候,需要的是熟练掌握工具的,还是会 BB 的?

sense 和熟练编程工具为什么就冲突了?我觉得他们相辅相成。光说不练假把式,光练不说真把式,连说带练全把式。
radiolover
2019-05-15 10:37:41 +08:00
终究把“腐朽”的软件工程捡起来了?前几年互联网不是号称要抛弃一切“老旧臃肿”的技术么~
lurenw
2019-05-15 11:12:52 +08:00
看楼上一些人都是在说王垠是在嘴,但也没见谁拿出什么实质性反驳的论据来证伪,比如自己公司用了 xxxx 软件开发流程,提升了几倍的开发效率。

在大学听老师授课的时候,我就产生过类似的疑问,软件过程的作用是什么。参加工作之后,那些软件工程方法论给我的感觉就是可能有用,但并没有鼓吹的那么有用。以听到最多的敏捷开发为例,很多公司其实都是为了所谓的敏捷而敏捷,或者是简化了其中的许多流程。更不用提需要花大成本去实现的 CMMI。

再比如测试方法论里的 TDD 和 BDD,我曾尝试在大团队里推广 BDD(领导要求),可能我司人员学艺不精,也可能我理解不到位,很多同事都产生了排斥的想法,最后也作罢。

很多软件工程方法论(我是指大部分),给我的感觉就是繁复,偏于形式,所以我其实是同意王垠文章中的部分观点。如果花上大成本去维护一套软件工程流程,我觉得性价比完全不如把精力和时间投入到代码质量与需求评审上。
darklowly
2019-05-15 12:01:57 +08:00
@lurenw 写的很好
1 是培养代码质量,如果团队里面的大部分人关注代码质量的话,他们也会关注工程问题
2 是需求分析和评审
3 code review
4 一些简单的,良好的辅助工具
5 一些必要的流程还是需要的
zouzou
2019-05-15 12:10:56 +08:00
抛开书本,软件工程是解决多人如何协作开发软件,更多的是管理。
micean
2019-05-15 12:22:50 +08:00
当然可以提升代码质量
但工程的执行者始终是人
人自己就是不稳定因素
jackmod
2019-05-15 12:45:11 +08:00
这玩意的效果是节省时间。去改一改 3 个月前写的代码体验一下就明白了(雾
enxlave
2019-05-15 12:52:04 +08:00
我觉得软件工程既然是工程的一种,那么和土木工程类似,必然包括立项、勘察、规划、设计、施工、维护(迭代更新)等一系列步骤。在小的项目中它可能不是那么重要,但是在超级工程中没有系统性结构性的理论支持最后很可能会吃大亏。比如在老家盖个平房,请几位有经验的师傅把要求描述一下就差不多了,但是超级工程比如港珠澳大桥之类的肯定要严格按照工程理论的要求按部就班地做,这样能够尽可能消除不稳定因素。
另外我感觉上软件工程导论和软件设计与体系结构之类的课的时候认真听的人不是太多,很可能是因为现在用不到所以感觉没用。
seabirds
2019-05-15 13:11:24 +08:00
@whileFalse 比自己牛的是牛逼,比自己垃圾的是傻逼😂
sorshion
2019-05-15 13:29:40 +08:00
软件工程不可以提高代码质量,那需要软件工程干嘛
国内的 996,实际上是很多公司,忽视软件工程的建设
no1xsyzy
2019-05-15 13:46:43 +08:00
关于删除,似乎是这么说的:
https://web.archive.org/web/20180601060604/http://www.yinwang.org/blog-cn/2018/05/28/change
“很多人,不管他们是什么冠冕堂皇的头衔,应该像街头小混混一样被抛在脑后,被忽略,而不是被仔仔细细记录下来,进行深入的批判……停止批判他们,不是妥协,而是彻底的无视……”

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/564024

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX