软件工程

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

2
做REST的正确方法是什么?
如今,每个人都在进行SOA,即使有些人实际上并不了解全部内容。所以他们做错了。以此为类比,我知道REST是什么(或者至少我认为我是这样做的),并且想要做一些。但是我想做对。 所以我的问题是做REST的正确方法是什么?

10
这些迹象表明开发人员不好吗?[关闭]
我曾经指责客户更改规范会导致代码腐烂,而没有意识到业务模型确实会发生变化,而我的工作就是以适应性方式进行开发。现在,我认为这表明开发人员表现不佳(我已更改!)。 但是现在我自己身上看到了其他“ whi”。最近几次,我发现自己说“这就像试图将一个方形的钉子插入一个圆孔中”,而且我发现自己将客户的犹豫不决归咎于项目没有进展。 有迹象表明我应该寻找可以改变态度的地方吗?客户总是对的,还是有时候我感到沮丧?

9
版本控制和个人配置文件
我们的项目使用特定于用户的配置文件。该文件当前不在版本控制中,因为每个用户都不同。问题是,每当开发人员添加需要配置的新模块或更改现有模块的名称时,其他开发人员都会因未更新其私有配置文件而出错。 为了解决该问题,我们考虑使用两个配置文件:一个默认/全局配置文件,该文件将在版本控制中,并由添加新模块的每个开发人员定期更新;一个私有配置文件将被排除在外版本控制,将仅包含用户特定的更改。 但是,这似乎仍然是临时解决方案。 您可以提出更好的解决方案吗? 专业人士做什么?

10
单独开发人员的最佳版本控制习惯?
我是自己的唯一开发人员,并且我了解VCS的好处;我发现很难坚持良好做法。目前,我正在使用git开发主要是Web应用程序(由于我的工作,该应用程序永远不会开源)。 我当前的工作流程是对开发站点进行大量更改,测试,修改,测试,满意并提交更改,然后将提交推送到实时站点(因此,如果我正在进行新的大更改;我可能只每周提交一次;但是我的IDE对于未提交的内容具有良好的撤消历史记录)。 基本上,我仅在机器之间切换时才使用git(例如,从工作开发计算机到家用开发计算机或在运行中的计算机),但是在白天,我并没有真正看到它的好处。这导致我的更改清单很长(而且我很难为每次提交找到合适的msg;而且每当我匆忙时-我往往会留下一些糟糕的消息,例如“对管理员和模板的其他更改”)。 我应该多久提交一次?每个单行更改都应该提交吗?我应该在任何测试之前提交(例如,至少针对语法/编译错误,然后必须完全撤消它;因为该想法行不通或消息是谎言)? 我应该确定每天早晨/下午都下班之前,还是在仍然新鲜的时候停止吃晚饭吗?不良的VCS习惯让我错过了什么?

12
测试驱动开发(TDD)是否实际上使一个现实项目受益?
我对编码并不陌生。我已经(认真)编码了15年以上。我一直对我的代码进行一些测试。但是,在过去的几个月中,我一直在使用Ruby on Rails学习测试驱动的设计/开发(TDD)。到目前为止,我还没有看到好处。 我看到为某些事情编写测试有一些好处,但很少。尽管我喜欢首先编写测试的想法,但与调试实际代码相比,我发现我花费大量时间尝试调试我的测试,以使他们说出我的意思。这可能是因为测试代码通常比其测试的代码复杂得多。我希望这只是可用工具(在这种情况下为RSpec)的经验。 但是,我必须说,在这一点上,令人沮丧的程度加上令人失望的性能不足令人无法接受。到目前为止,我从TDD看到的唯一价值是不断增长的RSpec文件库,该库可用作其他项目/文件的模板。与实际的项目代码文件相比,这没有什么用处,也许没有用。 在阅读现有文献时,我注意到TDD似乎需要大量时间,但最终会获得回报。我只是想知道,有没有现实世界的例子?这种巨大的挫败感是否能在现实世界中得到回报? 我真的希望我不要在这里的其他地方错过这个问题。我进行了搜索,但是所有问题/答案都已经过了几年了。这是我难得的一次机会,当时我发现一个开发人员会对TDD不好说,这就是为什么我花了很多时间在此上的原因。但是,我注意到似乎没有人指出具体的实际示例。我确实读过一个答案,说在2011年调试代码的人会感谢您拥有完整的单元测试套件(我认为评论是在2008年提出的)。 所以,我只是想知道,在所有这些年之后,我们是否最终有任何例子表明收益是真实的?是否有人真的继承或返回了使用TDD设计/开发的代码,并具有完整的单元测试集,并且确实感到收获了?还是您发现您花了太多时间试图弄清楚测试正在测试什么(以及为什么它很重要),以至于您只是把整个混乱扔进了代码中?

