软件工程

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

12
您如何采访比您经验更多的人?[关闭]
我正在工作的公司正在寻求雇用比我更多经验的高级开发人员,他们希望我从事面试的技术部分。我只从事过几年编程工作,并且不确定我是否具备评估比我有更多理解/经验的人的编码技能所需的知识。 谁能推荐一些技术面试问题,这些问题是评估高级编程技能的好方法,但仍然是我能理解的问题? 我会说我过去了。程序员级别,但远不及高级。我所做的大部分工作都是构建小型应用程序(Web和桌面),其中一些应用程序相当复杂,但是所有这些应用程序都只打算由少数用户使用。我觉得我对大多数编程概念都有很好的了解,并且能够学习/学习几乎任何东西,但是我缺乏经验。正如我的老板喜欢告诉我的那样,“你不知道你不知道什么”。 特别是,我们希望我们雇用的人(我没有)有以下经验:多层开发,多用户环境,大规模应用程序开发,双向消息传递,共享会话,和多线程/ BackgroundWorkers。 更新: 为了回应Thor在下面的评论,我们几个月前雇用了一个人,我认为这一直做得很好。我不仅从编码中学到很多东西,而且还从设计模式,软件体系结构,文档以及其他大型编程团队如何完成工作等方面学到很多东西。有人进来并指出做事的更好方法并不总是一件容易的事,但是如果您可以放下自己的骄傲并乐于尝试新事物,则可以学到很多东西。 面试过程比我预期的要好。我开始问一些关于我熟悉的事物的问题,然后问一些关于我所挣扎的事物的问题。每当受访者说出我不明白的内容时,我都会请他们向我解释一下,然后写下来,以便以后查找。总的来说,我觉得我对申请人的技能水平,智力以及他们想要工作的东西有了一个很好的了解。
81 interview 

27
为什么要让/不让开发人员测试自己的作品
我想收集一些争论,为什么让开发人员在产品投入生产前的最后一步测试自己的工作是一个坏主意,因为不幸的是,我的工作地点有时会这样做(这是最后一次出现,这种说法归结为大多数人太忙于其他事情,而又没有时间让另一个人熟悉程序的那部分-这是非常专业的软件)。 在这种情况下有测试计划(尽管并非总是如此),但我非常赞成让一个没有进行测试变更的人实际进行最终测试。因此,我想问您能否为我提供一个良好而可靠的论点清单,以便下次讨论时可以提出。或者提供反驳,以防万一您认为这很好,尤其是当有正式的测试用例要测试时。


9
当代码远离“干净代码”实践时,如何维护庞大的开源库?
我仍然缺乏编写高质量代码的经验,因此我阅读了解决诸如Robert C. Martin的Clean Code之类的问题的书籍,并不断检查著名库的代码以提高我的技能。 尽管许多开源库已经维护了多年,这意味着它们不太可能走在正确的道路上,但我发现其中许多代码与编写干净代码的原理相去甚远,例如包含数百行代码。 因此,我的问题是:干净代码的原则是否太受限制,我们可以在许多此类库中不使用它们吗?如果没有,如何在不考虑许多这些原则的情况下维护庞大的库? 任何简短的说明,我将不胜感激。如果这个问题对一个新手来说似乎很愚蠢,我深表歉意。 编辑 在Butterknife库中查看此示例-Butterknife库-Android社区中最知名的库之一。


