首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序员如何在一个项目中协同工作?

程序员如何在一个项目中协同工作?
EN

Stack Overflow用户
提问于 2010-06-09 02:33:56
回答 13查看 20.8K关注 0票数 85

我总是一个人编程,我还是个学生,所以我从来没有和别人一起编程过,我以前甚至没有使用过版本控制系统。

我现在正在做一个项目,这个项目需要了解程序员如何在公司的一款软件上协同工作。

软件是如何编译的?是来自版本控制系统吗?它是由个人程序员编写的吗?它是周期性的吗?是在有人决定构建的时候还是什么时候?有没有什么测试可以确保它“工作”?

什么都行。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2010-06-09 03:00:22

实际上,这些流程有许多不同的变化,就像许多公司一样。含义:每家公司都有一些不同于其他公司的约定,但有一些在大多数地方普遍使用的通用最佳实践。

总是有用的最佳实践

  • All项目的源代码和构建它所需的任何东西都受到版本控制(也称为源代码控制)。任何人应该能够建立一个点击整个项目。

此外,不应该将不必要的文件(目标文件或编译的二进制文件)添加到存储库中,因为它们可以很容易地重新生成,并且只会浪费代码库中的空间。

  • 每个开发人员应该每天更新几次和 to the version control。大多数情况下,当他们完成了他们正在处理的任务,并对其进行了足够的测试,以便他们知道它不包含琐碎的错误时。

  • are:anyone应该能够通过一次点击来构建项目。这一点很重要,可以让每个人都能轻松地进行测试。如果非程序员(例如,老板)也能够这样做。(这让他们觉得能够看到团队正在做什么,开发人员应该测试他们正在添加的新功能或错误修复,然后他们将这些提交到服务器上,服务器定期(以预定的间隔)从存储库更新自己,并尝试在整个项目中构建。如果失败,它将向团队发送电子邮件以及对版本控制的最新提交(因为它未能构建哪个提交),以帮助调试问题。

这种实践称为持续集成,构建也称为夜间构建。

(这并不意味着开发人员不应该在自己的机器上构建和测试代码。如上所述,他们应该做that.)

  • Obviously,everyone应该熟悉项目的基本设计/架构,所以如果需要什么,团队的不同成员不必重新发明轮子。编写可重用的代码是一件好事,在团队成员之间需要某种形式的communication (

  • )。每个人都应该知道其他人在做什么,至少是一点。越多越好。这就是为什么每日站立测试在SCRUM teams.

  • Unit testing中很有用的原因。是一种非常好的实践,可以测试代码的基本功能。错误跟踪软件(有时也称为时间跟踪软件)是跟踪错误以及不同团队成员有哪些任务的非常好的方法。它对测试也很有好处:项目的alpha/beta测试人员可以通过这种方式与开发团队进行沟通。

这些简单的事情确保了项目不会失控,每个人都使用相同版本的代码。当事情变得非常糟糕时,持续集成过程会有所帮助。

它还可以防止人们提交未构建到主存储库的内容。

如果您想包含一个需要几天时间才能实现的新功能,并且会阻止其他人构建(和测试)该项目,请使用您的版本控制的分支功能。

如果这还不够,您也可以将其设置为进行自动化测试,前提是可以对相关项目进行自动化测试。

更多的想法

乍一看,上面的列表可能非常重要。我建议您在按需的基础上遵循它:从版本控制和bug跟踪器开始,然后设置持续集成服务器(如果您需要的话)。(如果是一个大型项目,您很快就会需要它。)开始为最重要的部分编写单元测试。如果这还不够,那就写更多吧。

一些有用的链接:

Continuous integrationDaily builds are your friendsVersion controlUnit testing

示例:

对于版本控制,我现在倾向于在我的个人项目中使用GitSubversion也很流行,例如,如果您使用的是Windows服务器,设置VisualSVN就非常容易。对于客户端来说,TortoiseSVN最适合很多人。Here is a comparison between Git and SVN.

对于缺陷跟踪软件,JiraBugzilla非常流行。我们在以前的工作场所也使用过Mantis

对于持续集成软件,Teamcity就是其中之一(同样,CruiseControl及其.NET counterpart也是值得注意的)。

回答你的问题“谁决定了项目的主要设计?”

当然,这将是主要的开发人员。

在公司中,首席开发人员是与项目的财务/营销人员交谈的人,并根据公司的财务能力、计划的特征、用户的需求和可用的时间来决定技术方案。

这是一项复杂的任务,通常涉及不止一个人。有时,团队成员也会被要求参与或集思广益,讨论整个项目或特定部分的设计。

票数 63
EN

Stack Overflow用户

发布于 2010-06-09 03:41:38

我也是一名学生,最近完成了一门软件工程课程,整个学期都由一个巨大的团队项目组成。首先我要说的是,我们可以用3个人完成我们12个人整个学期才能完成的事情。与人打交道是一件很艰难的事情。沟通是关键。

一定要使用存储库。每个人都可以远程访问所有代码,并添加/删除/更改任何内容。但subversion最好的部分是,如果有人破坏了代码,您可以恢复到较早的版本,并从那里评估哪里出了问题。然而,沟通仍然是关键,知道你的队友在做什么,这样就不会有冲突。也不要坐在你的代码上,快速、有意义地提交给存储库才是最有效的。

**我也推荐一个bug跟踪器,比如Redmine。您可以为每个人设置帐户,并分配具有不同优先级的任务,还可以跟踪并查看人们是否已经解决了某些问题,或者是否出现了更多问题。

而且,正如前面所说的,单元测试将会有很大帮助。祝你好运!希望这能有所帮助:-)

票数 13
EN

Stack Overflow用户

发布于 2010-06-09 20:27:16

程序员如何在公司的一款软件上协同工作

开发人员永远不会像团队一样工作。团队太烂了。Dilbert很有趣,并不是因为他像高飞那样是个滑稽的角色。他很有趣,因为他是真实的,人们能认出他所处的环境。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3000190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档