Questions tagged «project-management»

项目管理是规划,组织,保护和管理资源以实现特定目标的学科。

12
我的客户希望在我当前的项目中获得25%的评论,如何做出反应?[关闭]
初级开发人员在这里。 我目前正在为我公司的大客户开发Web应用程序。我上个月开始的。客户希望在其每个软件项目中至少获得25%的评论。 我检查了以前的应用程序的代码,这是我的观察结果: 每个文件都以注释块开头(程序包,最后更新日期,我的公司名称和版权) 所有变量均以其名称注释 // nameOfCustomer public String nameOfCustomer 所有的getter和setter方法都被评论了 很少有用的评论 似乎开发人员只是提出了尽可能多的评论,以达到25%的门槛,无论质量和实用性如何。我的公司告诉我,“我们按照客户的要求去做”。 我没有直接与客户谈论此事。到目前为止,这是我的论点: 没用的线来读书和写字(浪费时间) 注释有时未更新(造成混淆的原因) 开发人员不太可能使用或信任真正有用的评论 您对这个问题有何建议?我应该如何处理这种情况?

14
我如何才能避免总是觉得自己完全从头开始重建程序,会做得更好呢?[关闭]
我已经学到了大量的编码,但是,它始终处于科学环境(不是计算机科学)中,完全是自学成才,没有任何人可以指导我正确的方向。因此,我的编码之旅一直很……混乱。我现在已经注意到,无论何时构建某种类型的程序,最终我都知道如何能够更加优雅,高效,灵活,易于管理地完成它。在某些情况下,我实际上回过头来重新构建了东西,但是通常这实际上是不可行的。尽管到目前为止我的大多数程序都相对较小,但是每次创建东西时都完全重写大型程序似乎很笨拙。 我只是想知道,这是正常的经历吗?如果没有,您如何防止这种情况发生?我已经尝试过预先计划一些事情,但是直到开始编写一些代码之前,我似乎无法真正预见到一切。

12
我的项目需要多大才能进行单元测试?[关闭]
我认为我的项目已解耦到足以进行单元测试的程度。但是,就笔迹和功能而言,我的项目到底需要多大才能使单元测试值得? 我们都会犯错,没有人能做到完美,但是我认为自己是一个体面的程序员,可以逐步解决小项目的错误。还是您的项目规模不限,都必须进行单元测试?

11
DRY是软件项目管理的敌人吗?
DRY是软件开发中最基本且被广泛接受的原则之一(请不要重复自己)。同样清楚的是,大多数软件项目都需要某种管理。 现在有哪些易于管理的任务(估算,计划,控制)?正确的重复性任务,正是按照DRY应该避免的任务。 因此,从项目管理的角度来看,最好通过将现有代码复制100次并根据需要对每个副本进行一些较小的改动来解决任务。在任何时候,您都确切知道您已经完成了多少工作,还剩下多少。所有的经理都会爱你。 相反,如果您应用DRY原理并尝试找到某种或多或少消除重复代码的抽象,则情况有所不同。通常情况下有很多可能性,您必须做出决定,进行研究,发挥创造力。您可能会在较短的时间内提出更好的解决方案,但是您也可能会失败。大多数时候,您无法真正说出还剩下多少工作。您是项目经理的噩梦。 我当然在夸张,但显然存在两难选择。我的问题是:决定开发人员是否过度使用DRY的标准是什么?我们如何找到一个妥协的解决方案?还是有一种方法可以完全克服这一难题,而不仅仅是找到折衷方案? 注意:此问题基于与我上一个主题相同的思想,即软件开发中的日常工作量及其对估计的影响,但我认为这使我的观点更加清楚,非常抱歉重复我的一遍:)。

