一个项目的故事:当团队没有高级开发人员时



译者:我们为您发布开发人员Jack Finlay 的文章 。 杰克谈到自己的情况-试图组织一个初级团队,每个人都是平等的,没有技术经理。 本文对新手程序员将很有用。

有些项目可能由于各种原因而陷入停顿,一无所获。 通常缺少技术指导。 这个问题可能导致惨败。 一旦它发生在我参与的开发项目中。

Skillbox建议:两年实践课程“我是PRO Web开发人员”

我们提醒您: 对于所有“哈勃”读者来说,使用“哈勃”促销代码注册任何Skillbox课程时均可享受10,000卢布的折扣。

时间可以教你很多东西。 不幸的是,我们不仅与成功的项目合作,而且与不成功的项目合作,也积累了经验。



个人经验和领导能力


更确切地说,缺乏它。 我们的项目中没有主管或高级开发人员。 原则上,已经很清楚我们的工作将会发生什么,但是那时我们还不了解这一点。

团队没有经验。 我们几乎所有人都是学生,没有人可以带领我们。 那时对我们来说似乎没有必要。

在一个夏天的过程中,团队成员的数量增加了五倍。 有问题吗 所有这些都具有相同的专业水平。 每个人都缺乏经验。 我们分为几个小组,每个小组负责某件事。

而且,几乎所有项目参与者都是好负责人。 但这是我们的第一个商业项目。 我的团队非常棒,我们运作良好,但结果失败了。

工具包

工具是任何专业人员工作的关键组成部分。 没有正确的工具,正常的流程就不可能实现。 一个好的团队通常会有一个领导者,他知道谁需要什么工具以及从哪里获得工具。



资料库

在这个项目中,我们可以访问虚拟机上托管的共享数据库,这是可能获得的最慢的数据库之一。 自然,我们经历了这些工作的所有“乐趣”:数据丢失,下降表,对相同元素的同时操作。 这一切都减慢了我们的工作。

如果不执行备份和还原操作,我们将无法在本地或在云中复制数据库。 无法将“干净的”数据库置于与我们希望将其部署在不同环境中相同的状态。 该数据库只能作为我们服务器数据库的副本创建。

但是该项目仅与位于生产服务器上的数据库一起使用。 这意味着我们无法在本地测试数据库和项目。 当我们不得不将基地回落到某个点时,出现了好几次情况,因为晚上有人不小心将其摧毁。 这极大地阻碍了开发过程。

数据库迁移和更新是手动完成的。 那意味着……是的,我们又在浪费时间。

现在看来,开发人员应该在自己的计算机上拥有本地数据库。 此外,您必须使用自动迁移工具。 这为开发人员提供了在某些情况下进行操作的自由和空间。

性能表现

开发人员在本地计算机和测试项目的服务器上都需要高性能。 但是由于我们使用的工具较慢,因此我们甚至无法梦想。

许多人使用了已经使用了很多年的极其缓慢的设备。 键盘,触控板-所有这些都占用了时间。

如上所述,服务器也很慢。 结果,整个开发过程变慢了。 测试也进展缓慢。

结论很简单,采用企业标识的方式,是为开发人员提供正常开发过程所需的设备和资源。

源代码控制


通常情况很混乱。 我们使用了公司的源代码控制系统,但是问题不在软件中。 根本没有策略。 各个开发团队“各自为战”,并且何时将各个早午餐合并在一起,我们没有达成共识。 结果就是发生的事情:冲突,合并期间到处都是冲突。 必须花费大量时间来解决问题和正确的同步。

整合与部署

我们通常没有CI / CD解决方案。 部署很简单:我们从内置文件夹中复制了资源,然后使用远程桌面将它们粘贴到服务器上。 如果您做了类似的事情,您可以理解我的痛苦。

对于那些没有遇到问题的用户:如果缓冲区中除了必需的文件之外还有其他东西,这将杀死将文件上传到服务器。 如果团队中的其他人加入服务器以上传文件,那么您将遇到问题。 此外,某些文件可能已传输损坏。

我的建议是为自己选择CI / CD解决方案。

质量控制


开发过程的另一个重要元素是质量控制。



同行评审
这项工作与我们一起,团队成员聚在一起,观察完成的工作。 有时我们甚至不看代码,所以经历了很多片刻。 另一个问题是我们没有经验,这意味着了解什么是好的代码。 我们无法立即隔离经验丰富的开发人员立即看到的代码中的错误。

如果团队有一位高级开发人员,他将立即能够让我们知道问题出在哪里以及如何解决。 但是他不在那儿,我们独立工作。

测试人员

我们也没有。 我们自己进行了测试。 再次没有经验。 结果,我们花费了宝贵的时间来捕获错误并消除它们。

如果您想要好的代码,则需要测试人员和专业的人员。 开发人员并不总是解决软件测试的问题。

代码质量



旅程开始之初,我们许多人都是“复制过去”文化的代表。 这意味着开发人员将在Stackoverflow上寻求项目所需的解决方案,并插入所发现的内容而不会产生任何良心问题。 结果不是很好的代码,这实际上是不可读的,并且开发人员发现很难完全解释。 即使是复制特定站点的人,也常常无法弄清楚他的工作。

我只能建议一件事:如果您复制代码,则应该完全理解它。 没有这个,就无法实现正常的项目。

意大利面代码

对项目体系结构的不了解导致彻底混乱。 意大利面条代码是对最后发生的事情的一个软描述。

有些部分是由不同的开发人员通过不同的手完成的,每个部分都添加了不同的内容。 该项目的最终代码是一系列想法和“拐杖”。

我们没有依赖项注入系统,也没有使用任何常见的设计模式。 这导致许多不良代码刚刚开始“腐烂”。

我能说什么 代码的可读性与正确的操作一样重要,并且这两件事是齐头并进的。 清晰,一致的样式和一致的代码可提供最有效的结果。

结论


由于我们缺乏经验,出现了许多问题。 我们只是不知道如何进行该项目。 我们无法正确实施环境。 我们没有必要的工具和技术。

一个好的团队领导者将解决所有这些问题。 他会提前预见到的。

顺便说一句,项目本身并不是发生的最糟糕的事情。 到目前为止,我遇到了许多未来的同事,并与他们进行了交流。 获得了成为专业人士所需的经验。 我意识到没有适当的领导,即使是最有能力的团队也无法充分发挥其潜力。 没关系

Skillbox建议:

Source: https://habr.com/ru/post/zh-CN434532/


All Articles