`
ihuashao
  • 浏览: 4721548 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Uncle Bob谈软件开发的职业素养之一

阅读更多

前不久,Uncle Bob 在JAOO上做了一个演讲——“软件开发的技艺与道德”。他在其中提出多项开发软件时应该具备的职业素养(discipline)。

演讲开始,Uncle Bob开宗明义提出:我们这些软件开发人员有一份工作(job:用以谋生),但是却很难称之为职业(Profession:需要特定的教育、培训或技能)。然而,自2000年敏捷运动开展之后,有些职业素养逐渐涌现出来(our craft is defined),使得我们的工作有可能成为一份职业,我们也拥有了变为专业人士的机会。(The Agile approaches depend on discipline, not on documented process。这也与我最近的思考有关,职业素养、纪律和承诺是敏捷潜在的核心,Agile的诸多实践都体现了这一点。改日另文述之。)

下面我将分几个部分来介绍其中提到的discipline。

  1. Short iterations——短迭代。敏捷相关的经验告诉我们:软件无法通过long period实现,而是应通过一系列的短迭代开发。Uncle Bob最中意为期一周的迭代,两周也可以接受。4周太长了,会产生很多错误。在迭代结束时,应该交付deployable的软件,而不是deployed的软件,部署与否要由业务来决定。从职业精神(professionalism)的角度来看,交付可以部署的软件,这才是软件开发人员应该做到的事情。Uncle Bob总结:短迭代是构建优秀、牢靠的software profession的basic discipline。
  2. Don't wait for Definition——不要等待明确的定义。Uncle Bob指出:也许近几十年来,阻挡我们前进的最大障碍,就是我们总觉得:没有定义,我们就无法向前行进。他问观众:谁曾经让客户在确定的需求上签下带血的签名(sign in blood )?“这一点都不公平!!”客户一开始并不知道他们到底要什么……我们不能等待明确的定义,而是要以编写代码的方式,参与到定义的过程之中。通过best guess来编写软件,再与客户的真实想法进行确认,要想建立靠谱的软件需求,没有比这更好的方式了。产品定义的演化,是随着开发人员与客户一起积极参与需求制定过程完成的。
  3. Abstract away volatility——通过抽象隔离变化。这与软件设计和行为相关。隔离变化与不变,并分别置于软件的不同部分,使其互不干扰。比如UI与业务逻辑代码绝对不应放在一起,比如JavaScript。
  4. Commission>Omission——“动起来,都给我动起来”。动手去尝试一些事情,总是胜过坐等现成。如果A组依赖于B组完成某些东西,那么A组不要消极等待,而是应该积极定义B组要提供的东西。Commit!Do not omit.
  5. Decouple from others——与他人解耦。假设有多个team并行开发,如果你需要等待某个team完成他们的模块,你不要空等他们搞定手上的代码,而是应该将你自己从他们的工作中解耦出来。具体方式:写stub,写mock,写模拟代码。写很多不需要对方就可以运行的代码。这样一来,两个模块之间的接口也就定义好了。通过stub、mock、模拟代码,将自己从软件的层面与他人解耦,而不要被挡在路上(blocked)。
  6. Never be Blocked——不要让自己的路被堵死。Uncle Bob称之为最高指导原则(prime directive)。不要让自己的路被堵死,总是应该找到一些方式来让工作取得进展。他曾为某个团队提供咨询服务,那个团队的QA无法执行测试,因为QA的电脑环境没有配置好。可是开发人员的机器都已经配置完成了。Bob大叔告诉QA人员,让他们先用开发人员的某台机器测试,先运行测试用例,即使QA环境没有完全配置好,总是有些测试是可以运行的。 "Never allow yourself get stuck and wait, always find some way out!”

该视频在InfoQ上发表,地址是:http://www.infoq.com/presentations/craftmanship-ethics。其他后续部分会根据可用时间慢慢整理。

分享到:
评论

相关推荐

    The Clean Coder - A Code of Conduct for Professional Programmers

    Martin(通常被称为“Uncle Bob”)撰写的一本关于软件开发职业素养的书籍。该书旨在帮助程序员培养一种对待软件开发的态度——即将其视为一门工艺,追求卓越和专业性。 书中不仅涵盖了具体的编程技术和方法论,更...

    Java架构师之路书籍推荐.pdf

    4. 《敏捷软件开发 原则、模式与实践》:Uncle Bob的著作,它是敏捷开发的基石。这本书不仅讲解了敏捷开发的原则和模式,还深入探讨了面向对象设计,包括许多设计模式,甚至被认为可以替代GoF的经典设计模式书籍。...

    JAVA程序员必看的15本书-JAVA自学书籍推荐.pdf

    而《敏捷软件开发原则、模式与实践》(Uncle Bob的著作)则深入讨论了面向对象设计模式和敏捷开发理念,是进一步提升架构思维的必备读物。 5. **软件开发过程** 了解软件开发过程对于团队协作至关重要。《UML精粹...

    《Clean Code》读后感

    这本书深入探讨了编写整洁、可读、可维护代码的重要性,旨在提升软件开发人员的职业素养和代码质量。在阅读这本书后,我收获了许多关于如何改进编程实践和团队协作的关键知识点。 1. **命名规范**:书中强调了良好...

    程序员必须知道的书籍

    Martin(通常被称为Uncle Bob)撰写,他是一位资深的软件工程师,也是敏捷开发和极限编程的倡导者。这本书主要关注的是代码质量与可维护性,它强调程序员应如何编写易于理解、易于测试和易于修改的代码。"整洁"一词...

    Clean-Code(JAVA必看的一本书非常好)

    《Clean Code》是由著名软件...以上内容仅是《Clean Code》一书的部分精髓,实际上,书中涵盖了许多关于软件开发原则、实践和技巧的深入讨论。阅读这本书,对于提升Java程序员的编程素养和专业技能具有极大的帮助。

    97 Things Every Programmer Should Know

    每个条目都由业界专家撰写,覆盖了软件开发的各个方面,包括但不限于设计模式、最佳实践、代码重构、测试策略等。 #### 描述解析:97 Things Every Programmer Should Know 这本书是针对程序员的一本电子书,汇集...

    Alquiler-Clean建筑

    这不仅有助于学习和理解C#编程,还能深入理解软件设计原则,提高软件开发的专业素养。 总结来说,“Alquiler-Clean建筑”项目是一个以C#编写的清洁建筑模式实例,它通过分层结构展示了如何组织代码以保持业务逻辑的...

    Clean Code.pdf.zip_文章/文档_PDF_

    《Clean Code》是软件开发领域的一本经典...总的来说,《Clean Code》是一本面向所有程序员的指南,旨在提升代码质量和软件开发的专业素养。它提供了一套实用的规则和原则,帮助开发者编写出更干净、更易于维护的代码。

    电影租赁

    电影租赁项目是一个典型的Java应用程序,旨在帮助开发者学习和实践“干净代码”与“重构”的核心概念。在这个项目中,你可以深入...这些都是软件开发过程中的核心技能,对于提升个人的编程素养和职业发展具有重要意义。

Global site tag (gtag.js) - Google Analytics