20
您如何处理项目经理
我目前在一家最近裁员的公司工作。我负责所有内部工作,客户端安装,构建,质量检查,以及基本上所有内部工作。 我的直接上司非常非技术性,最近我发现很难解决他的知识不足。 我遇到的最大问题如下: 我一次有很多截止日期。我停下来整理半个快速报价,因为我不能在截止日期之前迟到,与此同时,出现了三个支持电话,我给报价,报价时间太多,所以他们外包了。然后,我必须修复供应商破坏的所有东西,这使我落伍了。最糟糕的是,如果我在一个我什至没有参与的项目中吃掉了“他的缓冲区”,那么我期望在其他所有事情都出现的同时,完成已经排定的一切。 我被问到问题到来时,为什么会发生问题并进行详细说明,但是这个细节对他来说绝对没有任何意义。 他只关心截止日期,但他是安排一切的人。 “我不是程序员,也不是平面设计师,对他而言毫无意义” 我被聘为.NET程序员,但他们让供应商为许多站点选择了wordpress(是的,我必须快速学习所有内容) 我想我可以继续下去,但是有人必须与这种类型的项目经理打交道吗?除了找工作以外,还有什么建议? 我的妻子现在病重,我现在不能丢掉保险,因为我现在不能失去保险。 我正在寻找与经理打交道的最佳方法。 在此先感谢您,我将其作为Wiki,因此请不要关闭。 这是今天发生的另一种情况。我们有一个朋友帮助我进行项目。他要求我们“两个”都引用一份工作,并给出一个粗略的估计。我回到他身边说:“一天7个星期,每天6个小时,用我的朋友作为资源。” 他将其交给客户并添加了10%的缓冲区(24小时)。然后他告诉我,这就是我在该项目上得到我朋友的全部。没问我这七个星期有多少时间。最糟糕的是,他们已经把报价交给了客户,甚至没有让我审查。他的观点很不错,您可以在我告诉他的时候就完成工作,或者找到另一份工作。

7
如何管理软件项目中的意外复杂性
当问到Murray Gell-Mann时,Richard Feynman如何解决了这么多难题时,Gell-Mann回答说Feynman有一个算法: 写下问题。 认真思考。 写下解决方案。 盖尔曼(Gell-Mann)试图解释说,费曼是另一种类型的问题解决者,研究他的方法没有任何见识。对于管理中型/大型软件项目的复杂性,我有点相同的感觉。优秀的人天生就是擅长的,并且设法以某种方式分层和堆叠各种抽象,以使整个事物易于管理,而不会引起任何不必要的麻烦。 那么,费曼算法是管理意外复杂性的唯一方法,还是软件工程师可以始终如一地应用实际方法来应对意外复杂性?

15
开发人员应如何拒绝不可能的要求?[关闭]
这是我面临的问题: 来自项目经理的报价: 嘿Spark,我正在为您分配开发可用于许多不同iOS应用程序的框架的任务。要求如下: 它应该能够检测用于操纵UI的拇指或手指的粗细。 有了这些信息,UI的所有元素都应该自动排列和调整大小。 对于较大的拇指,应将元素排列在靠近屏幕中心的位置。 对于较小的拇指,应将元素布置在屏幕的角落附近。 对于较大的拇指,所有字体都应较小。(在这种情况下,我们假设是成年人。) 对于较小的拇指,所有字体都应较大。(在这种情况下,我们假设年龄较小。) 摘要: 该框架对于以编程方式创建用户友好的用户界面是必需的。框架的开发方式应使我们可以根据需要用于许多项目,因此它也必须对开发人员非常友好。 我是承担此任务的开发人员,所以我的问题如下: 我怎么能解释这些要求有点荒谬? 我该如何解释,集中精力开发实际项目会更好? 我怎么能解释,即使这是可能的,我也不建议开发这样的东西? 我如何礼貌,温和,礼貌地对这个项目说不? 我如何解释,即使对于具有3年经验的开发人员,这也可能无法实现?

