在我们的团队中,我们有一些低/中等级别的开发人员:他们知道如何编写C#/JavaScript代码,但大多数代码都是纯功能编码方式的贫血域模型,但没有单元测试,坚实的原则没有得到尊重,反模式是一种常见的实践,只有编码风格的约定受到尊重。但是公司做得很好,所以我们可以说我们生产的产品也很好。
这个系统的某些部分已经有10多年的历史了,所以随着时间的推移,它越来越成为意大利面/千层面的代码。主要代码库只有15万行代码,供3-5开发人员使用.
为了确保我们不需要在5年内重写所有的东西,我在努力弄清楚我们该走哪条路。因此,我正在阅读书籍/博客(例如Sam Newman的“构建微服务”或Martin Fowler的“企业应用程序体系结构模式”),它们都充满了优秀的模式,但它们似乎都需要一个比我们现在更高的开发人员级别。
作为一个技术总监,我应该在不失去整个团队(和我的首席执行官支持)的情况下提高我们的系统质量,因为我正在检查每一行代码,您有什么建议吗?
例如,微服务似乎是一件好事,但在我看来,部署、数据同步和配置方面的所有问题都像是显示停止。
发布于 2017-06-07 12:57:12
介绍一次一次的良好做法。也许从自动化测试开始比较好:在某些情况下添加回归测试,然后它们会对新代码进行单元测试。这种方法是在有效地使用遗留代码中教授的。添加自动化测试有助于遵守坚实的原则,并允许稍后对模式进行重构。
一般来说,如果您向开发人员展示了如何做到最好,那么开发人员总是感兴趣的。也许可以通过展示如何做到这一点来推广好的做法。在一个1小时的演示中介绍一个好的练习,并且每周做一次。一个建议,周三的最后一件事,这样人们就可以在星期四和星期五尝试新的训练。另一天可能会工作,但周五的最后一件事是坏的,人们回家,不讨论如何在工作中实施。
其他提示,您不拥有代码,代码属于团队。如果你是唯一的评审员,那就给你施加压力吧。因此,每个人都应该认识到质量是必须的。
最后,不要重写所有的东西.这是毁灭的秘诀。有机地添加测试,然后能够替换软件的部分更好(因为它更安全)。
发布于 2017-06-07 13:06:12
我想再听一遍彼特罗门娜说的话。您可以从自动化测试开始的一种方法是修复缺陷。当您的团队遇到缺陷时,尝试引导他们创建一个自动测试,该测试模拟或利用该缺陷,然后再为所述缺陷创建修复程序。这将确保缺陷不会再次发生,如果发生了,团队将立即知道,因此他们对修复它有更好的处理方法。这是一种很好的、即时的展示良好实践能力的方法,也就是自动化测试。
此外,为了再次补充压电薄膜,我想推荐以下几点:模式重构。要很好地理解这本书中的内容,不需要开发人员比你拥有更高的水平,而不管他们的专业知识如何。
发布于 2017-06-07 14:00:46
一些建议:
https://softwareengineering.stackexchange.com/questions/350344
复制相似问题