微软最具价值技术专家:我的 16 年软件开发经验总结

栏目: 编程工具 · 发布时间: 5年前

内容简介:以前没多大的感觉,并且这种边写边改的模式看起来开发速度很快,但是后面遇到了不少问题。比如说因为没有分析需求,所以做出来的东西不是客户想要的结果,就得要多次返工重写,浪费不少时间;写之前也没有设计,逻辑都混在一起;难得接手一个复杂的、大的功能模块开发,也不知道如何拆解分工协作;以为功能上线就完事了,没想到还要写测试代码进行功能测试;还有些日常的小工具像源代码管理、Bug 跟踪等等,竟然都要用。最夸张的是有一个代码文件有上万行代码,最大的函数有一千多行的逻辑。可以想像,维护这样一个项目是多么的痛苦!因为很多业务

大家好,我是宝玉。有同学说是从自学编程出身的,碰到过很多的问题, 走了很多弯路,日常搬砖,增删改查,非常困惑没有自信。

微软最具价值技术专家:我的 16 年软件开发经验总结

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

以前没多大的感觉,并且这种边写边改的模式看起来开发速度很快,但是后面遇到了不少问题。

比如说因为没有分析需求,所以做出来的东西不是客户想要的结果,就得要多次返工重写,浪费不少时间;写之前也没有设计,逻辑都混在一起;难得接手一个复杂的、大的功能模块开发,也不知道如何拆解分工协作;以为功能上线就完事了,没想到还要写测试代码进行功能测试;还有些日常的小 工具 像源代码管理、Bug 跟踪等等,竟然都要用。

最夸张的是有一个代码文件有上万行代码,最大的函数有一千多行的逻辑。可以想像,维护这样一个项目是多么的痛苦!因为很多业务逻辑没有抽象,都是重复的,修改的时候得一个个查找替换,一不小心漏了就出 bug 了。

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

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

最近为了筹备我在极客时间的专栏 《软件工程之美》 的内容,我在重新梳理软件工程相关的资料和知识体系时,看到了很多同学对软件工程理解的留言,也很有感触,如今再回顾当年学的专业课,很多专业概念已经记忆模糊,唯有对一位老师的教诲记忆深刻,对我毕业后的职业生涯影响深远:“Everything is a project。”

微软最具价值技术专家:我的 16 年软件开发经验总结

这句话对我影响很大。我真的开始在日常生活中, 把每一件事都当做一个工程项目来推进。

2010 年在上海的时候,我机缘巧合参加了一个关于产品设计与用户体验的线下活动,我可能是与会人员中,为数不多的 非专业产品设计 的同学。在活动中组织者安排了一个游戏环节,每 5 个或 6 个人分成一个小组,来设计一个给老年人使用的手机,限时 30 分钟,完成后,每组选一个人上台花 5 分钟展示作品,最后投票选出做得最好的一组。

我的第一反应就是把它当作一个项目,于是快速地拟定了如下计划。

  • 0~10 分钟(分析):头脑风暴,收集想法。
  • 11~15 分钟(设计):根据头脑风暴结果,确定最终设计。
  • 16~25 分钟(开发):将想法画在纸上。
  • 26~30 分钟(发布):完善结果,准备展示。

这个计划小组成员都很认可,于是我们严格按照这个计划进行手机的设计。同时我观察了一下其他组的情况,大家都在热火朝天地讨论各种想法,似乎没有意识到时间其实是有限的。轮到演示的时候,我们组毫无争议地拿到了第一,因为我们不仅准备充分,而且设计的手机功能完整,而其他很多组甚至还没来得及把想法完整地画下来。

后来我才了解到, 这种有目的、有计划、有步骤地解决问题的方法就是工程方法。 工程方法不是软件工程独有的,几乎所有工程类别都可能会应用,例如建筑工程、电子工程等,只不过步骤可能略有不同。

微软最具价值技术专家:我的 16 年软件开发经验总结

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

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

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

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

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

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

微软最具价值技术专家:我的 16 年软件开发经验总结

这个工具叫 MS Project,是微软出的软件,在专栏中的「项目管理工具」我会再详细介绍

在制定计划的过程中,也帮助我做了一个很重要的转变,面对问题我会参考软件生命周期和瀑布模型,把一件事情分成几个阶段: 分析、设计、实施、测试、完成,然后制定相应的计划。

这种方法不仅非常有效,让我的做事效率大幅提高,而且让我在看待事情上,能够更全面地、站在更高的角度去思考。

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

所以我其实一直在微博上、微信上,很多地方都说过,软件工程是大学里最重要的一门课程。我 希望 《软件工程之美》 专栏能帮大家重新理解软件工程,从苦钻技术不得法变得行有章法。

现在专栏上新优惠倒计时最后 1 天,限时¥68,感兴趣的同学可以准备入手了(马上要恢复原价¥99),现在订阅还可以邀请你加入「软件工程学习群」,我们一起交流学习进步;还给大家申请了额外福利,来自 InfoQ 顶尖技术大会——QCon 全球软件开发大会(门票价值 6800 元),2018 年全部 2 场大会 PPT 珍贵资料免费送给你。(获取方式:“极客时间”服务号后台回复“软件”)

微软最具价值技术专家:我的 16 年软件开发经验总结

以上所述就是小编给大家介绍的《微软最具价值技术专家:我的 16 年软件开发经验总结》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人人都是架构师:分布式系统架构落地与瓶颈突破

人人都是架构师:分布式系统架构落地与瓶颈突破

高翔龙 / 电子工业出版社 / 2017-5 / 69

《人人都是架构师:分布式系统架构落地与瓶颈突破》并没有过多渲染系统架构的理论知识,而是切切实实站在开发一线角度,为各位读者诠释了大型网站在架构演变过程中出现一系列技术难题时的解决方案。《人人都是架构师:分布式系统架构落地与瓶颈突破》首先从分布式服务案例开始介绍,重点为大家讲解了大规模服务化场景下企业应该如何实施服务治理;然后在大流量限流/消峰案例中,笔者为大家讲解了应该如何有效地对流量实施管制,避......一起来看看 《人人都是架构师:分布式系统架构落地与瓶颈突破》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具