skip navigation
skip mega-menu
Posts

At Made Tech we deliver successful outcomes to our customers, 在我的交付团队中,我们通过交付高质量的软件来为此做出贡献. As a lead engineer, 我正在寻找能够建立我们对软件信心的技术, 为了调整我们的测试策略和文化, and for how we can implement these changes in our teams. This is why, one Tuesday evening earlier this year, 你会发现我在看一个前同事的演讲,题目很吸引人 TDD and other drugs.

虽然这次演讲更广泛地探讨了测试的重要性, 人们的动机部分让我的思想有点偏离了正题. That feeling of mastery you experience as a developer, the sense of building a masterpiece as it falls into place, 再加上考虑代码库和 team as a system,让我把我们的软件想象成一个美丽的、维护良好的花园. 我无法立即解释我的理由——这对我来说是有意义的. But after giving it some more consideration – with a bit of gardening research thrown in – I’m convinced! Here’s why…

Gardeners versus programmers

《全球最大的博彩平台》(The Pragmatic Programmer)的第一版(现在有了) 20th anniversary edition)创造了软件工艺的概念作为它的第一个技巧:“技巧1关心你的工艺”。. This means that as developers we have scope for flair, individuality, interpretation and love in our work. 这为更正式的“软件工艺”方法奠定了基础 own manifesto and builds on the 4 agile values.

像软件开发一样,园艺也是一种技术贸易,一种艺术形式,一种工艺. Programmers and gardeners spend years honing their abilities, learning new techniques, 寻找新的工具并将其应用到日常生活中.

Gardens versus software

软件和技术都在不断发展和变化. They are organic, living organisms. 有时候,我们开发的软件能够站稳脚跟,真正茁壮成长, 但有时——也许更常见的是——我们试图建立一些东西,但它并没有像我们期望的那样发挥作用或发展. 

Perhaps it needs a bit more thought, 调整一下它的行为,或者最好把它放在堆肥堆上, and this is OK too. 从这个意义上说,软件开发就像一个花园. We also need to react to changes in conditions, 评估环境并为手头的工作选择正确的工具.

Landscaping versus design

对于园丁和软件工程师来说,成为一名架构师是一条老生常谈的职业道路 it’s not for all of us 根据超级有用的C4模型的创造者(他还认为我们应该更严格地将开发视为工程而不是工艺)。. 当我们承担一个新的软件项目时,我们会在高层上做出一些全球最大的博彩平台期望它看起来如何的决定, which components flow into each other, 我们需要打好什么样的基础才能开始行动. 

但这些前期工作只是软件设计的一个方面,美化的一个方面. In building good software, we continually practise clean code, we make the software easy-to-change, 我们允许建筑的进化,因为我们了解到那些不可移动的根,这些根是史前种植的,是为了绊倒我们. We consider the potential risks around security, performance, 可扩展性就像园丁考虑阳光或恶劣天气条件的影响一样.

Maintenance versus … maintenance?

Software can rarely be completed and left untouched, in the same way that a garden can’t just be finished. 总有一些级别的维护需要执行,并且某些区域需要比其他区域更多的维护. In the normal day-to-day of feature development, 我们不断地重构——拆分已经变得太大的方法, renaming a class, 根据我们所学到的和我们当时所知道的,抽象出一个局部概念. 

Less regularly, 我们可能会修复一些代码,淡化一些技术债务,或者进行一些小的重组. 这些活动可能类似于除草(经常),割草,修剪,或 pollarding (less often). 特别是对于遗留系统,我们可能有一些工具组件几乎不需要维护. They don’t need touching and do the job well enough, 但是当他们需要工作时,这可能是一项昂贵的投资,所以这就变成了一项努力与价值的练习, like removing a tree or replacing a fence.

Coming clean

我想把这篇博文命名为“为什么是软件工程师” should 成为真正的好园丁”,但我希望自己是一个例外,证明这个头衔是正确的. So here goes. 我很不擅长园艺,也常常想知道为什么. 

After spending some time writing this article, 我意识到两个主要原因——不像我对软件工程的态度,我没有足够的激情,我对园艺艺术没有足够的纪律. I let it grow away from me, prioritise other activities, try but don’t commit, 或者找一个老掉牙的借口,因为这太像一件苦差事了.

所以,如果你来问我,我们是否应该以自动化为代价进行手动修复,或者跳过测试,因为这样更快,我会打你的手腕, but if you tell me that No Mow May 如果延长到整个夏天,你可能会得到比你预想的更多!

Subscribe to our newsletter

Sign up here