基于vuecli3构建项目

Suppose you have to add a new major feature to an app.

假设您必须向应用程序添加新的主要功能

Is it easier to add this major feature to a relatively small app, still under construction and not yet in production? Or is it easier on a big app that has grown over time, whose overall quality is questionable, and which is already running in production serving several clients?

将这个主要功能添加到一个相对较小的 ,仍在建设中但尚未投入生产的应用中 ,是否更容易? 还是随着时间的推移而发展,整体质量值得怀疑并且已经在生产中运行并服务于多个客户的大型应用程序变得更容易?

Well, there is no doubt. The second is a much more challenging task.

好吧,毫无疑问。 第二是一项更具挑战性的任务。

So then why do we usually find the most experienced developers, the architects – the "cool kids" – mostly involved in working on those smaller apps, while the rest of the folks are often buried in the large projects?

那么,为什么我们为什么通常会找到最有经验的开发人员,即建筑师(“酷孩子”),主要参与那些较小的应用程序的开发,而其他人却经常被埋在大型项目中呢?

我的故事 (My story)

Many years ago, I joined the dev team responsible for one of the core systems of a big corporation. The first position I was given was in the Application Maintenance (AM) team responsible for the legacy parts of the app.

许多年前,我加入了负责大公司核心系统之一的开发团队。 我担任的第一个职位是在应用程序维护(AM)团队中,负责该应用程序的遗留部分。

The reasons were simple and were shared with me: I was new to the place, and new projects were running fast. They were using leading edge technologies for which there was not much experience. So AM was the right place for me to grow without too much pressure.

原因很简单,并与我分享:我是这个地方的新手,新项目运行很快。 他们使用的是没有太多经验的前沿技术。 因此,AM是让我在没有太大压力的情况下成长的正确地方。

They told me that as soon as I had gathered enough knowledge and experience I would move to the Project team. This was the team developing new features with new technologies, the team of the experienced devs.

他们告诉我,一旦我积累了足够的知识和经验,我就会转到项目团队。 这是由经验丰富的开发人员组成的团队,他们使用新技术开发新功能。

After one year or so this actually happened, but I will never forget that supposedly not-so-stressful period of AM.

大约一年后,这实际上发生了,但是我永远不会忘记那个所谓的不太紧张的AM。

项目团队和AM团队 (The Project team and the AM team)

All this was many years ago but, since then, I have seen the same pattern repeated many times, often in much more extreme forms.

所有这些都是很多年前的事情,但是从那时起,我已经看到相同的模式重复了很多次,常常以更为极端的形式出现。

When you have a new initiative, you start with the Project team. The Project team develops the architecture and the features. The Project team accumulates delays with respect to a very optimistic initial plan, and then they start working extra hours, cutting corners along the way.

当您有一个新的计划时,您将从项目团队开始。 项目团队开发架构和功能。 对于非常乐观的初始计划,项目团队积累了一些延迟,然后他们开始加班工作,一路偷工减料。

Quality is often sacrificed to the altar of the Plan, tests are forgotten, and patches are added on top of patches. Developers start adding comments “To be refactored as soon as we have some time”. Technical debt is already there and it'll only grow.

质量经常被牺牲到计划的祭坛上,测试被遗忘,补丁被添加到补丁之上。 开发人员开始添加评论“待我们有一段时间后将其重构”。 技术债务已经存在,而且只会增加。

Eventually the thing is brought to production and then, immediately after it goes live, the Project team starts the transition towards the AM team.

最终,该产品投入生产,然后在项目上线后,立即开始向AM团队过渡。

After some overlapping period, the AM team is left sailing alone. The AM team is usually younger, less experienced, and considered not as strong as the Project team.

经过一段时间的重叠后,AM团队将独自航行。 AM团队通常比较年轻,经验不足,并且不如Project团队强大。

But the tough part is over, the project is now live. Now it is AM time – it is easier, it has to cost less, and the company can afford a new junior team.

但是困难的部分已经过去了,该项目现在已经启动。 现在是AM时间–更容易,成本更低,并且公司可以负担起一个新的初级团队。

上线一年后 (One year after the go live)

Fast forward, and it has been one year of intense work. Bugs have been fixed, little things have been changed, and little things have been added.

