软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答

9
如何使冲刺计划有趣
我们的Sprint计划会议不仅不好玩,而且简直令人恐惧。 这些会议既乏味又无聊,而且要花很多时间(一天,但感觉要更长一些)。 开发人员对此表示抱怨,并担心即将到来的计划。 我们的例程非常标准(按优先级将用户故事插入到sprint待办事项中>>将故事分解为任务>>按小时数估算任务>>重复),我无法弄清楚我们在做什么错。 我们如何使会议变得更加愉快? ... 应要求提供更多信息的更多详细信息: 为什么在sprint启动之前未插入待办事项并按优先级排序? 用户故事确实是优先的;我们不知道他们会花多长时间,直到将他们分解成任务!从这里的(优秀)答案中,我看到也许我们根本不应该估计任务,而应该仅估计用户故事。我们估计任务(而不是故事)的原因是因为我们一直在错误地估计故事,但我想这是一个完全不同的问题。 开发人员为何抱怨? 会议很长。 会议是单调的。一个接一个的故事,一个接一个的任务,奋斗(是的,奋斗)来估计需要多长时间和涉及什么。 估计任务使用户故事的估计显得毫无意义。 会议时间越长,会议室的焦点就越少。同事注意力越集中,会议花费的时间就越长。递归的仇恨螺旋发展。我们已经考虑将会议分成两天,以使人们集中注意力,但是开发人员对此一无所知。一天的计划已经够糟糕了;现在我们有两个? 问题的一部分是我们进入了非常小的细节(以便获得更准确的估计)。但是,当我们粗略估算时,我们远远超出了预期! 总结一下问题: 我们做错了什么? 还有什么其他方法可以使会议更加愉快?

6
为什么没有其他可编译为Python字节码的编程语言?
在Java中,有多种语言可以编译为Java字节码,并且可以在JVM上运行-Clojure,Groovy和Scala是我能记住的主要语言。 但是,在由Python解释器运行之前,Python也会转换为字节码(.pyc文件)。我可能只是一无所知,但是为什么没有其他可编译为python字节码的编程语言呢? 仅仅是因为没有人打扰,还是因为某种固有的限制或障碍使得这样做变得如此困难?

13
软件开发人员应该获得年度设备预算吗?[关闭]
我正在寻找一家新公司的新职位。过去,我曾与某些人(通常不是在这家公司)进行过交谈,他们有年度预算来购买新的计算机产品,以保持最新状态。 现在,为什么我觉得这个问题值得在这里问,是乔尔(Joel)马上就说,雇主应该为可以买到的最好的设备买单……当然。 来自Joel测试:改进代码的12个步骤 9.您是否使用金钱可以买到的最好的工具? 用编译语言编写代码是在花园式家用计算机上仍然无法立即完成的最后一件事... 顶尖的开发团队不会折磨他们的程序员。甚至由于使用功能不足的工具而造成的小小的挫折感也加起来,使程序员脾气暴躁且不高兴。脾气暴躁的程序员是徒劳的。 有谁知道该行业是否有提供津贴或预算的标准? 我从来没有在像这样的公司工作过,但是我想我应该把它扔给谈判中。似乎合理。像MS,Google和Apple这样的大公司该如何处理?如果您说是,请给一个范围...我被告知数字从$ 5k到$ 10,000。对我来说似乎很高,但是嘿,我很乐意接受。

5
获得加权随机项目
我有这个桌子 + ----------------- + | 水果 重量 + ----------------- + | 苹果| 4 | | 橙色| 2 | | 柠檬| 1 | + ----------------- + 我需要归还随机水果。但是苹果的采摘频率应该是柠檬的 4倍和橙子的 2倍。 在更一般的情况下,它应该f(weight)经常出现。 什么是实现此行为的良好通用算法? 也许在Ruby上有一些现成的宝石?:) PS 我已经在Ruby https://github.com/fl00r/pickup中实现了当前算法
51 algorithms  ruby  math  random 

8
当卡住时,应该多快才能使用堆栈溢出?[关闭]
我正在通过iTunes U CS193p课程自学iOS开发,并且经常发现自己陷入困境。我一直在努力摆脱自己的困扰,但可能要花我几个小时才能弄清楚我在做什么错,是因为缺少一种方法还是没有真正得到像委托这样的整体概念。 我担心自己可能会浪费太多时间,最好在卡住后立即进入Stack Overflow,这样我才能继续前进。 以您的经验,对堆栈溢出的快速询问是否会阻碍学习过程或改善学习过程?