13
在客户托管环境中“杀人”,以保护付款?
我有一个困难的客户。每一份账单都经过辩论和辩论,每封电子邮件都用律师的眼光解析(因为他是律师),寻找一种避免花钱的方法。在我这方面,没有任何慷慨的回报。 客户目前有60%的未付帐单(这些是他签单的发票),而且金额可观。毫无疑问,这是如何实现的,这是我本人的天才产物。 由于客户托管自己的代码,因此我无法关闭托管并要求付款。 除非支付账单,否则安装远程“ Kill Switch”以关闭客户代码是否合法?

7
如何使新员工的生活舒适?[关闭]
作为一个软件团队的高级成员,不幸的是,由于遗留原因,该团队的文档很少,要使新员工感到满意,该怎么办? 我一直在计划与人员进行有关特定缺陷/功能要求的调试会议,以使他/她熟悉代码库。但是,代码库确实很大,我只能以这种方式向人们公开其固定数量的代码。 当新员工是应届毕业生或经验丰富的专业人员时,我都在寻找建议。

8
成为软件工程师的压力是什么?[关闭]
我正在考虑从事软件工程的职业,但是在找工作之前,我想了解一下特别是在压力下会发生什么。这将是我的第一份编程工作(因此我正在寻找入门级人员),所以我还不成熟。 我的问题是这些工作面临什么样的压力?压力能达到多高? 如果您的老板给您分配任务,并且要在两周内到期,但您却需要3个时间,您将被解雇,因为您无法履行职责? 您是否有时间了解更多有关该技术的知识,发展您的编码技能并发展,还是希望您已经知道它并在整个项目中大放异彩? 如果您在使用代码时遇到麻烦,您应该自己处理并独立工作,还是可以在遇到困难时向他人寻求帮助? 您是否期望在深夜里赶上最后期限? 我知道这也取决于公司,但是我只是想对成为软件开发人员/编程人员等可能的压力有一些专业的了解。我也知道其他工作也有压力!我只是想知道软件工程所特有的压力。 我问这个问题的原因是因为我曾经有过很差的编程经验,并且想知道大多数这些工作是否相同。 如果我不想处理软件工程/开发/编程的巨大压力,那么是否还有其他类型的开发,例如Web开发,系统管理员等,这些压力较小,因此我仍然可以进入并仍然编写代码? 感谢您的阅读,我期待听到大家的想法。

11
如何在面试中设计任意系统?[关闭]
技术采访中的一个常见问题是设计一个特定的系统,通常是公司的现有产品。例如,“设计Google文档”。 这个问题的预期答案是什么?我的意思是,这样的系统肯定具有复杂的设计,这超出了任何采访的范围。面试官在这么短的时间内期望什么?
36 interview 

14
如何改善顾问和程序员之间的关系
我担任小型软件咨询公司的顾问已有一段时间了。我们的正常业务模式不是增加员工人数,而是寻找需要帮助的客户来构建某种解决方案,然后派遣一个可以构建该解决方案的团队,与现有的IT员工一起工作,并就支持该培训的所有人员进行培训解决方案,然后继续下一个工作。当然,我们仍然需要任何持续的支持。我们在我们的领域享有很高的声誉,并且在实施我们提供的解决方案方面非常成功。 但是,我已经注意到我们大多数项目的共同主题。当我们到达现场时,我们的团队与当前在客户中的许多IT员工之间通常存在“压力”关系。我完全理解,我们的到来可能会有些焦虑,而我们周围时可能会采取防御措施。许多人都很了解并且很容易与他们合作,但是通常有些人根本无法与我们合作,他们可能会在许多方面迅速成为项目风险。 我们尝试以开放的心态和良好的态度进来,并尽量不要固执己见。通常,我们需要清理混乱的地方,但是我们知道,出于某些原因做出的决定使他们陷入困境……所以,我们只是尝试确定下一步并继续前进。 我的问题是-我想听听那里有顾问的IT人员和程序员的意见-顾问所做的哪些事情激起了负面的情绪和态度?我们不仅在开始时,而且随着项目的进展,如何更好地改善关系?

