软件工程

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

8
我的简历上没有Ruby,但没有Rails [关闭]
我将Ruby列为一项技能,因为我在博士学位期间从事Ruby编程已有5年了。论文。我主要使用它来实现自然语言处理算法。 我开始寻找工作,并且将自己的履历表发布到了一些网站上(作为申请某些目标工作的一项额外奖励)。现在,我收到招聘人员的电话,向我提供Ruby on Rails的工作。问题是我从未学过Rails。这与我为博士学位所做的工作从来没有关系。 您如何建议处理这种情况以避免浪费我的时间和他们的时间?(在完成论文之前,学习Rails可能不是一种选择。)是否可以调整我的履历以使其更清楚?是否应该调整?我应该在电话上客气地告诉他们我不认识Rails吗? 顺便说一句,我简历的相关部分只是说: 技能专长: 编程语言: C,C ++,Java,Scala,Ruby,LaTeX 数据库: MySQL,XML,XPath 并列出了其他一些可能无法与Rails开发人员混淆的技能领域。


14
如果客户端需要检索密码的能力怎么办?
我目前在工作时继承了一个应用程序,但令我沮丧的是,我意识到使用内部加密功能对数据库中存储的用户密码进行了加密,该功能还包括解密功能。 因此,某人真正需要做的就是复制用户表并复制加密程序集(任何具有数据库生产访问权限的人),然后他们将可以访问100,000个电子邮件地址和潜在的密码。 我正在尝试向企业解释为什么这不是一个好主意,但是安全性概念似乎不可行,因为它们在技术上没有头脑(这是针对政府的)。另外,应用程序中实际上还存在一些功能,供管理员用户检索用户的密码,以便以用户身份登录并执行操作(他们说过,他们需要)。 因此他们不了解安全隐患。为了实施更强大的安全策略(散列密码,以便不易检索它们),我必须删除它们的现有功能。 我该怎么办?我并不是一开始就建立密码系统的,所以如果发生任何错误,这并不是怪我。另一方面,我对此感觉不太好,也不想访问100,000次潜在的电子邮件登录。

12
在持续集成对我们有效之前有多少开发人员?
与持续集成相关的开销包括设置,重新培训,意识活动,停止修复最终导致数据问题的“错误”,强制分离关注点编程样式等。 持续集成在什么时候可以收回成本? 编辑:这些是我的发现 设置是带有Nant的CruiseControl.Net,从VSS或TFS读取。 以下是失败的一些原因,这些原因与设置无关: 调查成本:调查红灯是否是由于代码,数据质量或诸如基础结构问题(例如,网络问题,从源代码管理,第三方服务器读取的超时)之类的其他来源上的真正逻辑不一致所花费的时间掉了,等等,等等) 基础设施方面的政治成本:我考虑过在测试运行中对每种方法执行“基础设施”检查。除了更换构建服务器之外,我没有解决超时的方法。繁文tape节阻碍了系统,没有更换服务器。 修复单元测试的成本:数据质量问题引起的红灯可能表明单元测试写得不好。因此,重写了与数据相关的单元测试,以减少由于不良数据而导致出现红灯的可能性。在许多情况下,必要的数据被插入到测试环境中,以便能够准确地运行其单元测试。可以说,通过使数据更加健壮,然后依赖于该数据的测试就变得更加健壮。当然,这很好! 覆盖成本,即为现有代码编写单元测试:存在单元测试覆盖率的问题。有成千上万种没有单元测试的方法。因此,将需要大量的工作日来创建这些工作日。由于这很难提供业务案例,因此决定将单元测试用于以后的任何新公共方法。那些没有进行单元测试的人被称为“潜在的红外线”。此处的一个令人感兴趣的观点是,静态方法是如何唯一确定特定静态方法如何失败的争议点。 定制发布的成本:仅Nant脚本到目前为止。例如,它们对于EPiServer,CMS或任何面向UI的数据库部署的CMS依赖版本不是很有用。 这些是每小时进行一次测试运行和过夜进行QA生成时在生成服务器上发生的问题的类型。我认为这些是不必要的,因为构建大师可以在发布时手动执行这些任务,尤其是一个人的团队和一个小的构建。因此,以我的经验,单步构建并不能证明使用CI是合理的。那么更复杂的多步骤构建又如何呢?这些可能很难构建,尤其是在没有Nant脚本的情况下。因此,即使创建了一个,也不再成功。解决红灯问题的成本超过了收益。最终,开发人员失去了兴趣并质疑红灯的有效性。 经过一番尝试,我相信CI的成本很高,并且有很多工作要做,而不仅仅是完成工作。雇用经验丰富的开发人员,而不是搞乱大型项目,比引入和维护警报系统更具成本效益。 即使这些开发人员离开也是如此。优秀的开发人员是否离开并不重要,因为他遵循的流程将确保他编写需求规范,设计规范,遵守编码准则并注释其代码以使其可读。所有这一切都进行了审查。如果这没有发生,那么他的团队负责人就没有做好他的工作,这应该由他的经理接任,依此类推。 要使CI正常工作,仅编写单元测试,尝试保持完整的覆盖范围并确保可运行的系统的基础架构还不够。 最重要的是:人们可能会质疑,从业务角度来看,是否甚至需要在发布之前修复尽可能多的错误。CI涉及许多工作,以捕获少量错误,客户可以在UAT中识别出这些错误,或者无论如何在保修期到期时,作为客户服务协议的一部分,公司都可以获得酬劳。

