与我从未见过的一群人一起编程


50

我已经从AP计算机科学课分配了一个小组项目,并且我需要与其他三个人一起工作。我以前从未与他们交谈过,我不知道他们的技能水平,而我所拥有的只是他们的电子邮件地址。总结起来,作业是这样的:

“作为一个团队,您将至少完成一个课程的三个模块。...”

我将尝试成为“队长”,因为他们都没有尝试彼此联系,但我很好奇:该怎么做?我已经给他们发送了电子邮件,并询问他们是否有比彼此发送电子邮件更喜欢的交流方式,但是一旦我们真正开始该项目,我就必须弄清楚谁在做什么。

我该怎么办?我如何“负责”并领导三个我从未认识的人?

这是实际作业的摘录:

因此,您需要在本周初讨论每个团队成员将在此项目中扮演的各种角色。您可以通过Pronto(或Blackboard IM),电子邮件,Wiki,Google组,博客或您认为合适的任何其他方式进行通信。如果小组成员在一周结束前仍未加入小组,请告知您的教练,他们将提供其他指导。
...
在项目结束时还将进行团队评估,您将在其中评估每个团队成员对该项目完成的贡献以及建议的等级。

编辑:许多人建议我在咖啡厅见他们,或类似的东西。唯一的问题是,我们所有人都处在不同的状态。我还发现其中一个不允许使用Facebook / Skype / twitter,因此我不得不求助于Yahoo Messenger和电子邮件。


10
与“与这个人交谈”,“了解他们”,“听取他们在该项目中想要的东西”和“用您的思想思考”,而不是向SE询问方向...那会如何呢?这里没有人认识他们。我的意思是,如果他们有一些行为失常,如果他们处于当权者的位置,问路可能是有道理的……但是那些只是像你这样的人。您正处于沙箱中:是时候解决问题了。
ZJR 2012年

6
@zjr谁烧了你的鹅?当然,我正在与他们合作,并试图找出解决方案。但是我想从以前处理过此任务的人员那里得到一些建议,而不仅仅是盲目地做这个项目。人们还提到了一些很棒的项目管理应用程序,我学到了一些新东西。
加百利

2
@ZJR我不确定这是他的问题的重点。尽管他说他以前从未真正与他们进行过沟通,但他的问题是关于这是一个编程项目,以及他应该如何与已经给予处理的团队进行沟通。
Jarrod Nettles 2012年

Answers:


90

这个项目的负责人将是一开始就负责并负责的人。

这适用于生活中的大多数事物,而不仅仅是软件开发。当其他人像没有头的鸡到处乱跑时,思考问题的人向前走说:“ 这就是我们要做的事情,也是我们要做的事情。” 通常是该人在其余项目中被视为领导者。请记住,这样做对项目的最终成败负有责任。

您想领导这个项目吗?您可以立即采取以下几项措施来产生重大影响。

  1. 使用Trello这样的项目管理工具,将邀请发送给所有人,然后开始将项目的各个部分分配给其他人。
  2. 生成错误数据库并开始添加任务和错误-再次,只需开始分配即可。
  3. 设置版本控制存储库,并检入每个人都可以使用的良好的初始代码块。拒绝处理任何其他形式的代码控制。
  4. 通过向他们展示如何使用版本控制系统和错误数据库来帮助人们进行开发。
  5. 每周发送一封电子邮件,详细说明项目的状态以及前一周的进度。

这些步骤都不是特别困难或费时的,但它们将为您节省大量的时间。此外,这将使您的团队互相交谈,并使他们习惯于看到您负责。


17
如果两个团队成员尝试这种方法,请当心。控制和领导的斗争可能是一场灾难-比一群无所事事的队友还要糟糕。
科宾2012年3

3
@CorbinMarch同意。这仅在团队中明显缺乏领导才能时才有效-每个人都在等待别人推动事情发展。如果已经有其他人成为领导者,那么您可以为项目做的最好的事情就是支持该人并给予支持。
Jarrod Nettles'2

4
读完这篇文章后,我检查了Trello,并立即被它的简单性所吸引。+1的链接。如果有一种方法可以在本地安装此东西,那将是最完美的东西……
Radu Murzea 2012年

2
The leader of this project will be the person who steps up and takes charge at the beginning.所有人都
称赞

5
首先只是在咖啡店见他们怎么样?如果您不知道他们具有什么技能,该如何为他们分配任务?就个人而言,我不喜欢在没有与任何人见面之前收到电子邮件“这里是Trello,这是一个错误跟踪器,这是您的任务”。
西蒙(Simon)

24

Jarrod Nettles的回答几乎总结了我要提出的很多建议,因此,我将介绍在类似情况下我最近的经验中起作用的一些内容。

我建议找到某种与他们进行口头交谈的方法,而不是通过电子邮件。如果您不在同一地区,请在Skype上将它们全部保存。如果您在该地区,请在咖啡馆或其他地点与他们会面。在初次会议上亲自讲话会导致您实际做出决定并在那里完成工作;电子邮件线程可让那些害羞或经常不在计算机旁的人来阻止这个过程-我们都知道学生会变得多么懒惰!

