写代码的三重境界

发表于:2013-6-14 10:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:大卫张    来源:51Testing软件测试网采编

  搞IT的就是修电脑的,做软件的就是写代码的。后一句可能更对一些,因为学校是这么教的,开发工作中的确也是这么在做。然而,新手在写代码,牛人也在写代码,他们之间有什么区别?为何新人老手相互之间不理解?新手如何成长为牛人,老手如何百尺竿头更进一步?BDD、TDD为何兴起,又为何难以推行?软件研发公司的写代码能力提升为什么这么难?写代码的三重境界记录了关于写代码的一些思考。

  1. 写代码的三重境界

  1.1 写代码三重境界之第一重境界是见山是山。

  对第一重境界的人来看,写代码就是软件开发的全部,软件开发人员的工作就是写代码,如果没有在写代码,软件开发人员就没有在工作。

  他们会第一时间投入到代码编写工作中,编写的代码可以运行是他们的追求。他们喜欢调试工具,并将调试和直接运行作为验证的主要手段。在他们看来,写代码是简单的,设计不是必要的。他们对需求不求甚解。

  1.2 写代码三重境界之第二重境界是见山不是山。

  在第二重境界的人眼中,写代码只是软件开发的一个阶段,这只是软件开发人员工作中比较低级的一种,软件开发人员还有需求分析、架构、设计等更重要的工作在做。

  他们会很晚才进入编码阶段,因为在这之前,他们还有需求分析、架构、设计等更重要的工作要完成,而编码只是上述工作的一种结果呈现,编写的代码没有错误是他们的追求。也许他们会承担一部分测试工作,但这不完全是他们的工作。在他们看来,前期设计好是最重要的,写代码只是一种实现而已。他们对需求吹毛求疵,把细节讨论到极致,以避免在后续设计和编码工作中出现遗漏。

  1.3 写代码三重境界之第三重境界是见山还是山。

  在第三重境界的人眼中,写代码是软件开发中非常重要的一部分,写代码并运行的方式不仅用来实现需求,还用来探索需求、尝试实现和演化设计。

  他们会很早就开始写代码,写代码的过程和探索需求、尝试实现与演化设计等过程有效的联系在一起,形成一种持续反馈学习的闭环。代码不是最重要的,准确简洁的达成业务目标并且具有更好内部结构的可运行软件才是他们要的。有时他们甚至会有意识的舍弃对于探索需求、尝试实现和演化设计过程中的部分代码。测试是他们的首要工作之一,是写代码并运行的关键一环,用于形成快速的闭环反馈。在他们看来,有些高层前期设计是必要的,而其他的很多设计则是通过写代码演化出来的。有时,他们用代码为需求设立标准,并通过不断反馈探索需求并纠正理解偏差。有时,他们快速给出原型,和客户一起挖掘真正的解决方案。

  2. 对三重境界的思考

  2.1 软件开发人员成长之路

  大多数情况下,新手都处于第一境界。也有一些具有很丰富经验但知识缺乏的老鸟处于这一阶段。他们认为软件工程都是些纸上谈兵的东西,对分析模式、设计模式、架构方法等方法缺乏认识和掌握。他们对自己的代码能力相当自信,特别强调实干对代码能力提升的作用,只有在看到对方的代码确实比自己好时才会服气。经过训练或者在实际工作中屡屡碰壁后,第一重境界的同学能意识到分析设计的重要性,开始学习掌握分析设计能力,向第二重境界转变。

  大多数同学在工作经验积累后能到达第二重境界。第二重境界的同学对软件工程有所了解,对UML图等工具相当精通,推崇面向对象、分析模式、设计模式、架构方法等。他们比较倾向于自顶向下的设计,期望严格分阶段执行需求分析设计实现测试等过程。虽然知道重构、演化设计之类的概念,但对于他们来讲,重构还未形成习惯,还是不得已而为之。

  只有很少的同学能够从第二重境界走到第三重境界。这些同学本身不缺乏分析设计技能,UML、面向对象、设计模式等都有掌握。更重要的是,他们对软件开发的认识发生了变化,软件不是实现出来的,而是演化而来的,软件开发的主体是人,可工作的软件比代码更重要。重构、演化设计变成了他们的基础技能,他们是TDD、BDD、DDD等方法的尝鲜者与积极推动者。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号