9
C#中的构造函数参数验证-最佳做法
构造函数参数验证的最佳实践是什么? 假设有一个简单的C#: public class MyClass { public MyClass(string text) { if (String.IsNullOrEmpty(text)) throw new ArgumentException("Text cannot be empty"); // continue with normal construction } } 抛出异常是否可以接受? 我遇到的替代方法是在实例化之前进行预验证: public class CallingClass { public MyClass MakeMyClass(string text) { if (String.IsNullOrEmpty(text)) { MessageBox.Show("Text cannot be empty"); return null; } else { return new …

14
处理源代码中的亵渎行为
人们如何处理源代码和VCS注释中的亵渎行为。保留还是删除? 像WTF或Arrgggh这样的软语词怎么办? 是不专业,令人反感的东西还是应该摆脱的东西?

8
嵌入式编程是否更接近于电气工程或软件开发?[关闭]
我正在从事在微控制器上编写嵌入式C的工作。起初,我本以为在软件堆栈中嵌入编程对我来说太少了,但也许我在想错了。 通常我会放弃编写嵌入式代码的机会,因为我不认为自己是电气工程师。这是一个错误的假设吗?我是否能够为嵌入式系统编写有趣且有用的软件,还是会因为软件堆栈太低而踢自己? 我上了计算机科学学校,对编写编译器,考虑并发算法,设计数据结构以及开发框架感到非常满意。但是,我目前受雇为一名Web开发人员,这并未激起我刚才描述的有趣的事情。(我目前处理的问题是:“此复选框必须在左边4像素处”和“此日期格式错误”。) 感谢大家的投入。我知道我必须自己做决定,我只是想澄清一下成为嵌入式程序员的含义,以及是否适合我觉得有趣的事情。

11
Java与C#-生产率透视图
如果您有使用Java的多年经验,以及使用C#和.NET的多年经验,那么我对您在这两种环境之间的软件开发生产力差异方面的观点表示赞赏。我们的一位客户正在考虑更换其现有的软件解决方案。由于更换将需要大约。根据Java或.NET之间的生产率差异,选择10到15个工作年的工作可能会显着影响所需的投资和上市时间。 您能否向我们提供Java和C#/。NET之间软件开发生产率差异的指示?我希望收到如下答复: 我的经验是基于X的Java工作经验和X的C#/。NET工作经验。如果考虑以下因素,则Java的生产力比Java#高出X%,而C#.NET或C#/。NET的生产力比Java高出X%。