在您的第一次会议中,我会尝试与您的团队结识,而不是尝试继续进行该项目-但不要忽略该项目!在4个人中,花10到20分钟破冰可能就足够了。

当谈到项目时,我建议遍历认为项目涉及的内容。我认为重要的是您必须清楚这是您的理解,而不是告诉他们确切的操作方法。每个人如果有想法,都应该能够将他们的想法和想法付诸实践。您应该从初次会议中走出来,并且对团队整体感觉到您有什么体面的理解。

在以后的(例行)会议中,您可以开始更详细地研究项目的不同方面;例如,仔细研究需要做什么,需要什么资源和需要多少时间以及谁可以做什么。如有必要,将其进一步拆分。也许尝试设定一些软性的期限?


4
+1代表语音联络人。面对面最好,视频聊天其次,电话会议仍然比邮件更好。
Barend '02

@andybursh不幸的是,一个学生甚至都不允许使用facebook。因此,Skype是不可能的……希望我们可以通过文本弄清楚事情。
加百利

10

你们中的任何人是否有过与从未在网上认识的一群人一起工作的经验,并且您无法亲自见面,但必须共同完成一个项目?

再加上预算不足,可笑的截止日期,以及通过市场营销而流拍的声音,这听起来像现实世界中软件开发项目的大约65%。

最好让人们自愿参加他们感兴趣的部分,而不是单方面负责和分配任务。他们可能都坐在那里,思考如何负责。或者,他们如何获得一些可怜的草皮,这些草皮太在意他们无法完成所有小组作业,因此他们可以骑上他的成绩。


2
您忘记了这样一个事实,我们许多人必须与我们从未见过的离岸团队合作。
maple_shaft

7

在这种情况下,要做的第一件事是建立问题跟踪器并学习如何使用它。

有关如何按照您的描述处理开发的更基本介绍,我最喜欢的参考文献是Martin Fowler的文章“ 将敏捷软件过程用于离岸开发”。本文概述了建立分布式团队沟通的基础知识和高级概念:

Use Continuous Integration to Avoid Integration Headaches
Have Each Site Send Ambassadors to the Other Sites
Use Contact Visits to build trust
Don't Underestimate the Culture Change
Use wikis to contain common information
Use Test Scripts to Help Understand the Requirements
Use Regular Builds to Get Feedback on Functionality
Use Regular Short Status Meetings
Use Short Iterations
Use an Iteration Planning Meeting that's Tailored for Remote Sites
When Moving a Code Base, Bug Fixing Makes a Good Start
Separate teams by functionality not activity
Expect to need more documents.
Get multiple communication modes working early

对于您的项目,您当然不能遵循那里提到的所有提示和技巧(例如,可能没有大使或联系访问:),但是还是值得研究的。

  • 对于许多拥有以上所有条件的球队来说,肯定是过大了。不过,我发现拥有这样一个全面的检查清单确实很有帮助-以便即使跳过的项目也能得到检查并有明确记录的拒绝原因-只是确保没有遗漏任何重要内容。

6
我同意这些观点,但他的团队只在一起了很短的时间,而这些建议中的大多数对于他的需求来说都是严重的过大。但是非常适用于更高级的永久团队。
Jarrod Nettles 2012年

@JarrodNettles很好,谢谢-我更新了答案
gnat 2012年

3
...是的,让我们将它们快速带入官僚机构的地狱,而不是让它们产生任何真实的代码。请。
ZJR 2012年

1
@ZJR正如我说的那样,对于这种项目,他的清单并不多,但是适当的团队和代码组织将使他们能够生产有效的代码,而不仅仅是在屏幕上显示代码。
Jarrod Nettles 2012年

@ZJR非常适合Fowler列出的内容,我更喜欢遵循“官僚”标准。发明我自己的创新方式来跟踪错误,集成代码更改和共享团队知识的想法以某种方式
无法解决

5

您没有告诉我们您有多少时间,或者您使用的语言是多少(我想说一堂课很小,但也许用您的语言来说要多得多)。

首先,不惜任何代价获得有效的产品。

如果该项目持续两周或更短的时间,请假设您将是唯一做任何事情的人,并对获得的任何帮助感到非常高兴。尝试为每个人安排事情,但要确保如果没有人做任何事情,您仍然可以使用。即使有人做某事,也不要继续依靠他们:为任何人随时退出做好准备。

如果您有一周以上的时间,请考虑安排在一周中的某一天将产品标记为里程碑,并尽可能遵守。确保有什么可以解决的不足之处:如果最坏的情况到了最坏的情况,这将是您的工作。每创建一个人,您都会看到可以改进的地方,这将激励您去做上。不要计划得太远:当然,您需要对最终目标有所了解,但短期内要保留最具体的计划。