4
使用Java设计模式的重要性,NodeJs等
随着Javascript在未来几年内将成为Web上无处不在的编程语言,每隔五分钟就会弹出新的框架,并且事件驱动的编程在服务器端和客户端均处于领先地位: 作为Java语言开发人员,您是否认为传统设计模式比其他语言/环境重要或重要? 请命名您作为Javascript开发人员经常使用的前三种设计模式,并举例说明它们如何对您的Javascript开发有所帮助。


12
Scheme与Haskell进行函数式编程简介?
我对使用C和C#编程感到满意,并且将来会探索C ++。我可能对将函数式编程作为一种不同的编程范例进行研究感兴趣。我这样做很有趣,我的工作不涉及计算机编程,并且在大学的计算机科学课程中就很早就开始使用函数式编程,这在某种程度上受到了启发。Lambda微积分当然超出了我的数学能力,但是我认为我可以处理函数式编程。 Haskell或Scheme中的哪一个可以很好地介绍函数式编程?我将emacs用作文本编辑器,并希望将来能够更轻松地对其进行配置,这需要学习Emacs Lisp。但是,我的理解是Emacs Lisp与Scheme完全不同,并且在功能性方面也更具程序性。 如果我追求Scheme,我可能会使用已经购买的“ The Little Schemer”书(我有限的翻阅对我来说似乎有些不可思议)。或者,如果我追求Haskell,可以使用“向您了解Haskell的伟大成就”。我还将在第9频道上观看Erik Meijer博士的Haskell简介视频。 任何建议,反馈或意见表示赞赏。 谢谢。 PS BTW由于我拥有用于​​C#开发的Visual Studio 2010,因此我也可以使用F#,但是我认为这不是我选择语言的主要标准。

10
消除魔术数字:什么时候该说“不”?
我们都知道,幻数(硬编码值)会对您的程序造成严重破坏,尤其是当需要修改没有注释的一段代码时,您会在哪里划清界线? 例如,如果您有一个计算两天之间的秒数的函数,您是否要替换 seconds = num_days * 24 * 60 * 60 与 seconds = num_days * HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE 您在什么时候确定硬编码值意味着什么是完全显而易见的,而不管它呢?

12
如何向新雇主解释我的5年精疲力竭?[关闭]
五年前,我失去了长期专注的能力,因此失去了以专业效率进行编码的能力。 我知道为什么会发生,我理解了它是如何发生的,除了能够重新建立自己的镇定,从而放松的注意力之外,我还克服了最初的想法(植根于童年时代),当时我的思想偏向于总体形势。我的理解并非植根于心理学家告诉我的话,我实际上是对它们一视同仁。我非常有信心能够提高生产力,甚至可能比精疲力尽。 我也从未对代码失去兴趣,也从未试图恢复自己的能力而迷路。我不断更新自己的知识(我总是可以相对轻松地学习与编码相关的知识,只是不应用它们),因此可以说我是一个比以前更好的开发人员,即使我那几年的平均LOC数量很小低。 另一方面,我现在拥有一部传记,其中包括在多尔工作的时间多于工作的时间。 什么能说服您作为雇主为我提出申请的机会?我不认为我应该将整个主题排除在外。 编辑:我想我应该补充一点,我没有开始从童年时代开始寻找原因,这是使我找到原因的解决方案。可惜的是,我没有尽全力去修复公司(这家公司在我离开时已经瓦解,并在一年后彻底瓦解),这深深地植根于这样一个事实:我小时候就放弃了修复父母的关系,错误地分配这是我本人在同情心上的失败,而不是一个完全没有希望的案例,而且我真的没有找到一种方法来解释这一点,而不必提及童年。不过,我完全可以这样说,而不会哭泣。 就是说,是的,我知道我现在是作为朋友而不是雇主给你们写信,这就是为什么我通过使用一次性帐户.oO(...)对您表示不信任的原因 是的,我打算在应用任何地方之前先发布一些OSS代码。 编辑2:我是德国人,打算在一家德国公司申请,所以“创意真相”绝对不是一个选择。 关于选择的答案:我选择了Renesis而不是Pierre,因为尽管后者在激励方面做得很出色,但我不应该放弃,并给我加分以加强我的社交技能部分,Renesis实际上回答了我的问题通过总结所涉及的关键因素。

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.