软件开发中的混乱与秩序(译文)
By robot-v1.0
本文链接 https://www.kyfws.com/games/chaos-and-order-in-software-development-zh/
版权声明 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 9 分钟阅读 - 4241 个词 阅读量 0软件开发中的混乱与秩序(译文)
原文地址:https://www.codeproject.com/Articles/1250866/Chaos-and-Order-in-Software-Development
原文作者:Eoin Mullan
译文由本站 robot-v1.0 翻译
前言
Chaos and order in software development
软件开发中的混乱与秩序 世界(和软件开发)可能很混乱,因此我们有约定俗成的规则来实现秩序.这可以取得进步,但是我们也必须认识到成本.(The world (and software development) can be chaotic, so we have conventions and rules to bring about order. This enables progress, but we must also recognise the cost.)
在一开始的时候(In The Beginning)
在一个混乱的世界中,一切都是不可预测的,没有任何意义.行动的结果是随机的,因此无法朝着目标迈进.个人无需任何合作或集体努力就可以为自己的利益行事,进一步扼杀了进展.(In a chaotic world, everything is unpredictable and nothing makes sense. The outcomes of your actions are random, which makes it impossible to move towards a goal. Individuals act in their own self interest without any cooperation or collective effort, further stifling progress.) 因此,自远古时代以来,我们就制定了社会规范和惯例来控制混乱并带来一定程度的秩序.如果我们对其他人如何与我们互动有一个想法,那么我们可以在世界上走自己的路,并且可以取得一些进步.我们还发展了共同的价值观,使我们能够在重要问题和集体目标上达成共识,从而进一步加快进步.(So, since time immemorial, we’ve developed social norms and conventions to tame the chaos and bring a degree of order. If we have an idea of how others will interact with us, then we can make our way in the world, and we can make some progress. We also developed common values, enabling us to agree on important issues and collective goals, accelerating progress further.) 因此,我们能够组织比其他任何物种更多的物种,并因此对世界产生了影响.(For this reason, we’ve been able to organise in greater numbers than any other species, and impacted the world accordingly.)
在团队中(In Groups)
随着社会的不断发展,我们的一些规范成为规则和法律,我们的某些价值观成为道德,进一步增加了秩序.但是,如果任其发展,这一过程将继续下去,直到集体的角色压倒个人为止.这可以建立高效的组织,但对创新和创造力却是灾难性的.(As societies continued to evolve, some of our norms became rules and laws, and some of our values became morals, further increasing orderliness. However, if left unchecked, this process can continue until the role of the collective overwhelms the individual. This can make for highly efficient organisations, but it’s disastrous for innovation and creativity.) 从有序到混乱,从各个方面来看,事情都会变得很黯淡,但幸运的是,千古时代的智慧为我们提供了识别和处理问题的方法.(On the spectrum from order to chaos, things can get pretty bleak at each end, but luckily the wisdom of the ages gives us ways to recognise and deal with the problem.)
在道教和其他哲学中使用的太极拳象征着看似相反的力量通常是互补和相互依存的.据说所有事物都有阴阳,目的是在两者之间找到适当的平衡.(The Taijitu, used in Daoism and other philosophies, symbolises how seemingly contrary forces are often complementary and inter-dependent. Everything is said to have yin and yang, and the goal is to find the right balance between the two.)
和谐(In Harmony)
秩序和混乱的特殊二元性在我们周围显现,有趣的例子包括:体育,有足够的规则可以使事物易于理解,而又不会扼杀个人的创造力和才能;音乐,作曲家将常规音阶,节奏和和声与偶尔的不和谐融合在一起,(The particular duality of order and chaos manifests all around us, with interesting examples as diverse as: Sports, with enough rules to makes things comprehensible without stifling individual creativity and flair; Music, where composers blend regular scales, rhythms and harmonies with occasional dissonance,) 偶然的(accidentals) 和(and) 空闲时间(free time) ;(;) 随机算法(Randomized algorithms) 诸如蒙特卡洛,得益于随机输入;在现代民主制度中,左派(热衷于拥抱未知)在理论上受到右派的制约(强调传统的重要性),反之亦然(在理论上).(such as Monte Carlo, which benefit from random input; and modern democratic systems where the left (keen to embrace the unknown) are (in theory) kept in check by the right (emphasising the importance of tradition) and vice versa (in theory).) 最后,关于Taijitu的有趣提示是白色内的黑点和黑色内的白色.前者警告我们,极端有秩序的行为会造成一种特殊的暴政混乱,在这种混乱中,个人的行为被团体的意志所淹没,因此毫无意义.相反,后者表示有时如何从持续的混乱时期中出现.这种通常令人不快的过程以其较温和的形式而闻名,它受益于您在舒适区域外度过的时间,而在更严重的情况下,它被格言所捕获(Finally, what’s interesting to note about the Taijitu is the black dot within the white and the white within the black. The former warns us that extreme orderliness can render a particular type of tyrannical chaos, where the individual’s actions become overwhelmed by the will of the group, and therefore meaningless. Conversely, the latter represents how order can, sometimes, emerge from a sustained period of chaos. This typically unpleasant process is familiar in its milder forms as benefiting from time spent outside your comfort zone, while in the more severe case, it’s captured by the adage)最热的火来自最坚固的钢(from the hottest fire comes the strongest steel).(.)
在软件开发中(In Software Development)
尽管可能如此有趣,但可以质疑它是否适用于工作场所或更具体地适用于软件开发团队.事实证明,在我们作为软件开发人员的日常经验中,发现上面表达的一般思想正确的示例非常容易.(As interesting as this may be, it’s fair to question whether it’s applicable in the workplace or, more specifically, to software development teams. It turns out to be remarkably easy to find examples where the general ideas expressed above ring true in our everyday experience as software developers.) 在以下情况下,您会发现混乱:(You’ll recognise chaos if:)
- 您的CI中的测试间歇性地失败了.(You’ve got tests in CI that fail intermittently.)
- 如果应用程序当前已损坏,您担心会合并来自源代码管理的最新代码.(You’re afraid to merge the latest code from source control in case the app is currently broken.)
- 您已经运行了npm install,一切都停止了工作.(You’ve ran npm install and everything stopped working.)
- 您的连续部署间歇性地失败.(Your continuous deployment fails intermittently.)
- 由于缺乏CPU或内存,您的TDD反馈周期很慢,并且可能由于后台进程而停顿.(Your TDD feedback cycle is slow due to a lack of CPU or memory and can stall due to background processes.)
- 您不确定是否有人在使用与您相同的功能.(You’re not sure if anyone else is working on the same feature as you.)
- 您不确定其他团队是否正在从事可能会否定您团队工作的事情.(You’re not sure if another team is working on something that could negate what your team’s working on.)
- 您不确定客户是否需要您正在使用的功能.(You’re not sure if the customer even needs the feature you’re working on.)
- 您不确定您的同事是请假还是今天放假.(You’re not sure if your colleagues are on leave or if they’ll be in today.)
- 在整个代码和文档中不一致地使用域术语.(Domain terminology is used inconsistently throughout code and documentation.)
- 每日站立时间从5分钟到一个半小时不等.(Daily standup takes anywhere from 5 minutes to an hour and a half.)
- 您已经注意到(You’ve noticed) 流失(The Churn) .(.) 清单还在继续,甚至可以降低(The list goes on, and it can even strike lower down) 马斯洛的阶层(Maslow’s Hierarchy) 需求,例如,您不确定自己是否每天都会在稳定,舒适的工作环境中工作,或者无法始终如一地解决简单的人事问题.(of needs, e.g., you’re not sure if you’ll be in a stable, comfortable working environment from day to day, or simple HR issues aren’t treated consistently.) 如果您认识到上述任何一种情况,那么您需要找到一种方法来带来一些订单.当此清单上的东西摆在头上时,它们可能会浪费您一天的时间,甚至浪费您一周的几天时间,从而破坏了生产力.但是,它们都可以解决:有些需要时间,有些需要金钱,有些需要沟通,有些需要领导,但是都需要关注.如果没有好吧,的确如此,如果您在旷野度过足够的时间,您可能只会得到JQuery,但我不会说这是个好策略.(If you recognise any of the above, then you need to find a way to bring about some order. When the things on this list rear their head, they can wipe hours from your day, even days from your week, devastating productivity. However, they can all be addressed: some need time, some need money, some need communication, some need leadership, but all require attention. If you don’t? Well, it’s true that if you spend enough time in the wilderness you may just end up with JQuery, but I wouldn’t call that a good strategy.)
事实上(In Reality)
但是,正如历史所教导的那样,您能走得太远吗?(But can you, as history teaches us, take it too far?)
- 静态分析工具非常适合确保一致的编码样式,但是您是否真的要中断构建并将发布发布阻止到UAT,因为有人在评论中错过了标点符号?(Static analysis tools are great for ensuring consistent coding style, but do you really want to break the build and block the release to UAT because someone missed punctuation in a comment?)
- 代码审查是确保代码质量和共享知识的一种好方法,但是一小部分强制性审查者可能会引入瓶颈,从而使开发人员望而却步.(Code reviews are a good way to ensure code quality and share knowledge, but a short list of mandatory reviewers can introduce bottlenecks that hold developers back.)
- 坚持使用久经考验的框架和语言可能会使每个新项目都迅速启动并运行,但是如果您仍在使用Classic ASP编写Visual Basic,则可能难以有效地交付现代应用程序.(Sticking with tried and tested frameworks and languages may get every new project up and running quickly, but if you’re still writing Visual Basic with Classic ASP, you may struggle to deliver modern applications efficiently.)
- 固定版本号可以在短期内避免麻烦,但是您可能会被束缚在与其他库相关联的库和语言版本之间,这可能会阻止您使用新的现代开发功能.(Fixing version numbers can save headaches in the short term, but you risk becoming tied to a library, which ties you to other libraries, and a language version, which prevents you using new modern development features down the line.)
- 公司价值观有助于使每个人都专注于共同的目标,但他们却(Company values help to focus everyone on common goals, but they) 不应被允许超越自己的个人道德(shouldn’t be allowed to trump your own personal ethics) .(.) 好消息是,秩序与混乱之间的界线不是剃刀的边缘.如果您知道警告标志,因为一侧变得过于占主导地位,并且在必要时采取了谨慎的补救措施,则可以舒适地走着.(The good news is that the line between order and chaos isn’t a razor’s edge. You can walk it comfortably if you’re aware of the warning signs as one side grows too dominant and you take careful, remedial action when necessary.) 快速行动,适应变化并让个人蓬勃发展的小公司更有可能让混乱立足.他们也更有可能从混乱中获得秩序,但要提防这些轶事中的生存倾向.因此,如果您在一家小公司中,请考虑一些一致的流程和可预测性如何改善情况.(Small companies that move quickly, adapt to change and allow individuals to flourish are more likely to allow chaos to get a foothold. They’re also more likely to draw order from chaos but beware of survivorship bias in any such anecdotes. If you’re in a small company, therefore, consider how some consistent processes and predictability might improve things.) 具有官僚作风和明确的,公开的公司价值观的大公司更容易受到过分有序的影响.在这些公司中,个人自由自然受到限制,因此很难改变.但是,尝试技术和蓝天可以带来好处.您可以通过更改堆栈的一部分来逐步开发,例如在前端切换到TypeScript,同时使其余堆栈保持熟悉.(Big companies with layers of bureaucracy and explicit, overt company values are more susceptible to overdo orderliness. In these companies, individual freedom is naturally limited so it can be difficult to change things. However, experimenting with technologies and blue sky days could pay dividends. You can develop piecemeal by changing one part of your stack, for example switch to TypeScript on the front end, while keeping the rest of the stack familiar.)
结论(In Conclusion)
好消息是,当我们走上正确的道路时,我们很自然就能在情感上知道.引用多伦多大学的乔丹`彼得森(Jordan Peterson)的话(The good news is that we’re naturally equipped to know on an emotional level when we’re on the right path. To quote Jordan Peterson of the University of Toronto, who) 在这里表达的想法很多(speaks a lot on the ideas expressed here) :(:) **依序站立,一只脚站着,另一只脚站在混乱中^您有足够的信心去自信,但又没有那么安全以至于感到无聊.您有足够的兴趣觉醒,但没那么感兴趣,以至于害怕.当您处于这种状态时,当您发现有趣而有意义的事情时,时间就会流逝."(Stand with one foot in order, and one foot in chaos… You’re secure enough to be confident, but not so secure that you’re bored. You’re interested enough to be awake, but not so interested that you’re terrified. When you’re in a state like that, when you find things interesting and meaningful, time slips by”)**在这里,个人可以蓬勃发展,团体可以合作,组织可以成功.这就是您的目标.(It’s here that individuals can flourish, groups can co-operate, and organisations can succeed. That’s what you should aim for.) 最初发表于(Originally published at) instil.co(instil.co) 在2018年3月12日.(on March 12, 2018.)
许可
本文以及所有相关的源代码和文件均已获得The Code Project Open License (CPOL)的许可。
Typescript jQuery ASP NPM 新闻 翻译