博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从“野路子”到“正规军”的软件开发之路
阅读量:5903 次
发布时间:2019-06-19

本文共 1168 字,大约阅读时间需要 3 分钟。

大家好,我是宝玉。我的专栏刚刚上线,很开心看到了很多同学对软件工程的理解和期待。

\"\"

有同学说是从自学编程出身的,碰到过很多的问题,和很多人一样,我也是野路子出身的,2000年自学Asp编程,大学期间兼职给别人做了不少网站。但那时候拿到一个项目,上手就是写代码,没有对需求进行梳理分析,也没有设计,直接就是想到哪写到哪。

这种边写边改的模式看起来开发速度很快,但是后面遇到了不少问题。比如说因为没有分析需求,所以做出来的东西不是客户想要的结果,就得要多次返工重写,浪费不少时间;写之前也没有设计,逻辑都混在一起。最夸张的一个代码文件有上万行代码,最大的函数有一千多行的逻辑。可以想像维护这样一个项目是多么的痛苦!因为很多逻辑也没有抽象,都是重复的,修改的时候得一个个查找替换,一不小心漏了就出bug了。

有一件事我一直没好意思提起,就是大二暑假还给别人山寨过一个“金领办公系统”,如果你搜索一下“金领办公系统 asp源码”估计还能找到下载,可以看看我当年作为一个野路子程序员是什么水平了,各种拼音+英文混合的命名、意大利面条式代码、重复代码到处复制……

幸运的是,我大三转到了软件工程专业,重新学习了软件工程、数据结构、面向对象这些基础课程,毕业也顺利的成为一个程序员。

经过专业学习后,对我后面成长还是帮助很大的,这个帮助主要体现在两个方面。

第一个,就是学习新技术的时候,很快能领悟和融会贯通。比如说我学过瀑布模型,后来去看微软的MSF,去看敏捷开发,就能根据以前的理论基础,去看它们共通的地方、不一样的地方、各自的优缺点,这样很快就能掌握。

第二个呢就是做事的时候,会更有章法,有理论指导。写程序前会先注意对需求进行梳理,搞清楚产品经理想要的是什么,这样就不用有太多的反复。写代码之前我会先做设计,思考有哪些共同的模块,应该怎么抽象。

后来到飞信的时候,因为表现出色,我开始有机会去管项目。

我还记得第一次作为项目经理去管一个小项目,我一时之间还真有点懵,不知道该怎么做。好在学过软件工程,尤其对瀑布模型、软件生命周期特别熟悉,于是就尝试着按照生命周期模型,先把项目拆分成几个阶段,然后在每个阶段里面,按照模块再去细分,再去制定项目计划。

幸运的是,我还找到了当初的项目计划表,分享给大家看看。

\"\"

在制定计划的过程中,也帮助我做了一个很重要的转变,那就是不再是像以前只盯着一个小模块,不是再只想着技术实现,而是站在项目的整体去思考。

这个项目后来按照我当时制定的计划进展的很顺利。如果之前没有软件工程的这些理论基础,也许我后来还会转型做管理,但是一定没有当时那么顺利,要多走很多弯路。

所以我其实一直在微博上、微信上,很多地方都说过,软件工程是大学里最重要的一门课程。

我希望专栏能帮大家重新理解软件工程,从苦钻技术不得法变得行有章法。

转载地址:http://dbupx.baihongyu.com/

你可能感兴趣的文章
Flink SQL 功能解密系列 —— 维表 JOIN 与异步优化
查看>>
Codeforces Round #442 (Div. 2) A B
查看>>
封装一个日期时间选择器
查看>>
极值问题(acms)
查看>>
swift UI专项训练8 展示数据
查看>>
openstacks
查看>>
PHP5下单独编译php模块
查看>>
字体图标学习
查看>>
局域网网速变慢的故障细致分析
查看>>
oracle 远程tns配置
查看>>
7.1.3.3. Using the Rails console with ActionPack
查看>>
虚拟桌面带宽评估
查看>>
一起学shell(十一)之安全的shell脚本:起点
查看>>
VDR 2.0安装部署
查看>>
Microsoft® Deployment Toolkit 2010之快速部署Windows 7
查看>>
数据库中ID字段增长方式
查看>>
基于Liferay的平台下,portlet在各个模式下分别加载以<footer-portlet-javascript>定义的js文件的不可行性...
查看>>
大数据平台一键安装OS【定制化OS镜像制作】
查看>>
教学思路C#之入门三 定义变量及常用数据类型
查看>>
Python os.path.help
查看>>