java工程实现模块可插拔



Any technology-driven organisation that has successfully grown over a long time, would have done so by a mix of visionary leadership, luck and rapidly developing solutions for real-world problems. They would have, along the way, made technical concessions in the solutions they devised. They would have pivoted from experiments and products brought to market. They would have made decisions without knowing what the future holds, decisions motivated by growth, speed or plain survival.

一个由技术驱动的组织已经成功成长了很长一段时间,它可以通过富有远见的领导才能,运气和Swift开发的解决现实问题的方法来实现。 他们将一路在他们设计的解决方案中做出技术让步。 他们本来可以将实验和产品推向市场。 他们会在不知道未来会怎样的情况下做出决定,而决定是由增长速度或简单的生存所驱动的

But, if they were successful, they will eventually reach or have reached a point where the organisation will need to focus on a different kind of speed, a different kind of agility. The motivations would now change to Quality, Stability, Security; all things which were never the primary focus in the long history of the organisation’s engineering culture.

但是,如果他们成功了,他们最终将达到或已经达到组织将需要专注于另一种速度,另一种敏捷性的程度。 现在的动机将变为质量稳定性安全性 ; 在组织的工程文化的悠久历史中,从来没有把所有重点放在所有事物上。

In this dichotomy lies the conflict of an old but successful engineering team unable to fuel sustained growth with stability, stuck with the old culture and practice which seems out of place and ripe for disruption.

在这种二分法中,存在一个古老而成功的工程团队的冲突,他们无法以稳定的方式推动持续增长,而被旧文化和实践所束缚,而旧文化和实践似乎已经不合时宜,并且已经成熟,容易被破坏。

This might be a example of how teams get misaligned to the market over time. If you find yourself in such a team, you may wonder: What now? How can I bring Quality into focus?

这可能是团队如何随着时间而偏离市场的一个例子。 如果您发现自己属于这样的团队,您可能会想:现在怎么办? 如何使质量成为重点?

(Houston, we have a problem!)

The first step towards any solution is to realize and diagnose that there is a problem. It is imperative that you spot the red flags in your organisation, that you see the obvious signs littered around the codebases, delayed features and piling bug reports. You may find yourself with the following symptoms:

对任何解决方案吨他的第一步是要认识和诊断有问题。 当务之急是发现组织中的危险信号,并在代码库中看到明显的标志,延迟的功能和堆积的错误报告。 您可能会发现自己患有以下症状:

  • The quality of code is constantly deteriorating, even when engineers spot obvious issues, they can never find a “good” solution.
  • There is constant talk of the “Ideal World Solution” but those solutions never see the light of day.
  • Technical solutions are driven by deadlines rather than the best practice and the right design for the given problem.
  • Even when there is work on greenfield projects and domains, quality and reliability does not improve.
    即使在未开发项目和领域上都有工作,质量和可靠性也不会提高。
  • The product is constantly buggy, and a lot of unacceptable holes in features are accepted as status quo.
  • People love to hack solutions together for faster delivery. There are meetings where engineers give two estimates, one to “do it right” and one with a “hacky but fast” solution.

If you have seen a majority of these in your team, you should pick up the phone and yell, “Houston! we have a problem!”.

如果您在团队中看到了其中的大多数,则应该拿起电话大喊:“休斯顿! 我们出现了问题!”。

(Ground Rules)

There is no silver bullet, but there are ways to cope, and drive change in a team which might seem tangled with the “old ways”. Let’s make a few assumptions here before we go on to solve anything:

没有灵丹妙药,但是有办法应对和推动团队的变革,而这似乎与“旧方法”纠缠不清。 在继续解决任何问题之前,让我们在这里做一些假设:

  • There are no bad actors — let us assume, we are dealing with people who want to excel; there is no obvious intent of disruption, misalignment with common goals.
  • People are open to reason — people can be resistant to change, but as long as they are open to logical and sound reason, there is hope.

(Lets Change!)

Blaming engineering teams and individual developers’ lack of skill is an easy out for leaders. But we need to realize that the reason we are in this situation is in large part due to the incentives and culture developed over the years. Five years ago when the co-founders incentivized people to “hack together a solution overnight that works 70% of the time” they had very different priorities, they were driven by speed and survival. But the habits, practices and the culture they developed are still hanging around.

责备工程团队和个体开发人员缺乏技能对于领导者来说很容易。 但是我们需要意识到,我们处于这种情况的原因很大程度上是由于多年来的激励机制和文化。 五年前,当联合创始人激励人们“一整夜都可以一个可以在70%的时间内工作的解决方案”时,他们的工作重点却大相径庭,他们受到速度和生存力的驱动。 但是他们养成的习惯,做法和文化仍然徘徊。

It is important to realize that the culture that took years to form, will take a gradual and firm approach to change, we need a strategy that tackles this problem on three fronts:

重要的是要意识到,经过多年的形成的文化将采取渐进和坚定的方式来进行变革,我们需要在三个方面解决这一问题的战略:

  1. Incentivise
    激励
  2. Learn
    学习
  3. Checks & Balances
    支票和余额

(Incentivise)

Incentivising your engineers to deliver fast without regards to the quality may be the root cause of most of your problems, and as such the first steps towards a positive change, is to calibrate that incentive for your team.

