跳过导航
跳过mega-menu
的帖子

为什么软件工程师会成为优秀的园丁

在Made Tech,我们为客户提供成功的成果, and within my delivery team we contribute to this by delivering quality software. 作为首席工程师, I’m on the lookout for techniques that build our confidence in the software, for adjustments that we could make to our test strategy and culture, 以及我们如何在我们的团队中实施这些变化. 这就是为什么, 今年早些时候的一个周二晚上, you would have found me watching a talk by an ex-colleague which was enticingly titled TDD和其他药物.

While the talk is more broadly a look at the importance of testing, it was the motivation-of-people section that got my mind running on a bit of a tangent. 你作为开发者所体验到的那种掌控感, 当它就位的时候,那种建造杰作的感觉, coupled with the more holistic notion of thinking about the code-base and the 团队作为一个系统, led me to think of our software as beautiful, well-maintained gardens. I couldn’t immediately explain my rationale for this – it just made sense to me. 但是在考虑了更多的问题之后 加上一点园艺方面的研究 -我确信! 这是为什么…

园丁vs程序员

The first edition of The Pragmatic Programmer (which now has a 20周年纪念版) coined the idea of software craft as its very first tip: “Tip 1 Care 十大网博靠谱平台 Your Craft”’. 这意味着作为开发者,我们拥有发挥天赋的空间, 个性, 在我们的工作中诠释和爱. This formed the foundations for a more formal approach to “software craftsmanship” which even comes with its 自己的宣言 并建立在4个敏捷值的基础上.

Like software development, gardening is also a skilled trade, a form of art, a craft. 程序员和园丁花费数年时间来磨练他们的能力, 学习新技术, finding new tools and applying them in their day-to-day lives.

花园与软件

Software and technology are both continually evolving and changing. 它们是有机的、有生命的有机体. Sometimes we build software that takes hold and really thrives, but sometimes – perhaps more often – we try to build something and it doesn’t quite work out or evolve as we expect. 

也许还需要再考虑一下, a tweak in its behaviour or maybe it is best just to stick it on the compost heap, 这也是可以的. In this sense, software development can be just like a garden. 我们还需要对环境的变化做出反应, evaluate the environment and choose the correct tool for the job-in-hand.

景观与设计

Becoming an architect is a well-trodden career path for gardeners and software engineers alike (but 不是所有人都适合 according to the creator of the super-useful C4 model who also argues that we 应该 consider development more strictly as engineering than craft). When we take on a new software project we make some decisions at a high-level about how we expect it to look, 哪些组件相互流动, what foundations need to be put into place to enable us to begin. 

But this up-front work is just one aspect of software design, one aspect of landscaping. 构建好的软件, 我们不断地使用简洁的代码, 我们使软件易于更改, we allow the architecture to evolve as we learn about that immovable root which was prehistorically planted to trip us up. 我们考虑安全方面的潜在风险, 表演, and scalability in the way a gardener might think about the effects of sunlight or adverse weather conditions.

维护vs .维护?

软件很少能被完成而不被碰触, 就像花园不可能完工一样. There is always some level of maintenance to perform and certain areas require more maintenance than others. 在日常的功能开发中, we are continually refactoring – splitting a method that has become too big, 重命名类, abstracting a local concept based on what we learn and what we know at the time. 

不定期, we may repair some code – play down some technical debt or perform a minor restructuring. These activities may be akin to weeding (very often), mowing, pruning, or 波拉德 (少). With legacy systems in particular we may have some instrumental components that require little-to-no maintenance. 它们不需要触摸,而且做得很好, but when they need work it may be an expensive investment so it becomes an effort vs value exercise, 比如移走一棵树或更换栅栏.

来清洁

I thought about titling this blog post “Why software engineers 应该 make really good gardeners” but I hope to be the exception that proves the title true. 好了. I am pretty terrible at gardening and have often wondered why. 

在花了一些时间写这篇文章之后, I have realised 2 main reasons – unlike my approach to software engineering I don’t have enough passion and I don’t have enough discipline for the art of gardening. 我让它离我越来越远, 安排其他活动的优先次序, 尝试,但不要承诺, or just make a good old-fashioned excuse because it feels too much like a chore.

So if you come to me and ask if we 应该 make that manual fix at the expense of automation or skip the tests because it’s quicker I will slap your wrist, 但如果你告诉我 不,现在,五月 应该 be extended for the whole summer, you might get more than you bargained for!

澳门十大正规赌博娱乐平台

在这里注册