在IT项目团队中组织工作流程

你好朋友。我经常看到相同的情况,尤其是在外包方面。各个项目的团队缺乏清晰的工作流程。



最重要的是,程序员不了解如何与客户以及彼此通信。如何建立持续的优质产品开发流程。如何计划工作日和冲刺。



最终,所有这些都会导致截止日期的中断,加班,应归咎于谁的持续摊牌以及客户的不满-一切在何处以及如何转移。通常,所有这些都会导致程序员甚至整个团队发生变化。客户流失,声誉下​​降等。



一次,我只是参加了这样一个项目,所有这些魅力都在那里。



没有人愿意为这个项目(一个大型的服务市场)承担责任,营业额很糟糕,客户只是被折磨和折磨。首席执行官曾经与我联系,并说您有必要的经验,所以这就是您的名片。自己承担项目。您搞砸了,我们将关闭项目并将所有人踢出局。事实证明,它会很酷,然后领导并根据自己的喜好开发它。结果,我成为该项目的团队负责人,一切都落在了我肩上。



我所做的第一件事是从头开始设计一个与当时的愿景相匹配的工作流程,并为团队撰写了一份工作说明。实施起来并不容易。但是一个月之内,一切都安定下来,开发人员和客户都习惯了,一切都变得安静而舒适。为了向团队展示这不仅是一场“风暴”,而且是摆脱困境的真实方法,我承担了最大的责任,从团队中消除了不愉快的习惯。



一年半过去了,该项目的开发没有加班,没有“老鼠赛跑”和各种压力。老团队中的某个人不想那样工作,然后离开了,相反,有人非常渴望透明规则的出现。但是结果是,团队中的每个人都非常有上进心,并且完全了解大型项目,包括前端和后端。包括代码库和所有业务逻辑。甚至达到了这样的地步,我们不仅是“行家”,而且我们自己也提出了许多业务所需的业务流程和新功能。



由于我们采用了这种方法,客户决定从我们公司订购另一个市场,这是个好消息。



由于它适用于我的项目,因此也许也可以对某人有所帮助。因此,有助于我们保存项目的过程本身:



项目“我最喜欢的项目”上的团队合作流程



a)内部团队流程(开发人员之间)



  • 所有任务都在Jira系统中创建
  • 每个任务应尽可能多地描述,并严格执行一个动作
  • 任何功能(如果足够复杂)都将分解为许多小的交换
  • 该团队致力于诸如单个任务之类的功能。首先,我们一起完成一项功能,将其发送以进行测试,然后进行下一项功能。
  • 每个任务都被标记为后端或前端
  • types牙和小虫有多种类型。您需要正确指示它们。
  • 完成任务后,它会转换为代码审查状态(这会为您的同事创建拉取请求)
  • 完成任务的人会立即跟踪他们完成任务的时间。
  • , , , , , .
  • , , ( ), , - . —
  • ,
  • ,
  • , , . ,
  • : To Do → In Development → Code Review → Ready deploy to dev → QA on dev → (Return to dev) → Ready deploy to prod → QA on prod → Done
  • , . , , .
  • . , .
  • .
  • , .
  • , , , , .
  • , , , , . ( ) . , /.
  • ( 12.00)
  • , , , . . , . , , .
  • , . .
  • , , , , .
  • . .
  • . , , . . , , , .
  • , . . .
  • , , . .
  • 每天,开发人员必须在客户的聊天记录中写下他昨天处理的任务以及他今天将处理的任务
  • 工作流程基于Scrum。一切都分为冲刺。每个冲刺持续两个星期。
  • 短跑可以创建,填补和关闭团队领导。
  • 如果项目有严格的期限,那么我们将尝试估算所有任务。我们从他们那里收集冲刺。如果客户尝试向冲刺添加更多任务,那么我们将设置优先级,并将其他一些任务转移到下一个冲刺。


b)与客户合作的过程



  • 每个开发人员都可以并且应该与客户沟通
  • 不允许客户强加自己的游戏规则。有必要以礼貌和友好的方式向客户表明我们是该领域的专家,只有我们必须建立工作流程并使客户参与其中
  • , , - , - (). . , , , .. , , , , , , .
  • /-/ .. /, .
  • . , , -, /.
  • , . , , . .
  • , . . , .
  • , , . , . , . , . .
  • , , . , . , .
  • 如果客户开始从脑海中提出不同的任务,开始幻想并用手指进行解释,那么我们要求他为我们提供页面布局和流程,其中包含应能充分描述整个布局及其元素行为的逻辑。
  • 在执行任何任务之前,我们必须确保此功能已包含在我们的协议/合同条款中。如果这是一项超出我们最初协议的新功能,那么我们必须明确评估该功能((预计交货时间+ 30%)x 2),并向客户表明这将花费我们很多时间,并且期限已变更估计的两倍。让我们更快地完成任务-太好了,每个人都只会从中受益。如果没有,那么我们有保险。


c)我们团队不接受的:



  • 选择性,缺乏集会,健忘
  • „ “. , , , .
  • , . , , :)
  • . , , . , , — . -, .
  • .
  • ! - - , .





还有一些其他问题/命题,有时我要求客户消除所有误解:



  1. 您的质量标准是什么?
  2. 您如何确定项目是否有问题?
  3. 违反我们关于更改/改进系统的所有建议和意见,所有风险仅由您承担
  4. 对项目的任何重大更改(例如,各种额外的流程)都将导致可能出现错误(当然,我们会修复)
  5. 几分钟无法理解该项目发生了什么类型的问题,甚至无法立即解决该问题。
  6. 我们致力于特定的流程产品(胖子中的任务-开发-测试-部署)。这意味着我们无法在聊天中响应全部请求和投诉。
  7. 程序员只是程序员,而不是专业的测试人员,无法确保项目测试的质量
  8. , , ( )
  9. ( ), ,
  10. — ,
  11. , , , ,
  12. , , , ,
  13. .
  14. , ( ),


通常,客户立即了解到,在软件开发中,一切都不是那么简单,仅凭愿望显然是不够的。



一般来说,仅此而已。我在幕后进行了很多谈判和所有过程的初始调试,但结果一切都完成了。我可以说这个过程对我们来说已经成为一种“银弹”。由于描述了所有过程,因此从第一天起就参加该项目的新人们可以立即参与工作,并且以图表形式的文档和架构立即让我们了解了我们在这里所做的一切。



PS:我想澄清一下,我们这边没有项目经理。它在客户方面。根本不是一个技术人员。该项目是欧洲的。所有交流仅以英文进行。



祝大家项目顺利。不要精疲力尽,并尝试改善您的流程。



来源在我的博客上



All Articles