9
处理不可复制的错误
假设您的团队编写的软件系统运行正常(非常令人惊讶!)。 有一天,一位工程师错误地运行了一些SQL查询,这些查询更改了一些数据库数据,然后忘记了。 一段时间后,您发现损坏/错误的数据,每个人都为解决该问题的代码部分以及原因而scratch之以鼻。同时,项目经理坚持认为,我们找到了导致它的代码部分。 您如何处理?

11
设计寿命超过40年的Web应用程序的建议
情境 目前,我是一个医疗保健项目的一部分,其主要要求是使用医疗保健提供者使用用户生成的表单来捕获属性未知的数据。第二个要求是数据完整性是关键,并且该应用程序将使用40年以上。我们目前正在将过去40年的客户数据从各种来源(纸张,Excel,Access等)迁移到数据库。将来的要求是: 表单的工作流程管理 表格进度管理 基于安全/角色的管理 报告引擎 手机/平板电脑支持 情况 在短短6个月的时间里,当前的(合同制)架构师/高级程序员采用了“快速”方法,并设计了一个较差的系统。由于他已经设计了一些bean来对数据库执行“删除”操作,所以数据库未规范化,代码已耦合,层没有专用目的,并且数据开始丢失。代码库极度膨胀,并且由于数据库未标准化,因此有些作业只是为了同步数据。他的方法一直是依靠备份作业来还原丢失的数据,并且似乎不相信重构。 将我的发现提交给项目经理之后,建筑师的合同结束后将被撤职。我已经获得了重新架构此应用程序的任务。我的团队由我和一名初级程序员组成。我们没有其他资源。我们已经获得了为期6个月的冻结要求,在此期间我们可以专注于重新构建该系统。 我建议使用像Drupal这样的CMS系统,但是由于客户组织的政策原因,该系统必须从头开始构建。 这是我第一次设计使用寿命超过40岁的系统。我只从事3-5年使用寿命的项目,所以这种情况非常新,但令人兴奋。 问题 哪些设计考虑因素将使系统更“面向未来”? 应该向客户/ PM问什么问题,以使系统更“面向未来”?

14
我应该如何记起自己在做什么,以及为什么要在三个月前进行一个项目?
三个月前,我正在做一个项目,然后突然出现了另一个紧急项目,我被要求转移我的注意力。 从明天开始,我将回到旧项目。我意识到我不记得自己在做什么。我不知道从哪里开始。 我该如何记录一个项目,这样无论何时回头,离我离开任何地方都不会花费我几分钟的时间。有最佳做法吗?

9
您如何在没有接受标准的情况下开发软件?
在没有接受标准的情况下,您如何在4-5个开发人员的团队中协作开发软件,而又不知道测试人员将针对哪些产品进行测试以及与多(2-3)个人充当产品所有者。 我们所拥有的只是一个粗略的“规范”,其中包含一些屏幕截图和一些要点。 我们被告知,这很容易,因此不需要这些东西。 我对如何进行一无所知。 附加信息 我们有一个艰难的截止日期。 客户是内部人员,理论上我们有产品所有者,但是至少有3个人测试该软件可能会使工作项失败,原因仅在于该工作项无法按他们认为的工作方式工作,并且对他们的预期或期望几乎没有透明度他们一直在测试直到失败为止。 产品负责人无法随时回答问题或提供反馈。没有定期安排的会议或与之通话,反馈可能需要几天的时间。 我可以理解,我们不能有一个完美的规范,但是我认为对于每个sprint中实际进行的工作都具有接受标准是“正常的”。

