您将在此软件开发项目清单中添加什么?[关闭]


14

我是清单的忠实粉丝。有旅行清单移动清单甚至是Scrum清单

上下文:您已被一家大公司雇用,并承担了建立整个软件开发环境,流程,团队等的任务。您将负责创建软件的工作增量。项目规模:2000人/天。

您将哪些项目添加到以下清单(故意是小的和不完整的)清单中:

  • 安装持续集成服务器
  • 编写国防部
  • 撰写一页编码指南
  • 创建产品积压
  • 安装错误跟踪系统
  • 安排定期面对面时间

Answers:


10

* 1.)与开发人员交谈,看看他们真正需要什么!*

2.)研究一种可真正快速启动多个环境的解决方案(如果您不符合流行语,请考虑使用公共或私有云实例或老式虚拟机)

3.)源/版本控制

4.)代码审核系统(以Crucbile / Fisheye为例)

5.)看板墙(或类似的东西)

6.)通信协议(实时聊天是一大优势),Wiki也鼓励协作。这也涵盖了内部的公共关系-您将如何与企业主,技术支持人员和其他团体互动?

7.)电子白板

8.)为开发人员提供舒适的环境(沙发,桌子,休闲区,良好的WiFi等)

9.)很棒的咖啡!!!


咖啡改变了:)+ 1
澳洲联储

您使用什么电子白板?

@Pierre 303-打印白板会议的结果a(我猜高质量的照片会起到同样的作用)。
Martijn Verburg 2010年

8
  • 工具链设置 -IDE,CI服务器,代码质量服务器,源代码控制,Web服务器,数据库,问题跟踪器等。
  • 备份 -团队中每个人都扮演什么角色?他“拥有”哪些进程/模块,谁是他的备份?
  • (用户接受)测试环境设置-不仅持续集成w。单元测试,但集成测试涵盖了真正的坏处,多个平台,应用程序服务器,VM等。
  • 性能测试设置-越早越好,因为您将需要历史数据来回答“性能下降得那么严重的原因是哪个功能/里程碑?”
  • (最终用户)文档概述 -文档中将包含哪些内容?需要什么类型的文档?
  • 营销渠道 -如何宣布内部里程碑和外部版本?您对软件有一个很酷的名称,徽标,颜色,文字等吗?
  • 内部沟通 -如何从其他团队的同事那里得知变化?协作如何进行?维基?访问权?
  • 质量保证人员和流程-谁来测试什么,多久测试一次以及使用什么标准?
  • 发布过程 -时间,频率,方式,执行者,接收发布者等。
  • 风险管理 -最坏情况(从项目mgmt pov和运行时pov,例如“由于软件在模块X发生故障,客户正在亏损,备份计划是什么?)
  • 保护核心开发环境,例如将其虚拟化以用于托管
  • 正式和非正式会议的地点
  • 为所有人提供培训或介绍,因此他们知道所有设置是什么,每个零件的用途以及如何使用它。
  • 识别看守人,并给他所有必要的东西(例如权限),以便他在情况变坏时实际需要照顾的一切

+1用于备份和培训
Liviu T. 2010年

备份,尽管我认为其中有些是多余的。
BlackICE 2010年

5

事后审查 -由于您正在按区块进行工作,因此我将安排一到两个小时的审查(取决于团队规模),以便召开面对面的会议(如果可能),每个人都去讨论并说正确的做法,可以做得更好,不需要什么。能够尽早从开发过程中的错误中吸取教训,这意味着您可以避免在没有足够时间进行处理时再做这些错误。


4

让我们从为您的项目雇用一支由合适的专业人员组成的优秀团队开始。在典型的业务应用程序中,您至少需要聘请数据库开发人员和数据库管理员,质量检查人员,系统管理员,业务分析师,应用程序开发人员,UI专家和团队负责人。DBA,System Admin,业务分析师和QA应该与开发团队位于单独的报告链中。开发数据库专家应向应用程序开发人员和UI专家报告相同的技术负责人。

设置办公空间。如果可以的话,私人办公室是个很好的选择(我希望您对此感到很幸运),但是至少要有办公桌,电话,电脑,白板和几个专用的会议室。确保有午餐休息的地方,冰箱,汽水,小吃和咖啡。免费提供软饮料和咖啡。