10
异常,错误代码和有区别的联合
我最近开始了C#编程工作,但是我在Haskell有很多背景。 但是我知道C#是一种面向对象的语言,我不想将圆钉插入方孔中。 我阅读了Microsoft的Exception Throwing文章,其中指出: 不要返回错误代码。 但是习惯了Haskell,我一直在使用C#数据类型OneOf,将结果作为“正确”值返回,或者将错误(通常是Enumeration)作为“左侧”值返回。 这很像EitherHaskell中的约定。 在我看来,这比例外情况更安全。在C#中,忽略异常不会产生编译错误,如果未捕获到异常,它们只会冒泡并使程序崩溃。这也许比忽略错误代码并产生不确定的行为要好,但是崩溃客户的软件仍然不是一件好事,尤其是当它在后台执行许多其他重要的业务任务时。 使用时OneOf,必须非常明确地解压缩它并处理返回值和错误代码。而且,如果在调用堆栈的那个阶段不知道如何处理它,则需要将其放入当前函数的返回值中,以便调用者知道可能会导致错误。 但这似乎不是微软建议的方法。 使用OneOf代替异常来处理“普通”异常(例如“找不到文件”等)是一种合理的方法还是一种可怕的做法? 值得注意的是,我听说过异常作为控制流被认为是一种严重的反模式,因此,如果“异常”是您通常会在不结束程序的情况下处理的,那么“控制流”是否就某种方式而言呢?我了解这里有些灰色区域。 注意,我不使用OneOf“内存不足”之类的东西,但我不希望从中恢复的条件仍然会引发异常。但是我觉得这是非常合理的问题,例如未解析的用户输入本质上是“控制流”,并且可能不应引发异常。 随后的想法: 从这次讨论中,我目前要讲的内容如下: 如果您希望直接调用者catch在大多数时间都可以处理异常并继续其工作(也许通过另一条路径),则它可能应该是返回类型的一部分。Optional或OneOf在这里有用。 如果您希望直接调用方在大多数情况下不会捕获异常,请抛出异常,以免手动将异常传递到堆栈中。 如果您不确定直接呼叫者将要做什么,则可以同时提供Parse和和TryParse。
80 c#  exceptions 

10
处理失败的冲刺和截止日期
许多Scrum书籍和文章都说,失败的sprint(当团队无法完成Sprint Backlog的某些功能时)并不是一件坏事,它不时发生,并且如果团队从错误中吸取教训,这实际上很有用。并改善了以下冲刺中的一些功能。并且团队不应因未完成其承诺的工作而受到惩罚。 从开发人员的角度来看,这看起来不错,但是,我们有一家软件公司“ Scrum-Addicts LLC ”为认真的客户(“ Money-Bags Corporation ”)开发一些东西: Scrum-Addicts经理建议为Money-Bags开发一款软件 他们同意功能列表,Money-Bags要求提供发货日期 Scrum-Addicts经理咨询了他们的Scrum团队,该团队表示,将需要3周的冲刺来完成所有功能 Scrum-Addicts经理增加了1周的安全时间,承诺在1个月内发布该软件,并与Money-Bags签订了合同 经过4个冲刺(交付期限)后,Scrum团队只能交付80%的功能(由于新系统的经验不足,需要在生产环境中修复以前的功能中的关键错误等)。 正如Scrum所建议的那样,该产品目前可以交付,但是如合同中所述,Money-Bags需要100%的功能。因此,他们违反了合同,却一无所获。 Scrum-Addicts濒临破产,因为他们没有从Money-Bags获得任何收益,并且投资者对结果感到失望,不愿再为公司提供帮助。 显然,没有哪个软件公司愿意加入Scrum-Addicts的行列。我对敏捷和Scrum的不了解是,他们建议团队如何应对计划和截止日期,以避免上述情况。因此,总而言之,我有两个问题: 谁是罪魁祸首? 经理,因为做适当的计划是他们的工作 团队,因为他们致力于做更多的工作 其他人 什么是要做? 经理应将截止日期推迟到原团队的估计值的2倍(或3倍)。 无论如何,都应鼓励团队成员尽心尽力(通过对冲刺失败进行处罚) 团队应放弃Scrum,因为它不符合公司的截止日期政策 我们都应该放弃软件开发并加入修道院 ???
80 agile  scrum  sprint 

12
如何回应粗鲁的错误报告?
我刚刚收到了一个很不礼貌的错误报告。用户基本上说我们在各处使用大写字母做错了,尽管他实际上只是在指出一个错误。 一方面,我非常关心我们的用户,并希望与我们的应用程序保持良好的关系和良好的评级。另一方面,如果我回答太客气的话,我会感觉完全被抢购一空。 有什么体面的回应方式?我要注意什么?我应该有什么心态? 应该补充一点,该用户似乎是24岁的CS学生,而我们的产品是一个我们免费提供的Android应用。