17
适用于1-2个开发人员的简单问题跟踪器[关闭]
我目前主要在一个项目中工作(使用Java)。我通常一个人呆着,因为我有一位顾问,可以给我有关操作的高级指导,并且很少做出任何代码贡献。不过,她将不时进行几次验收测试。 我以前从未使用过问题跟踪器,并且正在考虑现在开始使用它,因为我希望有一个地方可以记录我发现的可能的错误并以集中的方式对其进行跟踪。是否有可能更好地将问题跟踪器与Eclipse集成在一起。 所以这是约束: 这不是一个开源项目。我们的代码不可与任何人共享! 我们正在并且将使用Subversion; 我们拥有自己的Subversion服务器,并且将继续使用同一Subversion服务器; 它必须是免费的; 它必须至少允许2个用户。 您对挑选什么有什么建议?我正在寻找最简单的解决方案。

14
评估新程序员的最佳方法是什么?[关闭]
评估最佳人选以获得新工作的最佳方法是什么(仅就编程技能而言)?在我的公司中,我们与成绩不错但没有实际编程技能的人有很多不良经历。他们的技能就像是代码猴子,没有能力分析问题和找到解决方案。 我还要注意的更多事情: 我国的教育体系很糟糕-确实很糟糕。从事这类工作的人之所以出色,是因为他们有才干或真正尝试自己学习。 大学/研究生/研究生学位不一定意味着您确切地知道该怎么做。 认证在这里也没有任何意义,因为负责认证课程的人员也没有技能(或从事低薪工作)。 我们确实需要获得灵活且没有机械思考的优秀候选人(因为这类人凭经验表现不佳)。 我们在政府机构中,应聘者不一定来自外部,但只有找到合适的人选,我们才有可能接受或不接受任何候选人。 我希望我的提问听起来不要太激进;顺便说一句,我本人是一名程序员。 编辑:我发现这里的问题确实很复杂。我将取消“正确答案”的切换,只是为了使讨论顺利进行而没有任何偏见。
51 skills 

12
公开开源项目而不会感到尴尬[关闭]
我一直在一个相当大的开源项目上工作了一段时间,现在已经接近要发布它的地步了。但是,我是自学成才的,我真的不认识任何可以充分审查我的项目的人。 几年前,我发布了一些代码,这些代码在我发布它的论坛上几乎被撕碎(在某种意义上)。尽管该代码有效,但批评是准确而残酷的。它促使我开始寻找所有事物的最佳实践,最终我觉得这使我成为了一个更好的开发人员。我已经遍历了项目中的所有内容,试图使它变得完美,以至于我数不清。 我相信我的项目,并认为它有潜力帮助很多人,而且我觉得我已经用有趣的方式做了一些很酷的事情。不过,由于我是自学成才,所以我不禁要问自己的自我教育存在哪些差距。我上次撕开我的代码的方式并不是我想重复的。我认为释放我的项目花了无数小时,这让我最大的两个恐惧是绝对尴尬的,因为我由于自我教育而错过了一些明显显而易见的事情,或者更糟糕的是,将其释放到of的声音中。 有没有遇到过类似情况的人?我不害怕建设性的批评,只要它具有建设性,而不仅仅是我如何搞砸的话。我知道StackExchange上有一个代码审查站点,但它并不是真正为大型项目设置的,而且我不觉得那里的社区足够大,如果我要零散发布项目的一部分,我也不会得到很好的反馈(我尝试了一个文件)。我该怎么做才能使我的项目至少取得一定程度的成功,而又不会在此过程中感到尴尬或沮丧?

10
在面试中询问关于产品的设计决策是否明智?[关闭]
我最近一直在考虑面试问题,并且一直在反思过去的糟糕面试经历。特别要注意的一点是,我曾问过访员,为什么团队选择在产品中使用Spring而不是EJB 3。面试官几乎撕开了我的脸,大喊:“因为Spring不是Java软件开发的全部和全部,您是否想要这份工作?”。对此,我告诉他,这可能不是我的工作,因此我立即退出了面试。 在面试开始时,我被告知公司的人员流动率很高,他们使用的产品最初是在Modula-3中创建的,然后移植到Perl,最后移植到Java。我收到了10页的技术问题手册,内容涉及Java,EJB,SQL和JDBC,还被问到有关我使用过的技术堆栈的问题。当提示您提出问题时,我觉得向他们询问他们的技术栈并获得合理的答案是合理的,而不是让面试官发火。 问题: 探讨采访中选择的架构是个好主意吗?如果没有,为什么? 从我自己的角度来看,面试是一个双向过程。如果面试官正在测试我的技术技能,我有权向他们提出相同的问题,以: 1)弄清楚他们对开发软件的看法和态度。2)确定他们的方法是否符合我对此类问题的处理方式。 生气的面试官可能没有很强的面试技巧,却忘记了面试是双向交流。如果有人问我这个问题,我会给出一个合理的答案,但我当然不会试图让受访者处于温和的屈服状态,即头在不说话的情况下上下摆动。
51 java  interview 


