软件开发常常是不可预测的。有时候基础架构和库发生变化了,有时候 bug 突然出现了,又或者忽然发现项目时间不够了,等等。为了能有效处理这些不可预测的问题,我们必须在某些特定的时候将软件的开发过程规范起来。处理不可预测的问题是一方面的作用,另一方面的作用是一旦需要随时升级系统中的任何部分,我们都能胸有成竹。
一般而言,我们的感知依赖于类库的水平,因为我们每天都要和类库打交道。不及时更新数据就意味着技术落后。当系统已经成熟,再加上建立一个合适的自动化测试和持续交付进程,那么你会发现更新数据库其实真的 very easy。但是这个工作流程往往不会扩展到基础架构的其他更基本的部分,例如我们在机器上使用的操作系统。有的程序发布的周期非常长,支持也需要很长时间,而见怪不怪的我们渐渐视之为理所当然。但是根据其支持程度,如果没有一个深思熟虑的计划就去更新这些部分,必将将会成为管理的阵痛。
当我们在构建工作流程时,不能用全面的观点去考虑整个系统,那么即使再好的自动化测试和持续交付进程,也不能让我们有效处理各种不可预见的问题。
版本管理
日前我们正在更新服务器上所用的 Ubuntu 版本,整个过程着实用了很多时间,因为这不但是一个我们一直殷殷期盼为了提供高水准品质的技术挑战,也是能让我们逐步完成目标、发现未知 bug 的过程。
这样一来,我们就知道怎么样的操作系统配怎么样的基础架构了,然后可以正确决策应用哪个版本。这使得我们能够更彻底地测试和了解整个基础架构,确保我们不会贸贸然地打断客户的部署。
我们需要大力推广和技术支持整个进程。但是,在问题的初期就想明了具体的更新路径和以后的处理方式,是很难的。不过有一点我们要清楚产生问题就跟我们喝水吃饭一样是自然的结果,关键是组建一支优秀的团队,有一个正确的发展理念。我们要始终坚持这一点,这也是一个企业发展和技术前进的着力点。我们应该时刻准备着应对各种变化和问题。
也许你会说你并不需要一开始全部改动基础架构,那么你就得清楚你的所作所为会给你带来什么样的后果。
结论
在软件项目中,我们常常对这个那个不甚满意,但是一旦真的要着手去改,又会觉得痛苦异常。所以我们应该及时尽早地处理问题,哪怕它只是一个并不打算制成产品的边际试验。即使最终无关紧要,也能让人增加这方面的经验,掌握相关数据,而且要是真的“梦想成真”,你也有如何处理的进程。
每个人都会遇到不可预见的问题,关键是要及时更新自己的信息储备和程序的基础架构。有时候,这些问题会最终消失湮灭,但是有时候,随着我们研究的深入,问题反而像贪吃蛇一样膨胀了。
如果你因此而吓破了胆,将它们束之高阁,那么问题将会气势汹汹再次狠狠地给你一拳。一个微妙的改动、一个细微的进程改进或是一个小小的技术更新都会成为你的得力助手,节省你的时间和精力,提高生产效率。
大家一起团结协作,推广正确的进程,更新技术,才能勇往直前、无所畏惧。要知道畏惧是一种会减少行动力和创造力的负面情绪,只会扯我们的后腿。通过充足的准备,我们才能无畏无惧无所顾忌地发明创新,设计出为广大用户喜爱的产品。
你是否也有这样必须迎难而上的经历?你又是如何处理的?欢迎分享。
本文链接:http://www.codeceo.com/article/develop-problems.html
本文作者:码农网 – 小峰