You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
7.8 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 结束语 | 万事皆项目,软件工程无处不在
你好,我是宝玉。不知不觉,我们专栏就接近尾声,也该告一段落啦。
在专栏更新之初我就提到,把每件事都当作一个项目来推进,现在我也用“万事皆项目”来作为我们专栏的结束。
我学习软件工程最大的收获,就是在看问题的时候,**不再局限于从技术层面或者是一个局部去思考问题,而是站在整体,用软件工程的方法去指导自己的思考和决策。**
所以在整个专栏的讲述中,我也希望能给你带来这样的转变:在做一件事情之前你可以先考虑一下,这是不是可以当作一个项目来推进,站在整体思考,有目的、有计划、有步骤地解决问题。
## 万事皆项目
实际上,日常工作生活中,不仅是软件项目可以应用软件工程的知识,很多事情都可以应用软件工程的知识。就拿我们《软件工程之美》的专栏来说,这也是一个项目,从专栏诞生到完成,你从中也可以感受到对软件工程知识的应用。
* **项目都是从一个想法开始的**
在写这个专栏之前,我曾在微博上多次建议从事软件开发的开发人员学习一下软件工程,这是一门非常有价值的学科,所以后来极客时间邀请我开专栏,我首先想到的就是写一个软件工程相关的专栏,而极客时间还没有这样的专栏,所以我们初步达成了做软件工程专栏的意向。
* **项目开始之前不要忘记可行性研究**
在有想法后,并不是直接就立项开始做,在软件工程中会有可行性研究。在专栏开始之初,也是有一个磨合的过程,我会试写几篇稿子与极客时间内容团队一起打磨,双方都需要通过磨合来确认是不是可能继续合作,当磨合好后,双方觉得没问题了才会最终立项。
如果没有经过可行性研究就贸然立项,到项目开始才发现不适合,那对双方都是不负责任的。所以项目开始之前,先进行可行性研究,是避免损失的有效方式。
* **项目未动,计划先行**
一个项目开始之前制定计划是保障项目正常推进的关键。一个专栏40多篇文章每周更新3篇如果没有一个科学的计划没有Dead Line那是很难保证项目进度的。所以要做到项目未动计划先行。
**在制定计划时,也不能盲目乐观,还要考虑到项目风险。**比如说作者临时有事可能就会有断更的风险,这时就需要对风险进行控制。
* **在具体实现一个项目之前,先进行分析和设计**
在做一个软件项目的时候,首先要做的就是分析需求,然后根据需求分析的结果设计架构。对于一个专栏来说也是这样的,首先要考虑清楚专栏的主题是什么?专栏的受众是谁?他们想要什么样的内容,然后再去设计专栏的目录。
可以说专栏的目录对于一个专栏的成功至关重要,如果没有目录直接天马行空去写,可能会导致写出来的内容偏离主题,用户也不容易理解。当然目录也不是一成不变的,在写作的过程中,根据大家的反馈,我也会做一些微小调整。
* **从瀑布模型到敏捷开发,从集中交付到持续交付**
传统书籍的出版,类似于瀑布模型,作者统一完成书稿,然后交给编辑修订,最后出版。而现在的专栏写作,更像敏捷开发,作者每完成一篇内容,就交给编辑审阅,反复修订后才可以上线发布。《软件工程之美》专栏采用的是持续交付模式,甚至于提纲写好了就先交付,编辑给出反馈意见后,进一步补充完善细节,最终完成上线。
* **测试和线上维护也很重要**
我平时在网上也会写一些文章,通常写完就发出去了,甚至都没有仔细检查,结果经常是有读者留言才发现很多错误。但专栏文章的发布,每一篇除了自己检查,编辑还会对内容进行校对,避免出现错别字或者语法错误,从而保证大家阅读专栏时的体验。
软件发布后还会对线上的版本维护,保障稳定运行。专栏每一篇文章上线后,都会有同学留言,对同学的留言进行回复也是很重要的工作,可以帮助同学解答一些文章中的疑惑,也可以从同学们的留言中收获很多有价值的反馈。
* **项目完成后,不忘总结复盘**
如果说软件工程之美专栏是一个项目,现在也到了总结复盘的时候了。
首先从做的不太完善的地方开始,总结经验教训。我平时在对于知识的理解和学习,更多是停留在思考上,日常并没有养成习惯去把这些思考写成文字。写作专栏的过程,是把这些知识系统思考梳理的过程,如果日常只是零散的思考,写作的时候就需要对很多细节进行学习和补充。
这其实也是我在《[学习攻略 | 怎样学好软件工程?](https://time.geekbang.org/column/article/82697)》中给你的建议:**在学习软件工程时,尝试把学到的知识写下来,去教给其他人,这样你的收获也会是最大的。**
接下来,我们复盘下哪些地方做的比较好。
软件工程的知识虽然不像一些编程语言或者框架更新的那样快,但也一直在演进。就像十多年前还是瀑布模型为主流,现在越来越多的是敏捷开发和快速迭代的开发模式;十多年前每日构建还是当时最好的实践之一,而现在持续集成已经取代了每日构建成为新的最佳实践。
我觉得我还算比较幸运,有很多不同的项目和团队的经历,有小创业团队也有大厂。因为大学转专业学习了软件工程的原因,也一直在留心观察工作中的软件工程实践,所以有机会去学习和实践很多软件工程知识,并在这个专栏中,将这些知识输出交付给你。
在专栏更新的过程中,确实引起了不少同学的思考,提出了很多有价值的问题。通过留言,让我有机会去解答一些文章中没有涵盖的内容,通过留言也诞生了很多对专栏精彩的补充分享。通过这些留言,我也切实地感受到很多同学从专栏学习中有收获、有进步,这也是我认为在专栏项目中做的还不错的地方。
## 埋下一颗种子
日常生活中很多事情,就像去写一个专栏,并不是一个软件项目,但是你应用软件工程的知识去指导去推进,一样可以帮助你有计划、有步骤地完成它,一样可以让你有很多机会去实践软件工程的知识。
**你对软件工程知识实践的越多,你对它的理解也会越深刻,这样当你在做软件项目时,你就能更好地应用这些知识,帮助你高质量地完成项目。**
通过对大家留言的观察,我也发现那些已经有丰富的项目经验的同学收获是最大的,因为他们很容易将丰富的项目经验和软件工程的知识串起来,把零散的知识点借助专栏的学习一点点构建成了完整的软件工程知识体系。
如果你现在觉得对这些软件工程知识的吸收有限也没关系,当你从第一天开始学习软件工程,就相当于埋下了一颗种子,当今后再遇到项目中的问题,相信你可以跳出细节之外,站在项目的整体去思考,去软件工程的知识中寻找答案,一点一滴的积累,这颗种子不久后就会变成参天大树。
专栏从上线至今已经4个月有余如果你能坚持学习并真的学以致用、学有所有这将是最美好的事。虽然现在专栏更新结束但我们还可以通过留言区再见谢谢你一路的支持祝工作顺利
[![](https://static001.geekbang.org/resource/image/30/ed/3035c596dc0cde8f0da6d92355757eed.jpg)](https://jinshuju.net/f/aIzO78)