我总是一个人编程,我还是个学生,所以我从来没有和别人一起编程过,我以前甚至没有使用过版本控制系统。
我现在正在做一个项目,这个项目需要了解程序员如何在公司的一款软件上协同工作。
软件是如何编译的?是来自版本控制系统吗?它是由个人程序员编写的吗?它是周期性的吗?是在有人决定构建的时候还是什么时候?有没有什么测试可以确保它“工作”?
什么都行。
发布于 2010-06-09 03:00:22
实际上,这些流程有许多不同的变化,就像许多公司一样。含义:每家公司都有一些不同于其他公司的约定,但有一些在大多数地方普遍使用的通用最佳实践。
总是有用的最佳实践
此外,不应该将不必要的文件(目标文件或编译的二进制文件)添加到存储库中,因为它们可以很容易地重新生成,并且只会浪费代码库中的空间。
这种实践称为持续集成,构建也称为夜间构建。
(这并不意味着开发人员不应该在自己的机器上构建和测试代码。如上所述,他们应该做that.)
这些简单的事情确保了项目不会失控,每个人都使用相同版本的代码。当事情变得非常糟糕时,持续集成过程会有所帮助。
它还可以防止人们提交未构建到主存储库的内容。
如果您想包含一个需要几天时间才能实现的新功能,并且会阻止其他人构建(和测试)该项目,请使用您的版本控制的分支功能。
如果这还不够,您也可以将其设置为进行自动化测试,前提是可以对相关项目进行自动化测试。
更多的想法
乍一看,上面的列表可能非常重要。我建议您在按需的基础上遵循它:从版本控制和bug跟踪器开始,然后设置持续集成服务器(如果您需要的话)。(如果是一个大型项目,您很快就会需要它。)开始为最重要的部分编写单元测试。如果这还不够,那就写更多吧。
一些有用的链接:
Continuous integration、Daily builds are your friends、Version control、Unit testing
示例:
对于版本控制,我现在倾向于在我的个人项目中使用Git。Subversion也很流行,例如,如果您使用的是Windows服务器,设置VisualSVN就非常容易。对于客户端来说,TortoiseSVN最适合很多人。Here is a comparison between Git and SVN.
对于缺陷跟踪软件,Jira和Bugzilla非常流行。我们在以前的工作场所也使用过Mantis。
对于持续集成软件,Teamcity就是其中之一(同样,CruiseControl及其.NET counterpart也是值得注意的)。
回答你的问题“谁决定了项目的主要设计?”
当然,这将是主要的开发人员。
在公司中,首席开发人员是与项目的财务/营销人员交谈的人,并根据公司的财务能力、计划的特征、用户的需求和可用的时间来决定技术方案。
这是一项复杂的任务,通常涉及不止一个人。有时,团队成员也会被要求参与或集思广益,讨论整个项目或特定部分的设计。
发布于 2010-06-09 03:41:38
我也是一名学生,最近完成了一门软件工程课程,整个学期都由一个巨大的团队项目组成。首先我要说的是,我们可以用3个人完成我们12个人整个学期才能完成的事情。与人打交道是一件很艰难的事情。沟通是关键。
一定要使用存储库。每个人都可以远程访问所有代码,并添加/删除/更改任何内容。但subversion最好的部分是,如果有人破坏了代码,您可以恢复到较早的版本,并从那里评估哪里出了问题。然而,沟通仍然是关键,知道你的队友在做什么,这样就不会有冲突。也不要坐在你的代码上,快速、有意义地提交给存储库才是最有效的。
**我也推荐一个bug跟踪器,比如Redmine。您可以为每个人设置帐户,并分配具有不同优先级的任务,还可以跟踪并查看人们是否已经解决了某些问题,或者是否出现了更多问题。
而且,正如前面所说的,单元测试将会有很大帮助。祝你好运!希望这能有所帮助:-)
发布于 2010-06-09 20:27:16
程序员如何在公司的一款软件上协同工作
开发人员永远不会像团队一样工作。团队太烂了。Dilbert很有趣,并不是因为他像高飞那样是个滑稽的角色。他很有趣,因为他是真实的,人们能认出他所处的环境。

https://stackoverflow.com/questions/3000190
复制相似问题