18
备受赞誉的编程书籍是否有过期日期?[关闭]
在阅读了有关每个程序员都应该阅读的书籍的问题之后,我想知道是否应将以下内容视为过时的: 密码完整:1993年第一版;2004年5月第2版 算法简介(Cormen,Leiserson,Rivest,Stein):1990年第1版;2001年9月第2版;2009年第三版 实用程序员:1999年10月 计算机程序的结构和解释:1984年第一版;1996年9月第2版 C编程语言:1978年第一版;1988年4月,第二版 所有这些书似乎都很老。现代计算机与写这些书的最新内容之间没有区别吗? 例如,我61岁的老师讲得很好,但忘记了25年前开始教书到现在之间所做的一切。 这些书不一样吗?难道没有更多现代书籍教授与当前实践更接近的原理和技术吗?还是您认为它们在今天还是有用且相关的?

9
我如何说服队友不要忽略编译器警告?
我使用eclipse在Java中进行了一个大型项目(更像是数十个小型项目的混乱组合,由于依赖管理不善而无法轻易分离,但这是另一回事)。我们已经从编译器设置中关闭了许多警告,并且该项目仍然有10,000多个警告。 我强烈建议尝试解决所有警告,并尽可能修复所有警告,对于被调查并认为安全的警告,请予以压制。(我对将所有已实现/重写的方法标记为@Override的信仰也是如此)。我最大的论点是,一般而言,警告可以帮助您在编译时发现潜在的错误。也许在100次中的99次中,警告是微不足道的,但是我认为它为防止重大错误而节省了一次,这是值得的。(我的另一个原因是我的代码清洁度很强。) 但是,我的很多队友似乎都不在乎。当我偶然发现警告时,我有时会修复(但是当您触摸同事编写的代码时,您会发现这很棘手)。现在,警告实际上比类多,警告的优势已大大减少,因为当警告如此普遍时,没有人会费心地查看所有警告。 我该如何说服我的队友(或潜在的力量)警告需要被解决(或在充分调查后被取消)?还是我应该说服自己疯了? 谢谢 (PS我忘记提了,最后促使我发布此问题的原因是,我可悲地注意到我修复警告的速度比发出警告的速度慢)
51 java  eclipse 

11
如何测试关键生命或死亡系统中使用的软件?
相对于例如网站,飞机是一种系统,其中某些系统中的任何故障都是完全不能接受的,因为例如飞行监控中的错误会导致自动驾驶仪发生故障并进行潜水。显然,这不会发生,因为波音和空中客车公司的才华横溢的工程师已经在自动驾驶仪中进行了检查,以确保它不会突然决定潜水是一种完全可以接受且安全的动作。或者,也许计算机崩溃了,而新型电传飞行飞机的飞行员实际上无法再驾驶飞机。当然,这些系统中内置了各种安全程序和冗余来防止(软件和飞机)坠毁。 但是,另一方面,很明显,该软件并不是完美的-开源软件和闭源软件都经常崩溃,并且只有最简单的“ Hello World”程序不会失败。在航空,医疗和其他生死攸关的行业中设计软件系统的工程师如何管理他们的软件,以确保软件不会失败(如果失败,至少可以正常地失败)? 我非常希望你们不会全部离开:“哦,我为波音/空中客车公司(或其他公司)工作,但事实并非如此!在您下次的航班/医院访问中玩得开心。”
51 testing 

3
断言或单元测试更重要吗?
断言测试和单元测试都充当代码库的文档,并且是发现错误的一种手段。主要区别在于,断言充当健全性检查并查看实际输入,而单元测试则在特定的模拟输入上运行,并且是针对单个明确定义的“正确答案”的测试。使用断言与单元测试作为验证正确性的主要方法有哪些相对优点?您认为应该重点强调哪个?

25
关于使用虚拟机进行开发的思考
我将作为一家初创公司的开发负责人,并且建议我们使用VM进行开发。我并不是说每个开发人员都拥有一个带有用于测试/开发的虚拟机的桌面,我的意思是拥有一个管理所有虚拟机的服务器机架,并让开发人员在本地甚至从他们的家中通过microPC(ChromeOS都可以吗?)工作。电脑。 对我来说,好处是它具有极高的可扩展性,从长期来看更便宜,易于管理,并且我们利用了硬件的最大潜力。至于缺点,除了我们需要有人来设置/维护所述设置之外,我再也没有想到任何其他的热门产品。 我希望你们中的某些人可能在您的工作地点也有类似的设置,并且能够加深您的意见。谢谢。

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.