注意,这两个部分有点重叠:这是有意的,因为我认为两周是一个灰色区域,很难完成两次迭代,但是仅一次迭代是有风险的。

我假设最坏的情况是,您将与刚接触编程的人员一起工作。我的一般建议是:

  • 列出您要很快实现的功能以及将使用这些功能的人员。Jarrod建议了Trello,我完全支持:如果您的队友经验不足,那会很有帮助。您也可以尝试将错误保留在那里。
  • 四人一组,您需要版本控制。如果他们不知道如何工作,可能会使其他人更不愿意捐款,但这是值得的。
  • 任何外部依赖关系都可能吓跑新手。如果编写单元测试,请告诉人们不要担心打破它们。告诉人们他们不应该担心破坏构建,特别是在开始时。纠正不提交任何代码的人比提交错误代码的人要难得多。
  • 检查此处建议的内容是否真的适用于您。“持续集成”是一个奇特的术语-对于一个小型程序,可能意味着“该程序运行并且所有功能都可以使用”。您是否有网站?分成小组对您有帮助吗?
  • YAGNI,一百倍以上。如果确实需要,请事先为自己准备的功能写一些东西。使它正常工作,然后进行重构,否则您将无法解决它。
  • 重构。工作正常后,花点时间修复它。别忘了您的队友也必须阅读您的代码:花一天的时间修复难看的东西,用性能更好的解决方案替换简单的解决方案就不会浪费一天。
  • 密切注意所有零件。略读变更日志并偶尔阅读他人的代码有助于确保所有内容均符合您认为应该执行的质量标准,并确保如果该人辍学也不会那么费劲。
  • 不要犹豫,去做最重要的事情,而不是您指定的事情。如果某人落后于进度,请在某处做书面记录,然后自己动手做。首先问他们,但是如果他们不回答,或者您问一两次,然后觉得他们仍然不会回答,请继续。
  • 专注于做自己引以为傲的事情。即使它偏离了作业。即使您不得不削减一些重要功能,而是为了使自己的功能更加流畅。每次迭代都认为“我为此感到骄傲吗?”,然后在下一个迭代中,尝试解决这些问题。

我最近有一个失败的项目。您可以阅读我对为何失败的想法,但这总结了如果有机会我将如何做这样的事情。


有趣的读物,我曾经遇到过类似的情况,而且似乎有些失败很常见
Joe Taylor

4

Jarrod Nettles的答案很好。我将添加以下内容:

  1. 期望其他三个人中至少有一个完全没有用。
  2. 只是接受您会觉得自己正在完成大部分(或全部)工作,但每个人都会得到同等的信誉。任何试图使事情“公平”的尝试只会引起不必要的冲突,并使您的速度放慢。
  3. 与任何优秀的团队成员保持联系。很难找到这样的人,您将希望再次与他们合作。

我不同意你的前两点。不要指望最坏的人,否则你会得到的。您会产生怨恨,如果有用的团队成员感到您不屑一顾,他们可能会失去支持。指导那个不熟悉该语言的孩子可以是很好的经验,可以减轻您的工作负担。(但是要留意拒绝思考的水。)此外,该项目具有“团队评估”,因此凡从事此工作的人都可以得到好评。(或者,使每个人都觉得自己像泥泞的人一事无成。)说实话,不要担心什么都不做的人会失败。这对您的团队来说是公平的。
idbrii'2

3

我已经多次担任过类似职位,因为我肯定有很多人。不过,最主要的是尽力让每个人保持满意和快乐,所以我认为您愿意承担团队领导者的任务是一件好事,但是像上面提到的某人一样,确实需要像其他人一样谨慎对待可能会觉得他们应该做这份工作。

我知道您说过,没有人愿意承担彼此之间的联系,但是有时候对人们而言,这些情况可能会很困难,就像您说的是与从未见过的人一起工作,并且很难沟通等。

首先,我将向所有人发送电子邮件,让他们知道您是谁,您应该如何处理该项目,并让您知道您想领导该项目,负责设定角色,目标,截止日期,沟通时间,聚会(如果需要/期望)和项目更新。

尽管您无法完全影响他人,但您可以跟踪谁在做什么和谁没有做什么。委派工作可以将工作平均分配给具有不同技能或水平的人员。

这样,如果某些工作没有完成,您可以自己承担将工作划分为真正热衷于从事这项工作的人们的职责。这样,您最终不会以失败的项目结束,并且您将拥有尝试交流日期,时间和所有出错时可以显示的所有相关信息的记录。如果有人不减轻体重,所有使您处于正确状态的事情。

在提示方面:

我个人喜欢这里的协作工作环境:https : //docs.google.com/

这使您可以共享Word文档,电子表格等。这是一种很好的协作方式。我不能强调有时候这是多么有用。我与目前不在该国工作的一些人一起使用它。

希望这对某人有所帮助,领导一个项目有很多方面,我们可以永远进行下去,但这取决于很多事情。至少这有一点帮助。


欢迎来到P.SE!+1此处的建议。好建议。
Jarrod Nettles 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.