《精益开发与看板方法》—1-3-2 增强学习(Amplify learning)

举报
清华大学出版社 发表于 2019/10/20 14:31:44 2019/10/20
【摘要】 本节书摘来自清华大学出版社《精益开发与看板方法》一书中第一章,第1.3.2节,作者是李智桦 ,李 淳 审校。

1-3-2  增强学习(Amplify learning

软件开发是一种学习的过程。也就是说,开发人员学得越快越好,写的程序才可能越正确,对客户也越有利。因此程序设计人员从一开始就要下定决心把事情学好,然后再运用学会的专业知识来辅助写出正确的程序。

有趣的是,开发过程也是一种发现的过程,我们经常在创作的过程中有了全新的体验,所以写程序不全然是一种学习。很多时候,经验可以帮助我们学得更快更好,但创作则不只要依靠经验,专注力可能是最不可或缺的。

科学方法尤其适用在解决复杂的问题

科学方法是通过观察、建立假设、设计实验、进行实验、然后得到结果。有趣的是,如果假设越正确,你就不会学到太多东西。当失败率达到 50% 时,你会得到最多的信息,也就是学到最多。

工程师写程序时不也是如此?如果一次就做对了,可能表明完全没学到任何东西,只是在工作而已。传统的开发方式正是要求大家通过审慎的态度一次做对,而敏捷开发则是鼓励通过尝试、测试、修正的短周期来开发程序,所以自然学到最多。

我们写文章时,常常要修改个几回才能成章,何不让写程序也如此呢?!

其实写文章比起写程序要难上许多,但有一个最大的差别,文章的 bug(错字)很容易发现,但程序的缺陷却很难找到。就价值观而言,我们可以很容易以程序的应用范围来衡量其价值,但相对的写文章就很难评价了。二者在抽象的程度上很不相同,一个是越明确,我们认为越好,另一个则是越抽象,反而越是让人觉得受用无穷。

最小的成本产生最多的知识

既然程序开发是一个学习的过程,那么为了得到好的成果,学习善用最小的成本获得最大的学习效果,应该是程序设计人员不可缺少的技能。例如:如果测试成本很高,就多花些时间仔细思考,审慎检查后再动手,如果实验的成本很低,那它就是最有效的方法!

短暂的学习周期是最高效的学习过程

周期性的重构,一边开发系统的同时也在进行改善设计方案,这是我们产生知识的最好途径之一。衍生式的设计方式又称为浮现式设计(Emergent Design),它是架构设计师在采用敏捷式开发法时所遭遇的最大困难(因为不能做太多的预先设计,必须有问题做对应时才能做相对的设计),既然我们不能一口气就把架构设计完毕,那只有通过堆栈的方式,让问题来引导架构的途径。但千万别单让问题来引导架构,因为设计模式正是为了解答那些重复出现的问题而诞生的最佳解答。(其实是没有最佳解答的,说穿了应该只是最佳参考罢了,因为没有银弹,所以必须在研究清楚环境之后自己来,这也正是所谓高效学习的过程。)

测试是最好的反馈

传统一次性通过开发方式(single-pass model),是假设一开始便可以把开发的细节想清楚,针对每一个需求都一视同仁,一样重要,按部就班把所有的需求都做完,所以也就不会有太多的反馈,也失去了反复调整的机会。传统开发反而害怕反馈所带来的学习会破坏原先预定的计划。

这种思维造成学习被迫后延,直到最终测试的时候才出现,只可惜为时已晚,只能期待下一次的项目能够完全一样,这个学习的所得能派上用场。所以按照道理应该增加反馈,因为反馈是处理软件开发上遭遇问题时最有效的方法之一。以下是增加反馈的几点原则。

l   实时反馈,在写完一段程序代码后立刻进行测试。

l   运用单元测试来核对程序代码,而不是用文件来记录程序逻辑的细节。

l   通过向客户展示来收集反馈和变更的需求。

团队同步学习

短的迭代循环是团队共同学习的最佳方式。同步是团队开发非常重要的一个步调,尤其当有一些项目出现测试失败后,遗留下来待解决的bug经常会让共同开发的同仁产生不同步的紊乱感觉,彼此之间误以为需要等待才能继续下去,造成学习中断的浪费。而迭代让大家有一个共同的起点,能够促使团队不断诞生新的学习机会,因此维持同步与采用短周期的迭代是团队学习的基本需求。

善用共同开发工具

一定要善用数字信息。无论是微软的 TFS 或是 Open Source Git,在网络的运用上都具有绝佳的协同合作特性,这一点让程序代码不再是一个人的私人收藏,而是属于团队共同拥有的资产,大家都能通过信息相互学习。通过这些好的数字工具,不论是代码审查(code review)或是程序代码的签入/签出(check in/out)都成为公开的行为,这样的同步性可以导致更有效率的集体学习行为。

拜移动设备普及所赐,信息传递总是超乎想象的快捷,大大改善了工作流程上的事件前置时间(Lead Time),使得运用流程来提升团队效能成为这一代最重要的课题,因此能否善用数字学习也变成分辨优劣的关键因素之一。

愉快的心情是改善学习环境的重要因素,对于个人是如此,对于团队更见效益!没有比在心情好的时候更能充分吸收知识的了,保持愉悦是成功学习的秘诀之一,所以在每日站立会议时有鼓舞士气、提升团队和谐的行为,对一天的工作绝对有提升,应该尝试看看!相对的,心情低落是学习的一大障碍,管理者应该立刻给予关注才是。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。