快进,这是一年的紧张工作。 错误已得到修复,几乎没有任何更改,并且添加了很少的内容。

The system has been eventually made ready to sustain a real production load and the codebase has grown. At this point the AM Team receives a request to add a new big feature.

最终,该系统已准备就绪,可以承受实际的生产负荷,并且代码库已经扩展。 此时,AM团队收到了添加新的重要功能的请求。

And we are back to the initial question. Is it easier to add the new feature now or was it easier to add a new feature when we were in project mode?

我们回到了最初的问题。 现在添加新功能更容易吗?还是在项目模式下添加新功能更容易?

基于vuecli3构建项目_基于项目的团队VS基于产品的团队–哪个更适合构建软件?

The answer is clear: the task for the AM team is much more difficult. It is true that the AM team is sitting on their experience developed over time. But at the same time the AM team needs to deal with a not-very-stable code base, avoid introducing regressions without having a decent test safety net, and devise a way to deploy a new major version without creating disruption.

答案很明确:AM团队的任务要困难得多。 的确,AM团队会随着时间的推移而积累经验。 但是与此同时,AM团队需要处理不稳定的代码库,避免在没有适当的测试安全网的情况下引入回归,并设计一种可以在不产生中断的情况下部署新的主要版本的方法。

Let’s say it. The AM team often faces a much tougher job than the Project team. So why, if the task of the AM team is tougher, do all the experienced developers work in the Project team (and are now somewhere else, probably doing something else cool)?

说吧。 AM团队通常比项目团队面临更艰巨的工作。 那么,如果AM团队的任务更加艰巨,为什么所有有经验的开发人员都在Project团队中工作(现在又在其他地方,可能在做其他很棒的事情)?

可能的答案:项目团队需要奠定正确的基础 (A possible answer: the Project team needs to lay the right foundations)

One reason to have the most experienced people starting a Project is that, at the beginning, we need to lay the foundations for what is to come. We need to define the architecture and make some fundamental decisions about the design of the solution, so the right experience is required.

聘请最有经验的人来启动项目的一个原因是,一开始,我们需要为即将到来的事情奠定基础。 我们需要定义架构,并对解决方案的设计做出一些基本决定,因此需要正确的经验。

At the same time though, at the beginning of a Project, we usually have only a limited knowledge of the problem we are called to solve.

但是,与此同时,在项目开始时,我们通常对所要解决的问题的了解有限。

At the start of any significant Project there are many known unknowns and also many unknown unknowns. For this reason, the Architecture of the system always has to be considered evolutionary. We need to be aware that many crucial decisions can not be made at the beginning but have to be made when the unknowns start to reveal themselves.

在任何重要项目的开始,都有许多已知的未知数,也有许多未知的未知数。 因此,必须始终将系统的体系结构视为可演化的。 我们需要意识到,许多关键的决定不能在一开始就做出,而必须在未知因素开始暴露出来时做出。

Architectural decisions can rarely be decided once for all at the beginning of a project. Critical architectural questions may pop up at any time in the life of the SW system. And those critical decisions made at the start of the project may have to be overhauled later – maybe because of new requirements, maybe because of new technologies like the Cloud, maybe because they were simply the wrong ones for the problem to solve.

很少在项目开始时就一劳永逸地决定架构决策。 在软件系统生命周期中的任何时候都可能出现关键的体系结构问题。 在项目开始时做出的那些关键决定可能必须稍后进行大修-可能是由于新的要求,可能是由于诸如Cloud之类的新技术,也许是因为它们只是解决问题的错误方法。

So yes, it is true, the Project team has to make architectural decisions. But the AM also team has to make architectural decisions, and it has to make them in a much more complex environment.

是的,的确如此,项目团队必须制定架构决策。 但是AM团队还必须做出架构决策,并且必须在更加复杂的环境中做出决策。

你根本做不到 (You simply can not do the reverse)

While the classical model of a strong Project team followed by a more junior AM team is not the most efficient in the medium term, the opposite is not an answer either.

在中期,虽然强大的项目团队的经典模式随后是一支更初级的AM团队并不是最有效的方法,但相反的方法也不是答案。

Most companies can't imagine having a junior team starting a project and then transitioning it to a more senior team for maintenance. It's just not an option.

