为什么学习软件工程
标题内容中提及。
所以我不能放弃,于是我另辟蹊径找了别的材料来学习这门课程,我觉得这门课程是理论与实践相结合的。
无意间我发现了极客时间这个平台,这里我没有打广告的意思啊,我只是聊聊我的心路历程。极客时间里面有很多课程,刚好有软件工程之美这门专栏,由宝玉老师教学,我看了宝玉老师的简介和开篇词,让我感觉到选择这门软件工程之美专栏,我想我肯定能学到有用的东西,至少讲课的方式和描述我很喜欢,我相信我的选择没错。
从今天开始了,我会将我在专栏中的学到的知识,整理成笔记,里面也会有我自己的一些思考与心得,希望可以在自己学习的同时,也能将自己学到的知识与见解分享给互联网的大家,还请各位前辈多多指教。晚辈这厢有礼了!
2.以我自身的经历聊一聊为什么要学习软件工程?为什么要学习相关理论课程?
首先我先聊一聊我在校学习软件开发的一些小经历叭。希望在校的大学生,处在迷茫的大学生,感觉学校的理论课程无用的大学生能够早日找到自己的方向,重视理论课程的学习,同时应用层技术齐头并进。不要浪费大学美好的时光,真的,当我们走向社会,就再也没有这么多空闲的时间和舒适的环境来学习这些理论课程,钻研技术了,没有生活的柴米油盐,安安静静学习就好。这些理论课程究其主要。至于如何重要,且看下文。
接下来正式开始叭。虽然我现在大二,阅历尚且不够,但是我还是经历了一些软件网站的流程和开发的。
(1)我的经历
我先说一下我现在都学了些啥叭,HTML+CSSS+JavaScript、PHP、thinkphp5、SQL、MYSQL、云服务器宝塔部署项目、WordPress、C、C++、Java、Git、phpstudy、postman、Navicat、简单的原型交互设计软件。这些技术说实在的我自己感觉我学的并不精,因为任何一门技术深入进去就是汪洋大海,我也只是会用而已,用其开发出我想要的简单的东西。
接下来说说我运用这些技术做了些啥叭。
第一个经历,也是学校的一个小比赛,WEB前端设计大赛,没有后台,只有数据库,没什么很大的技术含量,我和我的小伙伴一起做的,虽然难度不是很大,但是也累得够呛,还有一些小bug。我把它搞到服务器了,附上链接:小demo静态界面
第二个经历也是大一期间,应该是大一下学期,工作室接了一个项目,开发一个小孩子学习英语的APP,那应该是最开始的时候叭,老师让我和另一个小伙伴做原型设计,就是简单的页面交互,只有前端显示,没有后端数据,刚开始的时候应该是要尽快出效果,然后确认是否继续接下来的研发,能否得到甲方的确认签订合同吧叭。这个项目到现在已经完工了,从整体原型设计、开发、测试、到上线,我都还是比较清楚的,我虽然没有参与过开发,但是在原型设计和测试上面我都有参与,当然当时的原型设计和测试,现在在我看来,由于没有系统学习过软件工程的相关知识。我的操作一点都不专业,但是还是学到了许多,现在这个项目由我来维护了,学长去考研了,现在维护也就是改改数据库,没啥重大变化,还比较轻松。
第三个经历就是在学java的时候,老师让我们做一个学生管理系统,当时用了一个星期叭,三天都在思考怎么设计,说实话设计真的很重要,要不然开发会没有头绪,或者代码很乱,没有层次和架构,当然这个小demo我自己我感觉技术含量不高,设计和架构肯定有问题,没办法呀,毕竟软件工程的思想和设计模式等架构知识我没学啊,现在暂时还达不到这个高度。当然,这些思想,理论技术后期我都会好好学的。附上链接:学生管理系统小demo
第四个经历是在大一暑假期间在校学习了一个月之后,在大二上学期十月份左右叭,为了巩固所学,找了一个教程跟着做,基于thinkphp5开发了一个小博客网站,网站入口:1001.bithachi.cn。不得不说这个项目我学到了很多东西,从开发到部署到云服务器。
第五个经历就是最近啦,寒假期间,开发了一个现在来说我比较满意的博客网站:www.bithachi.cn,平时写写博客笔记,记录记录生活。
(2)我的感受 虽然自己开发了一些小玩意,但是也都很浅,只是会用,不清楚这些技术背后的·"道"
,即这些技术背后的软件开发思想,现在我回头想想,其实这些项目都离不开软件工程的思想,从原型设计到真正开发再到测试,就比如我上面提到的每一个小demo,每一个都有软件开发的思想,从原型设计到开发到测试到上线,都有一个流程的,还有一系列方法。如何让自己写的代码运行效率更快、让维护人员能够看懂,如何才能使代码在后期维护中更加和谐,不会影响之前的功能,如何设计软件的整个架构,每个模块如何做,开发成本等等,这些都是软件工程需要思考的。当然现在我的理解都还比较浅。希望通过软件工程这门学科能够让我解开疑惑,对软件开发有一个宏观的角度去思考,从本质去看问题和设计架构。
以上是我个人的经历和理解,为什么我们要学习理论课程?为什么要学习软件工程?下面我们来看看我在软件工程之美中学习到的更加专业的回答
3.专栏专业回答为什么要学习理论课程和软件工程等知识? 以下内容是我在专栏中截取的部分内容,作为自己的笔记叭。 (1)没有学习软件工程,没有从系统层面整体去思考,会遇到的问题是什么? 开发时没有分析没有设计,上手就写,后期难维护,加班熬夜去填“坑”; 缺少理论指导,遇到新项目不能举一反三,工作很平庸; 遇到需求变更这种事,除了抱怨两句客户,只能闷头做,无力反抗; 做项目没计划性,想到哪做到哪,总是延期,比其他同事做的慢; 不知道如何与团队协作,职业发展遇到瓶颈,无法得到晋升。 (2)学习软件工程能学到什么? 软件项目的开发其实是一个工程,整个开发过程是可以有效组织起来的;·对于开发过程的各个阶段,已经有很多解决问题的最佳实践,有很多方法来帮助我们高效完成任务;我们还可以借助工具来协助管理,提升开发效率。
(3)除了软件工程之外,我们还需要学习那些理论知识?
有人说程序员是吃青春饭的,因为计算机技术更新太快,年纪大了学习能力下降,就很难跟得上了。于是就有人很焦虑,会关心未来技术发展趋势如何?我怎么才能跟得上这些技术变化?
亚马逊的创始人杰夫·贝索斯(Jeff Bezos)曾经在一次演讲中说:“人们经常问我,未来 10 年什么会被改变?我觉得这个问题很有意思,但也很普通。从来没有人问我,·未来 10 年,什么不会变?
”
这个回答同样适用于软件开发领域。在软件开发领域,有哪些知识十年前很重要,现在仍然重要,未来可能同样重要?
其实仔细分析,这些知识不外乎:·数据结构、算法、面向对象思想、设计模式、软件工程等等。如果范围不局限于程序开发,还要算上测试、产品设计、项目管理、运维这些岗位等等。
你会发现,无论你是什么岗位,只要你从事软件开发相关领域,都绕不开“软件工程”,因为现代软件项目开发,多多少少都离不开软件工程知识的应用。
想象下在日常工作中,不管你用什么开发语言,不管是前端和后端:
你接到一个开发任务,如果想开发出客户想要的功能,你是不是先要做需求分析;
你接手一个复杂的、大的功能模块,是不是先要做设计,才能把复杂的拆成简单的,才能让大家一起分工去开发;
你完成一个功能模块,如果要保证质量,是不是需要写一些测试代码,还要做一些功能测试;
还有日常用的那些工具,像源代码管理、Bug 跟踪。
而这些内容,都是软件工程相关的知识,和你用什么语言无关。十几年前我开始工作时就在用这些知识,现在还是在用这些知识,未来这些知识还不会过时。
换言之,这就是经典的价值,为什么说我们要学经典,因为经典就是这个行业最为本质的东西。你顺着这个逻辑想,就知道为什么大学的计算机专业要设计数据结构、算法、操作系统、软件工程这样的课程了。
·技术更新迭代速度确实很快,难以把握,更难以预测,但是软件开发背后的逻辑却万变不离其宗。
你只有掌握了这些逻辑,才能步步为营,不被快速发展的软件开发行业所淘汰。因为你脑袋里装有软件开发的战略,相对于赤手空拳、盲打莽撞的人来说,你更能在未来获得先机。