前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊软件工程思维

聊聊软件工程思维

作者头像
春哥大魔王
发布2023-08-08 09:47:41
1490
发布2023-08-08 09:47:41
举报

埃隆·马斯克曾说,生命中最大的挑战是——确保有一个可纠错的反馈闭环。

“确保成功”,似乎是很多人做决定的前提。但这个世界上并没有什么事情是确定的。一个可纠错的反馈闭环,几乎是“创业、投资、成长”等问题的核心答案。

反馈回路这个概念是出现在《系统思考》这本书里,所有对系统的概念或者体系有理解的人,其实对这句话都不陌生。

这几届国家领导人里面,有很多工科生,对工科生来说非常重要的思维之一就是工程思维带来的系统思维。

以下是时任上海市长的江泽民去改革开放桥头兵广东调研时的总结,满满的系统思维:

邓公在改革开放时,提出了四个现代化,因为邓公认为,没有这四个现代化,改革无从谈起,改革是个系统性的工程。

当时人均教育水平比较低,缺少系统性工程的人才,于是中国航天航空的开创者钱学森,就承担起了系统科学革新的重任。

其实软件工程、软件开发也是一个系统工程,只不过很多人没有意识到。

因为很多人习惯了写一个类搞定一些事情,算法刷题时一个函数就做了,而缺少了面对复杂的、有规模的、有质量要求系统的挑战,从而导致了工程思维没办法训练。

工程思维,第一个问题是思维尺度的问题,就是你思考的是一行代码的事情,还是一个类的事情,还是一个系统工程的事情。

工程思维是从一行代码开始的,之后站在函数角度思考,可以做什么,再之后是对象。

java带来了一个很重要的改变,一个文件就是一个对象,其实背后就有工程思想的考虑,不用再像以前一样在一个文件中放很多对象,最后找不到了。

类之上是对象,对象之上是模块。

软件工程发展背后一直追求的是复用,这样相同的代码就不需要写两遍,可以复用了。

对复用的追求过程并不是一帆风顺,出现过很多奇怪的写法,比如goto,但追求复用这条路一直没有停歇。

在互联网软件工程阶段出现了一些变化,新的编程语言是联网的。

什么意思呢?

就是你一边编程,一边编译,一边下载东西,下载一些依赖的东西,比如package包管理的东西。

最后被封装成有版本号的依赖文件包。

软件工程发展过程中还有一个进步是Ruby on Rails,,提出了约定大于配置。

Java是一个配置非常繁琐的语言,需要大量的xml配置。

突然有一天Rails说,我们很多东西其实都是缺省默认的,为啥还需要配置。

于是就出现了脚手架的概念,脚手架生成之后,文件夹、文件目录都出来了,只需要填充crud,就实现了非常好的复用。

Rails抽象出了Controller、Service、Dao的三层,基本可以满足大部分的工程开发的代码组织了,这也是Spring出现的背景。

所以从最初的一行行代码,到函数,到对象,到组件模块,再到一个工程系统,管理的粒度是越来越大了。

根本的原因是因为软件越来越复杂了,所以需要在越来越粗的粒度上管理。因为软件太复杂了,配置这件事就也变得太复杂了,需要约定大于配置,形成规范,大家都按照一定的规范进行协作。

研发同学往往瞧不起产品同学提的需求,但软件工程的发展,其实就是一个产品视角的变化。

所以从产品经理角度出发,可以更好的理解软件工程的发展,需要一种产品思维、工程思维。

软件工程的发展有三个目标:协同、管理、复用;

协同:就是说一个复杂的系统你需要和他人共享、移交、协作的,如果只是自己搞,不需要和他人协同,很多事情其实不需要做了,但软件大了之后,一个人是搞不定的,需要更多人的协同。

管理:说的是你自己写的工程后续是怎么维护、管理的,如果依赖的库升级了,你应该怎么管理。

复用:是软件代码可复用,软件工程的经验也可以复用,这样背后是需要工程思维的。

基于以上三点,就可以理解很多编程语言、IDE、技术组件为什么这么设计、为什么出现、为什么做了。

但是如果没有过真实生产环境的经验的话,这些点都很难被理解,因为他没有这方面的动机。

不管是高校老师的授课,还是学生毕业面试刷题,大家习惯了用一个类做很多事情,解决所有问题。于是大家习惯了一个类里做很多事情,就没有软件工程思维的训练机会,也就缺少了工程思维,比如面试时代码写的好好的一个应届生,在面对工程开发时,大量的面条代码随处可见。

软件工程是理论+实践的学科,工程师思维训练更多是靠实践,有质量有规模的软件工程实践,只有这样你才能理解为什么做这些事情,以及复杂的软件工程怎么演进的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档