Home 软件工程之美 01| 为什么要学习软件工程

01| 为什么要学习软件工程

0 51

引言

按理论上来说,我已经系统的 学习过软件工程这门课了。

但实际上,我一点也不理解 软件工程 这个标题的含义,甚至无法准确的描述软件,或者是工程的含义;我相信很多的同学跟我一样,仍然犯迷糊,因此我试图通过分享学习宝玉前辈的《软件工程之美》的一点心得,来帮助所有看到本篇文章的朋友。(或者是自己学习用,因为我只是个小菜鸡)

 

一、没有学习软件工程而出现的问题

花费较多的时间去学习各种技术栈,我称之为 下沉

在下沉的过程中,我们不断点亮新的技能点,这是一个很愉快的过程,但同时也是很危险的,正如潜水员不断下潜,也在离海平面越来越远,离海平面越远,就越容易失去对方向和计划的把握。

学习是为工作而服务,点亮新的技能点也是为了解决所接手的开发任务,那为什么,我们在工作的时候,会产生   明明我很努力,很认真,很有激情的,花200%的心血去完成开发任务,却收效甚微,或者频频出错,从而导致自己加班加点,信心受挫,给公司造成损失 的情况?

我们在实际工作中,常常遇到很多问题,比如:

  • 开发时没有分析没有设计,上手就写,后期难维护,加班熬夜去填“坑”;(开发前不分析思考)
  • 缺少理论指导,遇到新项目不能举一反三,工作很平庸;(开发时不能融会贯通)
  • 遇到需求变更这种事,除了抱怨两句客户,只能闷头做,无力反抗;(无法良好的应对需求变更)
  • 做项目没计划性,想到哪做到哪,总是延期,比其他同事做的慢;(无计划,无组织,无效率)
  • 不知道如何与团队协作,职业发展遇到瓶颈,无法得到晋升。(职业生涯上升遭遇阻塞)

那么,科班出身的程序员是否与我有同样问题?像微软、阿里等这些大厂的程序员,他们又是怎样协调完成好那么庞大的项目?我这个“野路子”程序员面临的问题,他们又是怎么分工协作解决的?

软件工程可以解开这些困惑。

 

二、软件工程

软件工程:软件项目的开发其实是一个工程,整个开发过程是可以有效组织起来的;对于开发过程的各个阶段,已经有很多解决问题的最佳实践,有很多方法来帮助我们高效完成任务;我们还可以借助工具来协助管理,提升开发效率。

于我而言,学习软件工程,使我区分出了 术 与 道 的概念。

  • 术:各种技术栈;
  • 道:站在工程,项目的角度去思考问题的出现,解决,本源。

软件工程将应用于软件开发的整个历史。(即以前,现在,未来都需要软件工程)。

你会发现,无论你是什么岗位,只要你从事软件开发相关领域,都绕不开“软件工程”,因为现代软件项目开发,多多少少都离不开软件工程知识的应用。想象下在日常工作中,不管你用什么开发语言,不管是前端和后端:

  • 你接到一个开发任务,如果想开发出客户想要的功能,你是不是先要做需求分析;
  • 你接手一个复杂的、大的功能模块,是不是先要做设计,才能把复杂的拆成简单的,才能让大家一起分工去开发;
  • 你完成一个功能模块,如果要保证质量,是不是需要写一些测试代码,还要做一些功能测试;
  • 还有日常用的那些工具,像源代码管理、Bug 跟踪。

而这些内容,都是软件工程相关的知识,和你用什么语言无关。

换言之,这就是经典的价值,为什么说我们要学经典,因为经典就是这个行业最为本质的东西。你顺着这个逻辑想,就知道为什么大学的计算机专业要设计数据结构、算法、操作系统、软件工程这样的课程了。

技术更新迭代速度确实很快,难以把握,更难以预测,但是软件开发背后的逻辑却万变不离其宗。你只有掌握了这些逻辑,才能步步为营,不被快速发展的软件开发行业所淘汰。因为你脑袋里装有软件开发的战略,相对于赤手空拳、盲打莽撞的人来说,你更能在未来获得先机。

发表评论

发表评论