tdd密码检查程序
传统上,新年是预测的时候,我阅读的一些博客都在进行预测(例如Ian Sommerville的“ Software Engineeringng展望20年”。 )。 这不是我通常从事的传统,但是我想一次成为一个传统。 (下一次我将回到软件经济学 ,我需要得出一些结论。)
实际上,这不是一个新的预测,这是我几年来一直在口头上做出的预测,但我从未将其记录在案,因此请继续:
如果您不定期练习TDD,那么到2022年将不可能获得专业的编程工作。
几年前,我说:“十年后”,我开始做这个预测,有时候当我重复这个预测时,我坚持了十年,而有时我补偿了,说了九年或8年。 我可能会有点不知所措–如果我认为这会尽快发生,那么2022年可能会比较保守。
TDD是指测试驱动开发,也称为测试优先(或设计驱动)开发。 这可能是Classic / Chicago-TDD,London-School-TDD或Dan North风格的行为驱动开发 。 从广义上讲,尽管存在显着差异,但是涉及相同的技能和相似的工具,即,如果您没有能力进行TDD,则无法进行BDD,但是BDD的意义要大于TDD。
我关注的特征是:
- 开发人员编写的自动化单元测试,例如,如果您编写Java代码,则可以用Java…或Ruby或其他某种计算机语言编写单元测试。
- 定期至少每天自动执行一次单元测试
这可能意味着重构,尽管正如我听到的Jason Gorman所指出的那样:对重构培训的兴趣远不及对TDD培训的兴趣。
我想认为,TDD(尤其是伦敦学校)是标准的,它也意味着更多的延迟设计决策,但是我不确定这是否会继续下去。 部分原因是因为有一群“设计人员”(高级开发人员,年长的开发人员,通常带有“建筑师”的称呼),他们乐于交谈,并且可能会“设计”,但不会贬低自己编写代码。 在修复我们的职业模型之前,大型前期设计将一直存在。 (另一篇博客文章我必须写一天……)
我没有对TDD的质量做出任何预测。 像一般的编程一样,我期望最好的将是真正优秀的,而大多数将是中等的。
我声称的是:
- 在面试中质疑TDD是不可接受的。 人们会不知道TDD是什么,不能在锻炼中使用TDD或声称“我不做TDD是因为浪费时间”或“ TDD未经证实”的说法将被接受。工作。 (我已经知道这种情况下的公司,我希望到2022年将成为普遍的公司。)
- 程序员将再次被期望为其工作编写单元测试。 (在家庭计算机革命之前,我相信大多数专业程序员实际上都是这样做的。我们这一代人没有。)
- 单元测试将实现绝大多数自动化。 手动测试是一种罪过。 手动单元测试加倍了。
而且我相信,总体而言,由于这些更改,软件会更好(错误更少,更易于维护),结果程序员的生产力通常会更高(即使他们编写更少的代码,也只会修复更少的错误)。 )
为什么对做出这个预测充满信心?
正是由于这些最后一点:采用任何形式的TDD都可以减少代码错误的数量,增强可维护性,并提高生产率。 这些都是程序员和企业都想要的好处。
我建议的时间范围纯粹是直觉,这可能发生在2022年之前,也可能发生在2022年之后。 由于我的工作,我是最难问的人之一,我绝大多数都看到那些不这样做但会从中受益的公司–如果他们听他们为我付钱的建议,他们就会开始这样做。
但是,我相信我们正在Swift接近“临界点”。 一旦TDD作为标准达到一定的临界质量,它将成为规范,即使那些不积极选择这样做的公司也会发现他们的程序员开始以简单的专业精神来做。
一个更有趣的问题是: 这是什么意思? 这意味着什么?
目前,我认为该行业正在经历一项重大的技能大修,因为那里所有不知道如何做TDD的程序员都将学习如何做。 由于TDD是一项可测试的技能,因此很容易分辨出谁做了/可以做到,以及谁刚刚决定对自己的简历/简历进行“性化”。 (这与敏捷通常不同,在敏捷中很难说出谁真正理解它以及谁刚读一两本书。)
在接下来的几年中,我认为提供TDD培训和辅导的人员将会有很多工作–我会定期询问有关C ++ TDD的信息,而对其他语言的询问会少一些,但TDD和TDD培训在那儿会更广泛。 这项工作不会枯竭,但会从“ TDD入门”变为“ Improving TDD”和“ Advanced TDD”风格的课程。
自称教授编程的大学和其他学院将受到更大的冲击。 我遇到的几乎所有应届毕业生都根本没有接受过TDD的培训。 如果甚至提到了TDD,那么他们将领先于竞争对手。 我确实遇到了一些被教过以这种方式编程的人,但他们之间相距甚远。
简而言之:如果大学不将TDD作为课程的一部分进行授课,那么他们的毕业生将无法就业,这将使大学对优秀学生的吸引力降低。
不幸的是,我还预测,直到大学看到他们的学生找不到工作,大学才会坐视不理。
如果您是潜在的学生,希望在大学学习计算机科学/软件工程,我建议您忽略任何不教授TDD编程的大学。 如果您是一所大学,希望从您的IT课程中培养可聘用的程序员,我建议您尽快接受TDD –这将为您在现在招募学生方面带来优势,并为您的学生寻找工作提供优势。
(如果您是一所声称要运行“敏捷”模块的大学,请确保教TDD –是的,我特别想到的是一种令人尴尬的Ric。)
而且,如果您仍然是一所大学,仍然认为计算机科学专业的学生实际上不需要编程,因为他们是科学家,后勤学家,数学家,根本不应该编程,那么请确保在您的计算机上用大红色字母写出来招股说明书。
在业务中,简单地做TDD,尤其是做得好,随着时间的流逝将解决软件公司和公司IT所解决的许多日常问题, 供应方面将得到改善 。 但是,除非公司解决供应方面的问题,否则,如果有任何事情会变得更糟,他们实际上将不会看到很多好处(请阅读我的软件需求曲线分析或等待有关软件经济学的下一篇文章。)
最后,调试器将变得不那么重要,良好使用TDD消除了对调试器的大部分需求(这就是时间的来源),这意味着IDE的重要性将降低,这意味着开发人员工具市场将发生变化。
(后记:对于第一次上传的格式问题,我们深表歉意。)
tdd密码检查程序