为应用程序和数据库设置dev / qa / staging和prod服务器。数据库不应与应用程序位于同一服务器上。根据项目的大小和范围,每个环境可能需要多个服务器或SAN等。

设置服务器后,立即安排文件系统,数据库和数据库事务日志的备份。设置第一天就要做。雇用像Iron Mountain这样的公司每周进行异地备份。

设置源代码管理系统并创建描述其使用方式的文档。不要忘记坚持所有数据库结构更改和查找类型表的数据插入都应在源代码管理的脚本中。这将使部署更加容易。

购买商业软件或为您决定与所有相关用户一起使用许可证的工具集下载开源软件。

购买开发者机器,它们尖叫得很快并且有两个监视器。购买至少一台测试设备,该设备运行缓慢,并且具有典型的用户台式机性能。

培训新开发人员如何完成任务。如果您的团队规模足够大,可以聘请一些初级开发人员,则可以为他们安排额外的培训,并将时间包括在项目计划中。至少三个月密切监视初级人员。在第一个月密切监视所有新员工。尽快摆脱枯燥无味的开发人员。

确定需要以什么顺序(关键路径)完成什么。在关键任务结束之前,请勿在关键路径的末尾分配任务。

创建测试计划和要求。

与客户定期安排进度会议。他们应该知道您在做什么以及遇到什么障碍。不要不告诉他们什么时候会迟到。如果您距离最后期限还有三周时间,并且您已经知道自己会错过最后期限,那么在您必须告诉客户之前,这种赤字不会神奇地消失。确保客户知道增加的需求意味着增加的成本和时间,并且每一项增加的需求要么必须放弃其他任务,要么最后期限将因新任务的小时数而改变。从一开始就明确这一点,将节省大量的痛苦和加班时间,并且使您的小组而不是客户承担的费用超支。

设置一个环境进行性能测试,不仅要测试一个用户的速度,还要测试一个可以同时预期的用户数的环境。在上线之前的一天,不要等待进行此测试。

在项目计划中,假设质量检查人员会发现错误,并且需要花费一些时间进行修复。最后不要只安排一天的质量检查。

创建大致与您认为数据库大小相同的测试数据。让所有开发人员针对这种大小的数据库测试其代码。不允许开发人员仅在其个人计算机上针对小型数据库进行开发。这是导致代码正常运行的一个常见原因,直到它正式投入生产。

将奖励计入预算。当人们坚持不懈地工作数月且只有经理人获得奖金时,这会激励人们。还要经常以书面形式表示谢谢。

您可能需要项目管理系统或至少设置电子表格来跟踪需要跟踪的内容。在进行项目计划时,假设您每天的计划时间不得超过六个小时。这有助于说明将花费在项目上的时间,例如休假,病假,假期,人力资源会议,绩效评估等。 (从美国的11月1日到1月1日),您可能需要为更多的假期和休假时间分配额外的津贴。期望开发人员放弃休假和假期是不公平的,没有人能够预测何时会发生诸如病假,陪审义务,丧亲时间等事件。假设他们将在您的团队中发生此项目。


我认为测试用户机器应该是“抱怨缓慢”,而不是“尖叫缓慢”;)非常好的列表。
BlackICE 2010年

@david,我喜欢您的建议,并在文本中进行了更改。
HLGEM

很好的答案-项目符号点或部分名称可能会有所帮助。
JBRWilkinson 2010年

3