8
我应该记录我发现并修补的错误吗?
我认为这是一种常见情况:我测试一些代码,发现错误,对其进行修复,然后将错误修复提交到存储库。假设有很多人从事该项目,我应该首先创建一个错误报告,将其分配给我自己,然后在提交消息中引用它(例如“修复错误#XYZ。该错误是由于X和Y引起的。 Q和R“)?或者,我可以跳过错误报告并提交一条消息,例如“修复了在B时导致A的错误。该错误是由于X和Y引起的。由Q和R修复了该错误”。 什么是更好的做法?

9
Git应该用于文档和项目管理吗?代码应该放在单独的存储库中吗?
我正在为一个小组项目启动一个Git存储库。将文档与代码存储在同一Git存储库中是否有意义-似乎这与git修订流程的本质冲突。 这是我的问题的摘要: 如果将代码和文档都检入同一个存储库,Git修订样式会不会引起混淆?有经验吗? Git非常适合文档版本控制吗? 我不是在问总体上是否应该将修订控制系统用于文档编制,而是应该使用。 感谢您到目前为止的反馈!

12
让非程序员了解开发过程
当为一家主要不是编程公司的公司开始一个项目时,人们的期望之一是最后会有一个成品,其中没有任何错误,并且可以立即完成所需的一切。但是,这种情况很少发生。 有什么方法可以管理期望并向非程序员说明软件开发与其他类型的产品开发有何不同?

11
遗留代码移交最佳实践
几个月后,一位同事将继续进行一个新项目,而我将继承他的一个项目。为了准备,我已经下令迈克尔·费瑟斯(Michael Feathers)有效地使用旧版代码。 但是本书以及到目前为止我发现的有关遗留代码的大多数问题都与按原样继承代码的情况有关。但是在这种情况下,我实际上可以访问原始开发人员,并且我们确实有时间进行有序移交。 我将继承的一段代码背景: 它的功能是:没有已知的错误,但是随着性能要求的不断提高,在不久的将来将需要进行一些优化。 未记录:在方法和类级别上几乎有零个文档。但是,该代码应该在更高级别上执行的操作已被很好地理解,因为多年来我一直在使用其API(作为黑匣子)进行编写。 只有更高级别的集成测试:只有集成测试可以测试通过API与其他组件之间的正确交互(再次是黑匣子)。 非常低级的,针对速度进行了优化:由于此代码是整个应用程序系统的核心,因此多年来,许多代码已进行了多次优化,并且非常低级(对于某些结构,一部分具有自己的内存管理器) /记录)。 并发和无锁:虽然我对并发和无锁编程非常熟悉,并且实际上为该代码贡献了一些内容,但这又增加了另一层复杂性。 大型代码库:这个特定的项目有超过一万行代码,因此我无法向我解释所有内容。 用Delphi撰写:尽管我不认为该语言与该问题紧密相关,但我将把它放在这里,因为我认为这种类型的问题与语言无关。 我想知道如何才能最好地度过他离开之前的时间。这里有一些想法: 让一切都可以在我的机器上构建:尽管应该将所有内容检查到源代码控制中,但谁也不会忘记偶尔检查一次文件,因此这应该是首要任务。 更多测试:虽然我希望进行更多的类级单元测试,以便在进行更改时可以尽早发现我引入的任何错误,但现在的代码不可测试(大型类,长方法,太多代码)相互依赖)。 文档内容:我认为对于初学者来说,最好将文档重点放在代码中那些本来就难以理解的领域,例如由于其低级/高度优化的特性。恐怕其中有些事情看起来很丑陋,需要重构/重写,但是实际上其中存在一些优化,这是我可能会错过的一个很好的原因(参见Joel Spolsky,您应该做的事情)从不做,第一部分) 如何记录:我认为最好是一些体系结构的类图和关键功能的序列图以及一些散文。 向谁记录:我想知道让他写文档或让他向我解释会更好,这样我可以写文档。我担心,对他而言显而易见但对我而言不明显的事情将无法得到适当覆盖。 使用成对编程进行重构:由于时间限制,这可能无法实现,但是也许我可以重构他的一些代码,以使其在他仍然在提供有关事物为何如此的方式的输入时更加可维护。 请评论并添加到此。由于没有足够的时间来完成所有这些工作,因此我对如何确定优先级特别感兴趣。 更新:移交项目结束后,我在下面的答案中根据自己的经验扩展了此列表。

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.