为什么要学好软件工程
【内容或版权原因,部分内容未显示】
和很多人一样,我的职业生涯是从一个自学编程的“野路子”程序员开始的。1999年,我考入西北工业大学工程力学专业,但是却对编程很感兴趣。大一的时候自学网页编程,大二开始去学校网络中心兼职,同时在外面接了很多做网站的私活。
那时,虽然我的编程水平提升特别快,但是因为完全是自学,跟其他计算机科班的程序员一比,多少有点自卑感,觉得好像差点啥!在实际工作中,遇到具体的问题,我只能见招拆招,一个一个地解决。
当然,因为一开始我无法从系统层面整体看事情,所以虽然问题解决了,但也总有一种疲于奔命的感觉。我曾经遇到的问题,你肯定也不陌生,比如:
- 开发时没有分析没有设计,上手就写,后期难维护,加班熬夜去填“坑”;
- 缺少理论指导,遇到新项目不能举一反三,工作很平庸;
- 遇到需求变更这种事,除了抱怨两句客户,只能闷头做,无力反抗;
- 做项目没计划性,想到哪做到哪,总是延期,比其他同事做的慢;
- 不知道如何与团队协作,职业发展遇到瓶颈,无法得到晋升。
那时候我不知道啥是正规做法,主要靠自己摸索。也特别困惑:科班出身的程序员是否与我有同样问题?像微软、阿里等这些大厂的程序员,他们又是怎样协调完成好那么庞大的项目?我这个“野路子”程序员面临的问题,他们又是怎么分工协作解决的?
编注:即使是2000年后的软件工程毕业的学生,特别是像我们大部分出身普通院校软件工程,仍然存在很大部分人毕业很多年后,依旧没有重新结合过往项目经验再次系统学习软件工程的理论知识,对过去自身好几年的产品项目开发过程也没有工程的观念,可能甚至也谈不上合理的规划、分析、设计、编码、测试、维护运营等
2002年初,我有幸转了专业,成为了中国第一批软件工程专业的学生,有机会系统地学习软件工程的理论知识,这解开了我的很多困惑。
软件工程学让我知道,软件项目的开发其实是一个工程,整个开发过程是可以有效组织起来的;对于开发过程的各个阶段,已经有很多解决问题的最佳实践,有很多方法来帮助我们高效完成任务;我们还可以借助工具来协助管理,提升开发效率。
如果说以前自学编程时,我还是停留在学习各种编程方法(术)上面,那软件工程开始让我主动去思考这些“术”后面的“道”,去思考软件项目中各种问题背后的原因,以及各种方法后面的理论指导。
这种对“道”的思考,逐步影响了我思维方式,让我从单一的程序思维上升到系统的工程思维去看日常的问题;同时让我形成了一套自己对于软件开发和项目管理的方法论,能举一反三,指导我去灵活运用各种方法,或者根据项目特点创造合适的解决方法。
当然,软件工程学的价值不仅于此。有人说程序员是吃青春饭的,因为计算机技术更新太快,年纪大了学习能力下降,就很难跟得上了。于是就有人很焦虑,会关心未来技术发展趋势如何?我怎么才能跟得上这些技术变化?
亚马逊的创始人杰夫·贝索斯(Jeff Bezos)曾经在一次演讲中说:“人们经常问我,未来10年什么会被改变?我觉得这个问题很有
【内容或版权原因,部分内容未显示】...
也希望软件工程学这门基础学科,真正成为武装你职业上升的盔甲。无论你想走技术路线,还是转向做管理,都能从赤身肉搏、苦钻技术却不得法的“野路子”,变得行有章法,在未来软件的快速革新稳步前行。
如果你在专栏的学习过程中,遇到任何问题,或者有什么想法,欢迎留言与我交流。相信这段学习之旅,你我都将收获满满。
本文收藏来自互联网,用于学习研究,著作权归原作者所有,如有侵权请联系删除
markdown @tsingchan
部分引用格式为收藏注解,比如本句就是注解,非作者原文。