链式调用和分步式调用
第二是在短时间内逐步设计,构建和交付工作软件。
无我编程
开发人员进行协作,共享代码并互相审查工作的想法并不新鲜。 它可以追溯到1970年代初Gerald Weinberg在他的书《计算机编程心理学》中首次描述的Egoless 编程 。
在Egoless编程团队中,每个人都以开放,尊重,民主的方式共同协作,以构建最佳的软件,共享思想和技术。 人们将个人感受放在一边,接受批评并寻找相互学习的机会。 重要的是编写尽可能好的代码。 无私的程序员共享代码,互相检查工作,改进代码,查找错误并修复它们。 人们致力于他们最擅长的事情。 团队的领导能力会根据团队正在解决的问题而变化。
结果是人们更有动力,代码更易于理解和维护。 听起来很像敏捷团队今天如何尝试一起工作。
一步步
我对“敏捷开发”(或至少是迭代设计,增量时间框式开发以及无自我编程)的第一次体验是在2001年著名的Snowbird会议之前的很长时间。1990年,他加入了一家小型软件开发公司的技术支持团队。在加拿大西海岸。 加入该公司引起了文化冲击。 首先,当我在全球范围内苦苦挣扎一年时,我被录用了-回到加拿大并重新上班本身就是一种文化冲击。 但这不是您的标准公司环境。 小型的开发团队都在家中工作,而我们其余的人则在乡下的一个马场里工作,接电话并解决问题,同时在牧场的厨房里煮意大利面作为午餐,那里的阁楼里塞满了昂贵的科技装备。
我们构建并支持了世界各地成千上万的其他程序员用来构建自己的软件的工具。 我们所有的软件都是按照1980年代初期由Michel Kohon创建的一种逐步的,渐进的,称为Box -by-Step的方法开发的。
在分步中,需求被分解为增量部分,开发人员会在固定的时间范围内(理想情况下为两周)开发和交付可用的软件,并随需进行构建和设计。 您期望需求是不完整的或错误的,并且期望它们会发生变化,尤其是当您向客户交付软件并开始使用它们时。 听起来很像今天的敏捷时间框式开发,不是吗?
即使公司是分散的(公司总裁仍在做很多编程工作,后来又搬到了加拿大西海岸的一个偏远岛屿,后来又搬到了加勒比海的一个更偏远的岛屿),但我们全都紧密合作并一直保持沟通。 我们非常依赖电子邮件(我们自己编写)和出色的问题跟踪系统(我们也这样编写),并且我们在彼此之间以及与客户和合作伙伴的电话上花费了大量时间。
程序员很认真而且有纪律。 所有代码更改都经过同行评审(我仍然记得我第一次进行代码评审,我学到了如何编写好的代码),并且开发人员测试了所有自己的代码。 然后,支持团队再次审查并测试了所有内容。 我们每个月都会记录并打包一个带时间限制的发行版,并将其交付给Beta测试客户(已报告问题或要求新功能的客户),并要求他们提供反馈。 我们每年都会整理一次最终版本,并分发给世界各地的所有人。
我们精心管理了技术债务 –尽管我们当然不知道当时的技术债务,但我们只是编写了出色的代码来维持下去。 在产品被首次开发超过25年之后,今天仍在使用其中的某些代码。
我离开这家公司并开始领导和管理开发团队之后,我不明白如何将这种工作方式扩大到更大的团队和更大的问题。 直到几年后,当我在敏捷开发实践方面有了更多经验之后,我才知道如何将20年前学到的知识应用于如何使我们今天所做的工作变得更好,更简单。
参考: 敏捷在实现敏捷之前:无意识的编程和我们的JCG合作伙伴 Jim Bird在Building Real Software博客上的分步指南
翻译自: https://www.javacodegeeks.com/2012/01/agile-before-there-was-agile-egoless.html
链式调用和分步式调用