激励工程师快速交付而不考虑质量的问题可能是您大多数问题的根本原因,因此,朝着积极转变的第一步就是为您的团队校准这种激励措施。

Use public and formal forums to explicitly state and document that quality is important. Incentivise the champions of quality, and encourage the team to shift gears and change their habits. For example, career development plans and competency matrices should be realigned to reflect that the first and foremost priority for any engineering team is to deliver quality, reliable and secure code.

使用公开论坛和正式论坛明确声明和记录质量很重要。 激励质量冠军,并鼓励团队换档并改变他们的习惯。 例如,应重新调整职业发展计划和能力矩阵,以反映出任何工程团队的首要任务是交付高质量,可靠和安全的代码。

You need to make it evident that the organisation has gone through changes and the incentives have now shifted, the expectations from engineers are no longer what they are used to be. Give your team time to adjust but be firm with the incentives.

您需要证明组织已经经历了变革,激励机制已经转变,工程师的期望已不再是过去。 给您的团队一些时间进行调整,但要坚决地保持激励。

(Learn)

Learning is the only real way to form “better” habits. If old habits die hard, then we better get started with making new habits now!

学习是形成“更好”习惯的唯一真实途径。 如果旧习惯很难改掉,那么我们最好现在就开始养成新习惯!

Learning may come in many shapes and sizes. Your team can learn from peers, online resources, seminars and conferences, even take up formal courses at university. But irrespective of which form of learning you want your team to embark on, realise that all forms of learning take time. You need to make it as easy as possible for your team to learn, and remove any time pressures that might have worked against their desire to learn in the past.

学习可能有多种形式和规模。 您的团队可以向同龄人,在线资源,研讨会和会议学习,甚至可以参加大学的正规课程。 但是,不管您希望团队采用哪种学习形式,都应意识到所有学习形式都需要时间。 您需要使您的团队尽可能轻松地学习,并消除可能与他们过去的学习愿望背道而驰的任何时间压力。

We also need a “culture” of learning, where people can readily admit to making mistakes and are open to learning new things from their peers. One such mode of learning is to engage in honest and in-depth code reviews. There should be a lot of teachable moments during code reviews. People should come out of tedious and long code reviews thinking, “That was hard!, But, I learnt something today”.

我们还需要一种学习的“文化”,人们可以很容易地承认自己犯了错误,并且愿意向同龄人学习新事物。 一种这样的学习模式是进行诚实而深入的代码审查。 在代码审查期间,应该有很多可教的时刻。 人们应该摆脱冗长而冗长的代码审查,以为:“那很难!,但是,我今天学到了一些东西”。

(Checks & Balances)

I am sure that we all agree: trust is the pillar on which any organisation stands. But we still need Checks and Balances. Placing checks should not be seen as mistrust in capability rather as the guard rail that steer everyone to one aligned purpose.

我相信我们所有人都同意:信任是任何组织赖以生存的基础。 但是我们仍然需要制衡。 进行检查不应被视为对能力的不信任,而应视为将所有人引导到一个统一目标的护栏。

Affecting any real change in quality is a hard thing, especially if you have legacy tech debt to deal with. It will need real measurement and conscious push towards things people may not be in the habit of doing. It is human tendency to do things that are easy, but a lot of times, when working with a lot of tech debt, doing the right thing may be counter-intuitive and hard. We need checks as a constant reminder that times have changed and we need to change with them.

影响质量的任何实际变化是一件困难的事情,尤其是如果您要处理遗留的技术债务时。 这将需要真实的衡量和有意识地推动人们可能不习惯的事情。 人类倾向于做容易的事情,但是很多时候,当承担很多技术债务时,做正确的事可能会违反直觉和艰巨。 我们需要不断检查以提醒我们时代已经改变,我们需要与时俱进。

Introducing a code coverage tool, code smell tests, minimum test coverage requirements, locking up horribly tangled legacy code to facilitate breaking the monolith, and stricter code reviews are all checks, which allow us to mould our team’s behaviour and monitor their progress over time.

引入了代码覆盖率工具,代码气味测试,最低的测试覆盖率要求,锁定了纠结不清的旧代码以帮助打破整体,以及更严格的代码审查都是检查,这使我们能够塑造团队的行为并随着时间的推移监视其进度。




java热插拔java包 java模块化热插拔_python

(https://www.codeproject.com/Tips/1029496/How-to-Avoid-Low-Quality-Development-With-Third) (https://www.codeproject.com/Tips/1029496/How-to-Avoid-Low-Quality-Development-With-Third )

(Conclusion)

A successful engineering team is a rare and valuable asset. Especially if that team has years of valuable knowledge, loyalty and drive to make your organisation better. Aligning and realigning teams may be a hard and time-consuming thing to do, but there is no substitute to it. On the bright side, this may be the change that catapults your organisation into the next phase of growth!

一个成功的工程团队是一个罕见的宝贵财富。 尤其是如果该团队拥有多年宝贵的知识,忠诚度和驱动力,可以使您的组织变得更好。 调整团队和重新调整团队可能是一件艰巨且耗时的事情,但是没有替代品。 从好的方面来说,这可能是使您的组织进入下一个增长阶段的变化!


java工程实现模块可插拔