8
在GitHub,Stack Exchange,Coursera,Udacity,博客等时代,简历的意义是什么?[关闭]
我的简历不再相关。它不能再包含对我的技术能力的充分描述。通过查看我的GitHub存储库,我的Stack Exchange配置文件以及我在Udacity和Coursera学习的各种课程,可以更好地了解我的能力。问题是,我不知道如何告诉雇主那些想要准确描述我能做什么的地方。 每次招聘人员与我联系时,我都会轻柔地将他们吸引到我刚才提到的所有资源上,并且我还会提供指向一个公开可见的Google文档的链接,该文档包含我的简历以及所有这些资源的链接。但是,他们不断回来要求提供更具描述性的简历。 我如何才能更加明显地表明,如果有人想雇用我,那么他们只需单击几个链接并四处浏览,便可以避免一大堆麻烦。

2
关于噪声如何影响程序员生产力的研究[关闭]
是否有人链接到研究,这些研究表明噪声如何影响程序员的生产率?具体来说,我想看看当噪声水平降低时生产率如何/是否提高。 正如评论中指出的那样,编程工作流程的本质是使您始终无时无刻不在集中精力-因此,它受到噪声的影响可能与其他工作方式不同。 我认为这是特定于程序员的原因是,我对数学也很感兴趣。在一个嘈杂的地方,如果我开始考虑数学,噪音就会消失,我发现自己迷失在一个充满图画的世界中。实际上,我最喜欢做数学的地方一直是The Copper Kettle cafe,这是一个繁忙的旅游场所。 对于编程,它是完全不同的。在编程时,我通常是口头思考,任何谈话都会破坏我的思路。从字面上看,我无法在有声音对话的任何地方进行编程。 我已经与其他程序员进行了交谈,他们甚至都没有注意到使我无法工作的噪音,他们说他们主要是在图片中思考。这就是为什么我想知道是否有任何实际的学术研究表明与数学或律师相比,编程是否特别受噪声影响。

11
为什么Scheme是我上大学的第一语言?
每当人们开始谈论计算机科学时,我每天都会听说C,C ++,Java,但是在我的第一门计算机科学课程中,我们被要求用Scheme(DrRacket)编写。 这是为什么? 这将对我以后对编程的理解产生什么不同? 更新:我已经完成了第一学期,但是对Scheme并没有完全完成。在第二个学期(现在)中,我们开始进行C编程。一开始学习指针很沮丧,但是现在我感觉好多了。 没有比这更多的话了。我正在尝试为缺少的OOP部分自学Java(或C ++?)。到目前为止,我仍然最喜欢函数式编程。Lambda令人着迷。:)
80 scheme 

11
当您获得经验时,总体而言,编程是否变得更容易阅读,编写和理解?[关闭]
我是编程的新手,我一直在读书,学习,阅读文章等等。自从开始学习编程以来,我取得了不错的成绩,当我还是一个初学者时,我曾经以为自己对编程有所了解,但是随着我学到更多,我意识到了该领域的困难(实际上所有领域都很困难,但这不是重点)。 如今,我已经编写了功能软件,并且学习了3种语言的BASICS,并且我只是一种语言的中级。当我查看MYSQL,OpenGL编程甚至Visual Studio C ++代码之类的高级内容时,它会让我头疼,甚至在可视化许多网站的HTML源代码时(Google chrome看到的网站上的大多数源代码看起来也很凌乱和无组织。 )这让我很困惑。乍一看似乎很简单,但是当看这些高级的东西时,我只是想知道如何学习到很多东西。 简而言之,问题是,随着程序员的职业发展,这些事情是否对他们而言变得更加清晰。随着学习的深入,上面列出的复杂主题(OpenGL,MySQL,高级html站点)是否变得更易于阅读,编写和理解,或者随着学习的进行变得更加复杂?您如何克服这种感觉,即您是编程世界中的蚂蚁,而这玩意儿正在压垮您呢?

