一个工程师的工程文化

简介: 软件作为一本新兴学科,只有短短几十年的历史,相比较于土木工程这样有悠久历史的工程学,说软件工程还处在嗷嗷待哺的婴儿期,或是幼儿期一点也不为过,要真正形成一套理论完善,又能在实践上运用成功的软件工程学,我相信还有很长的路要走。正因为如此,软件工程作为一本学科,其发展也是相当迅速的,从学校课本里的正统的符合CMMI流程的瀑布模型,到实际接受度更高的敏捷开发,各种工程学和方法论可以说是百家争鸣、

软件作为一本新兴学科,只有短短几十年的历史,相比较于土木工程这样有悠久历史的工程学,说软件工程还处在嗷嗷待哺的婴儿期,或是幼儿期一点也不为过,要真正形成一套理论完善,又能在实践上运用成功的软件工程学,我相信还有很长的路要走。正因为如此,软件工程作为一本学科,其发展也是相当迅速的,从学校课本里的正统的符合CMMI流程的瀑布模型,到实际接受度更高的敏捷开发,各种工程学和方法论可以说是百家争鸣、各有千秋。

作为一个有理想的猿类,在接受这些理论碰撞的同时,内心深处,应该要慢慢滋生出自己的工程文化,自己的最佳实践。今天在一个内部讨论中,有幸接触到这样一套文化,个人觉得还是言之有物的,故记录于此。

Do the right thing

在错误的道路上,越努力只会越错。

- 要具备挑战领导的勇气 (把握度,过之会自负)

- 要相信合理的,在可掌控范围之内的冲突是有益的


Do the thing right

具体就是软件工程的方法学

- Design review
- Code review
- Unit Test (Functional Unit Test) http://stackoverflow.com/questions/153234/how-deep-are-your-unit-tests
- CI/CD (Continuous Integration, Continuous Deployment)
- Measurement & Monitoring ( 推荐阅读 《How to measure everything》)  - 系统运维和系统提升的必备良药
- Visualize your result (dashboard)  - show给老板看


Record it

好记性不如烂笔头,做记录,有时候也叫写文档(猿类对写文档这个词有抵触感),但以一个工程师的信誉担保,必要的设计文档和工程记录真的是非常重要,主要体现在

- Reference  

- Communication

当然在CSDN写博文也是一种记录,如果说在公司写项目的记录,是为了公司和同事,那么这里的记录更多的是为了自己,如果有幸这些文字能够帮助到其他朋友,那更是开心了。 所以勤做记录,于己于人都是一件功德无量的事。


Continuous Improvement

我们对这个世界的认识,有两种方法论体系,即构建论和扩展论。

-构建论, 是相信个人英雄主义,相信一个很牛B的人,可以构建出人类的伊甸园,构建出一个和谐社会。

-扩展论,是相信个人的才能和所能领悟的知识是有限的,对世界的认知应该是站在巨人的肩膀上,一点一点向前推进。

法国人相信构建论,所以攻占了巴士底狱,革命了封建王朝。

英国人相信扩展论,对旧的制度进行持续改良,从而形成了现今的君主立宪制。


在软件工程里,面对不断腐朽的旧系统,同样纯在两种不同的选择,是全部推翻重新构建呢,还是循序渐进一点一点改良重构呢,我相信这要视具体情况而定了,要做权衡,如果推翻重来的代价比重构的代价还要小,也不是不可以考虑,但总体来说,我们还是倡导扩展方法论,通过代码重构,可持续集成,对系统进行一点一点循序渐进的改良。

所以Continuous Improvement是软件保持生命力的重要手段,如果你不希望自己的系统沦落到要被别人革命的下场,那就持续的对其进行改良吧




目录
相关文章
|
敏捷开发 测试技术 API
【企业架构】Salesforce CTA 的持续学习:十本关于企业架构、战略和工程的好书
【企业架构】Salesforce CTA 的持续学习:十本关于企业架构、战略和工程的好书
以人为本--创建最好的开发团队
以人为本--创建最好的开发团队
575 0
|
测试技术 项目管理
艾伟也谈项目管理,在团队中如何推行一项新的实践
在一个老团队中,推行一项新的实践是非常不易的。     如果要求,每天10点站立会议增强团队成员之间沟通。大家会心里先衡量一下,恩,不就是每天站个十几分钟,自己说几句话,然后听别人说嘛,不难做到。
1131 0
我所理解的工程师文化
对于什么是工程师文化,很多人都能说出很多关键词,比如:匠心,创新,专业,担当,开放…… 然而如果要用一句话来描述什么是工程师文化,如何判断一家公司是不是一家工程师文化的公司,却不是一个很容易的问题。 个人认为要回答这个问题,首先需要从了解工程师是一群什么样的人着手。 ## 工程师是什么样的一种人? 工程师其实就是解决问题的人,他们发现问题,找出规律,使用适当的工具和手段来解决问题。
2412 0
|
程序员 开发者
团队文化
代码所有权应该由所谓的“非私利编程”进行平衡。“非私利编程”的观点是指,团队拥有代码,每个开发成员对代码负责,但每个开发人员都不应对他人写的代码有个人攻击的意味对代码进行指责。如果一个开发者对批评指责过于敏感,他有可能不会成长进步得那么快,相对于那些能对有建设性的批评有很好把握的人。
1525 0