11
在履历表上提及我的网志对求职有帮助还是有害?[关闭]
我有一个博客,主要用于记录我所遇到的问题的解决方案,这些问题很难找到答案。在大多数情况下,我通过Google搜索的在线文档提供的信息过多,因此我在第三个Google匹配的第五页上找到了问题的答案。 (或者,如果我在这里问这个问题,我要么没有得到答案,要么就因为提出“可以很容易地用谷歌搜索答案”的问题而被抨击。) 我经常在这个博客上查找一些东西,以提醒自己如何解决问题,并且它也从其他人那里获得了不错的点击率。 无论如何,我想知道在履历表中提及这个网志对求职有帮助还是伤害我?主题遍及整个地图。 我希望它显示的是 我是找到问题解决方案的人 我在工作中使用了许多不同的技术 我不怕应对挑战 我担心的是,它表明 这个人有麻烦吗? 为什么这个人不愿为这个东西写博客?


13
职业建议:继续使用PHP或以其他方式(.Net?)开始新的职业[关闭]
我计划在6到12个月内搬到纽约,所以我不得不寻找新工作。当我计划在另一个城市开始我的生活时,也可能是考虑职业变化的好时机。 我发现了关于PHP,.Net和Java的许多不同观点,这不是这里的主题。我不想就哪种语言更好展开新的斗争。成为一名软件开发人员,了解编程语言并不是最重要的事情。要成为一名真正的优秀开发人员,您需要了解OOP,设计模式,测试...,而语言只是使事情成真的工具。 回到我的问题。我在IT方面有不同的经验-担任IT支持人员1年(Windows管理和支持),大约2年嵌入式编程经验(VB.Net 2005),最近2年我一直在使用PHP / MySQL。我曾与Magento网上商店合作,协助Symfony进行了一些项目,并修改了一些Drupal网站。 我主要关注的问题如下: 我是否会继续提高自己的PHP技能,例如开始学习一些主要的PHP框架,例如Zend,Symfony或获得一些PHP认证。 还是开始学习.NET或Java。我对.NET更为熟悉,所以如果选择介于.NET和Java之间(或者您可以说服我选择Java :),我可能会选择它。 在职业方面,我不知道什么是最佳选择。学习新的框架和语言要花费更多的时间,然后才能提高我现有的PHP技能。但是,使用.NET,您将有很多可能性(Windows 7 Phone开发,Silverlight,WPF),并且可能有更大的机会找到更好的工作。 根据我的研究,至少与.NET相比,PHP职位的薪水较低(如果我错了,请纠正我)。但是,如果我现在开始使用.NET,我只是一个初学者,我的薪水会很低。我需要至少2年以上使用某种语言的经验,才能尝试找到一些薪水高于纽约50-60k美元的工作。在接下来的2-3年中,我的主要目标是设法找到$ 60-80k的工作。不要误会我的意思,我不仅在追逐金钱,而且在您尝试建立家庭时,金钱是重要的因素。 我今年27岁,我觉得我的职业生涯没有太多错误决定的余地,因此任何建议都将受到欢迎。 更新资料 谢谢大家花时间帮助我解决我的问题。所有的答案和评论都非常有帮助。我决定坚持使用PHP,还要学习C#和Silverlight4。我们将看看生活将带我到何处。

18
本科生必须知道的CS学科[关闭]
在大学里,我从不对理论感兴趣。我没看过 无论我尝试了多少,我都无法阅读东西,也不知道实际发生了什么。例如,在我的自动机理论课程中,我的教授告诉了我所有可能与它的数学方面有关的内容,但他甚至没有提到任何将其实际应用的地方。这只是一个例子。 我设法通过了大学,并在一家公司实习,在那里我做了一个项目,但幸运的是,他们没有理会我的成绩,因为他们的成绩高于平均水平。 现在,我有兴趣知道CS学生必须绝对肯定地了解哪些主题?在行业中可能具有相关性的主题。这是因为我有一些空闲时间,对我有更好的了解会更好。 您有什么建议?就像一个,算法是一门学科。

20
编码标准应该是什么?[关闭]
一个好的(有用的)编码标准应该是什么? 代码应具备的内容。 代码不应该包含的内容。 编码标准是否应包括语言,编译器或代码格式化程序强制执行的内容的定义? 圈复杂度,每个文件行数等指标如何?


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.