20
公司命令切换到某个IDE是否会产生危险信号?[关闭]
我最近加入了一家快速成长的初创公司。在过去的三个月中,开发团队已从4名增加到12名。到现在为止,他们对开发人员过去所做的工作非常放任。实际上,最初让我对公司有吸引力的一件事是,大多数程序员都使用Linux,或者认为自己最适合自己的操作系统。 现在,无需讨论的命令就减少了,每个人都将改用Eclipse。优秀的编辑。我更喜欢SublimeText2,但这只是我个人的口味。 明确一点:我们是一个使用Backbone的JS团队,而Eclipse并不擅长理解Backbone代码。这意味着使用/ good / IDE(PHP Storm)的团队中的那些人必须回去做很多的搜索工作,三步之遥,等等。而不是按住ctrl键并单击并使用后退/前进键-可能会使生产力降低15%,而享受度降低50%... 这是一个危险信号吗?告诉开发人员(非MS)似乎已经很反复无常,并且要控制开发人员(非MS)要使用哪些IDE或工具集(如果它们已经解决并可以投入使用)。

14
敏捷是新的微观管理吗?
这个问题一直困扰着我一段时间,所以我想问那些在开发环境中遵循敏捷/敏捷实践的人。 我的公司终于冒险融入敏捷实践,并从一个由4个开发人员组成的团队开始在一个敏捷团队中进行试用。到目前为止,已经进行了3个月的迭代,为期4个月,他们继续这样做,而对我们其他人来说却没有足够的敏捷性。这是由于以下事实:管理层信任高层提供的大量临时类型请求,可以满足业务需求。 最近,我与参与该计划的开发人员进行了交谈。他们告诉我这不好玩。他们的Scrum管理员不允许他们与其他开发人员交谈,也不允许他们在工作区域内拨打任何电话(可能在一定程度上可以)。例如,如果我想和敏捷团队中的朋友聊天,未经Scrum主管的允许,我是不允许的。坐在敏捷团队旁边的人。 所有这一切或敏捷的想法是为敏捷开发人员提供一个不受干扰的完整真空,并将其投入6个以上的生产小时。好吧,伙计们,我不是敏捷专家,但是我读过Yahoo敏捷发布文档以及其他组织的类似文档时,给我的感觉是敏捷并不便宜。团队需要敏捷的资源和预算来灌输敏捷性,并在他们到达时纠正问题,使他们重回正轨。 对于初学者来说,它需要为开发人员提供培训,并为经理等提供指导。等等。目前的Scrum主管是一位经理,他参加了为期两天的敏捷培训课程,该课程由管理层支付,现在领导这个敏捷团队。我在会议上还听说过,敏捷宣言并不表示敏捷不是一成不变的,而是为每个公司定制的。好吧,这听起来不错,也很合理。 总之,我一直认为敏捷应该在开发团队中带来和谐,从而使开发人员感到满意。但是,当与敏捷团队中的开发人员交谈时,我的感觉却截然相反。他们为自己除了工作以外什么都不会说话感到不高兴,他们整日坐在办公室里安静地工作,他们觉得这是管理层提高工作效率的另一种方式。 请告诉我,这是否是为了获得更多美元而自私自利的良好做法的例子之一?也许是像我们这样的开发人员才是我们,这个敏捷的团队认为他们不喜欢在只能呼吸工作的环境中工作。 这是一家医疗保健领域的公司,在美国设有办事处。绝对感觉像是牛仔风格的敏捷,这使我真的根本不想去敏捷,尤其是在我目前的公司中。 所有这些都与管理完全便宜有关。削减昂贵的咖啡以获得更便宜的版本,强调节约和生产,同时保持尽可能的瘦。 我的感觉是,门后的管理层中有人拒绝了这个想法,敏捷使您可以生产更多,因此我们可以向我们的老板展示我们正在以相同的人数生产更多产品。或者,如果是这样的话,它可能使我们减少人员。 他们每天开会5分钟。但不允许与团队以外的人聊天或交谈。所有重点都放在工作上。

18
您如何学习正则表达式?[关闭]
我不是问在哪里学习。我在网上找到了很多很好的资源,还有书籍等。 但是,我该如何解决这些问题。起点在哪里,终点在哪里?regexp处理器何时在文本上前进,何时保持立场并尝试其他匹配?等等 我想尝试找出埃及金字塔上的象形文字。

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.