我在问题和后续答案中看不到的一些内容:

  • 灾难恢复计划。您如何备份开发箱,暂存,测试等?每个开发人员在偶尔的下雪天都有在家工作的需要吗?等等。

  • 培训计划。您的开发人员每年需要培训几周以保持精明?有人追踪吗?(对于大多数团队来说,一个摊贩就足够了。)有一种机制让他们报告(向某人发送电子邮件,说他们观看了2个小时的“任何内容”网络广播),并且管理层可以进行计划-例如,我们应该将谁发送给今年的会议。

  • 工具位置。这是“我们为您提供了所有MSDN订阅;请不要在您的工作机上安装其他任何东西”还是“我们想要您的代码,但我们不在乎您使用什么来编辑,编译和测试它”那种地方。做出并记录决策。

  • 您可以承受或负担得起的尽可能多的集成ALM。通常,“阻抗不匹配”,重复输入,工具重叠以及转椅应用程序集成的原因是系统一点一点地增长。从头开始,您想表明您的员工可以在整个周期中停留在一个工具中。不使用X输入代码,不使用Y进行编译,不使用Z进行测试,使用A更改工作项/任务的状态,报告他们在B上花费的时间,告诉正在等待的人现在可以继续使用C,试图弄清楚列出D下一步要做什么,以E衡量总体进度,等等。


2

协商更多的工作日。

人们最初分配足够的钱时,这是罕见的事件。

[以后... 重新协商 ...]


我建议不要以为必须始终协商更多的工作日,我希望提供准确或可靠的工作或项目工期估算。
NimChimpsky 2010年

@NimChimpsky最近在这里讨论了可靠估计能力是否是计算机项目中的神话。除非这项工作众所周知,并且没有任何研究,否则本质上很难预测时间。即使您可以预测自己团队的日程安排,也几乎不可能预测外部因素和延迟。因此,我认为总体上不存在“准确而可靠”的估算。
Orbling 2010年

@Orbling他们存在于我工作的地方。英国一家在ftse 250上市的国家零售商。有些项目迟到了,但没有那么晚,它们是例外。
NimChimpsky 2010年

@NimChimpsky如果您完全控制了一个项目中的所有可交付成果,没有受到外部因素的干扰,并且手头的任务不涉及任何研究,则可以获得相对准确的估计。提供您的预算可以进行时间估计之前的全面分析。在大多数公司中,在开始预算之前就没有足够的预算来进行调查。
2010年

@orbling总是要求更多的时间纯粹是武断的,而不是完全基于证据,可交付成果,分析或预算。
NimChimpsky 2010年

2

看来我对第三方库及其用法有最大的疑问:

  1. 确定要使用的库和版本。
  2. 创建将库更新集成到项目中的过程。
  3. 确保开发人员都可以选择库。
  4. 创建一个有益的渠道来公开讨论所使用的技术。

为什么?我无法告诉您第三方库(专有)发生严重错误的次数,这些错误使我们退回了数周的开发时间,这是因为我们没有向上或向下移动的过程。或与开发人员打交道,“您使用的是哪个版本?为什么使用标记为不推荐使用的功能?”


1

对于组织而言,高昂的成本并未在整个开发生命周期中将预算分配给安全性,这意味着安全性通常是在效率低下,代价高昂的活动或控制措施实施得太迟而无法起到很大作用之后才出现的。

与关键的里程碑一样,从初始项目计划中构建安全性,与在开发的所有其他方面一样,并使用迭代过程使安全性指南保持最新。来自安全性的最终签发应该是十项毫无疑问的检查,以确保所有安全控制措施均已按照设计实施。

否则,您将在实施后最终运行安全性-可能花费8到10倍的安全性(来自Gartner,IBM和其他公司的数据),会使人感到不安,因为功能可能受到影响,并且为时已晚,无法阻止开发和损害。


我很好奇,这应该是项目设置清单的一部分吗?我把它作为软件开发的一部分,但是我对项目设置一无所知。我已经将其与开发里程碑联系在一起,但是我不认为这就是OP所要求的,我可能是错的。
BlackICE 2010年

大卫-也许您是对的,不应在此提供详细信息,但我认为至少应该有一个用于安全性的订单项。更好?
罗里·阿尔索普2010年

1

1.交给团队

问程序员!真的,那是最重要的。如果开发人员未直接参与此更改,您将遇到很多阻力。毕竟,这是关于它们如何工作的,而不是您。不用说,但是试图迫使人们使用方法和工具通常会适得其反。

2.检查和适应

让您的团队找出最佳的工作方式,利用您的经验来帮助他们顺利走上所选择的轨道。然后,定期和协作地回顾您(他们)的工作方式,并调整流程以使其变得更好。

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.