大多数公司无法想象有一个初级团队来启动一个项目,然后将其过渡到一个更高级的团队进行维护。 这不是一个选择。

潜意识的情况 (A case for subconsciousness)

Maybe one profound reason why more senior people start new Projects with cool new technologies is that they like to start new things and play with new tech. But then over time, when the work seem to become more repetitive, they simply want to move on to other challenges.

也许更多的高级人士使用炫酷的新技术来启动新项目的深刻原因之一就是他们喜欢开始新事物并喜欢新技术。 但是随着时间的流逝,当这项工作似乎变得越来越重复时,他们只是想继续面对其他挑战。

This is good for their tech curiosity and this is good for their resume. But this is probably not good for the long term health of the SW system they are building.

这对他们的技术好奇心和简历都有好处。 但这可能对他们正在构建的软件系统的长期健康不利。

从项目团队到产品团队 (From Project team to Product team)

In 2006 Werner Vogels CTO at Amazon coined the famous “you build it, you run it” motto. It conveyed the idea that a team responsible for a Product needs to take care of it from its inception down to its run phase (where run covers both the Ops aspects as well as the evolution aspects).

2006年,亚马逊的Cerner Werner Vogels提出了著名的“建造,运行”的座右铭。 它传达了这样一个想法,即负责产品的团队需要从产品开始到运行阶段都进行维护(运行既涵盖运营方面,也涵盖演化方面)。

To put it simply, the same team is responsible for all phases required for a Product to be successful: design, build, run, evolve.

简而言之,同一团队负责产品成功所需的所有阶段:设计,构建,运行,发展。

This is the model adopted by the digital giants that have emerged in the last decade, from Amazon to Facebook to AirB&B. Their undisputed success is the proof that the model is the right one in the digital era.

这是近十年来出现的数字巨头所采用的模型,从亚马逊到Facebook再到AirB&B。 他们无可争议的成功证明了该模型在数字时代是正确的。

Nowadays a growing number of people are emphasizing the need to move from a project-oriented way of organising work to a more product-oriented model.

如今,越来越多的人强调需要从以项目为导向的组织工作方式转变为以产品为导向的模型。

This is a complex transformation which involves many aspects of an organisation. But for the topic we are debating here it definitely means that we need to abandon the idea of separate Project and AM teams and create more stable Product teams.

这是一个复杂的转变,涉及组织的许多方面。 但是对于这个话题,我们在这里进行辩论,这绝对意味着我们需要放弃单独的Project和AM团队的想法,而要创建更稳定的Product团队。

Product teams need to have the right mix of experienced people and more junior people who need to grow. Working together with the experienced devs, juniors gradually become experienced themselves. Controlled rotation is then possible without tampering the quality of the team.

产品团队需要由经验丰富的人员和需要成长的初级人员的正确组合。 与经验丰富的开发人员一起工作,初级人员逐渐成为了自己的经验丰富的人。 这样就可以在不影响团队质量的情况下控制轮换。

结论 (Conclusion)

In the era we are living, the Digital era, we should be suspicious when we hear something like “and when the Project ends we will transition to AM”.

在我们生活的时代,数字时代,当我们听到诸如“当项目结束时我们将过渡到AM”之类的消息时,我们应该感到怀疑。

This is not to say that there is no space for AM any more. There are still old legacy systems, usually serving the back office, which are egregiously doing their work, which are very stable, and which just need some Maintenance.

这并不是说AM不再有空间了。 仍然有一些旧的旧系统,通常为后勤部门服务,它们的工作非常糟糕,非常稳定,并且只需要一些维护。

But when it comes time to develop new differentiating digital capabilities we need to move away from the Project/AM model and embrace a Product oriented model.

但是,当要开发新的差异化数字功能时,我们需要摆脱Project / AM模型,而采用面向产品的模型。

In this model, teams are designed to be responsible for building not only the first version of the Product they also run it. And they learn from running it while evolving it over time to make sure it remains relevant for its end users.

在此模型中,团队被设计为不仅负责构建产品的第一个版本,而且还负责运行该产品。 他们从运行中学习,同时随着时间的推移不断发展,以确保它仍然与最终用户相关。

翻译自: https://www.freecodecamp.org/news/project-based-to-product-based-teams-in-software-development/

基于vuecli3构建项目

相关文章: