软件工程

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


15
在没有源代码控制的情况下与多人一起开发应用程序的最有效/最有效的方法是什么?
我的情况简介 我在一家小型Web开发公司工作。我们有一个由四个ASP.NET开发人员组成的团队,其中包括我。我们几乎所有项目(> 98%)都是一个人的项目,大约需要1-4周才能完成。我们不使用源代码或版本控制。我们唯一拥有的是本地服务器上的共享文件夹,其中包含所有项目的最新源(==实时应用程序的源)。 在极少数情况下,我们确实需要与一个以上的人一起从事同一个项目,我们使用...超越比较。开发人员每天一两次询问彼此是否有可编译的版本,然后使用Beyond Compare同步其代码。当只有两个人在一个项目上工作时,这“相当好”,但是一旦第三个开发人员进入流程,它就变成了难以处理的垃圾。尤其是当每个人都开始对数据库进行更改时。 我(和我的一两个开发人员)已经多次告诉我的老板,我们应该开始使用某种形式的源代码和版本控制,例如Git,Mercurial或TFS(我们的老板非常注重Microsoft)。不幸的是,我的老板没有看到切换到源代码和版本控制系统的优势,因为在他看来,现在一切都很好,并且他不想花费时间和金钱来建立新系统并确保每个人都知道如何使用它。即使在我向他解释了优点(例如简化的协作,应用程序的不同版本,更安全的代码更改方式……)之后,他仍然不认为这是我们所需要的。 在这四个开发人员中,只有两个(包括我在内)具有源代码控制(Git)的经验。而且这种经验非常有限。我知道如何将Github存储库克隆到我的计算机上,进行一些更改,提交它们并将其推回到Github。而已。 我的问题/担忧的解释 几周后,我们将开始为我们的标准开展一个相当大的项目。可能需要2-3个开发人员几个月才能完成。我将担任项目负责人(项目经理和首席开发人员),我将负责所有工作。我在使用“超越比较”方法时遇到了很多问题,并且我不想走这个大项目,这是我的责任。 由于我怀疑我们是否能够 设置我们自己的Git服务器, 教大家与Git合作 在这个大项目中成功雇用了Git, 我很感兴趣,如果你们中有人知道一些允许多人在不使用源代码或版本控制的情况下就同一项目进行协作的好方法。 更新资料 我要感谢大家的回答和评论。这是计划: 与开发人员举行会议,以确保所有技术人员对实现源代码控制的感觉相同。当所有人都支持时,我们会提出一个更强的观点。 向老板介绍这个想法,并告诉他我们确实需要源代码控制。 尽快实施。

3
我们如何改善总体程序员教育和培训?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 上周,我刚刚观看了《第二人生》的菲利普·罗斯代尔(Phillip Rosedale)的凯文·罗斯(Kevin Rose)所做的精彩采访。 他们就如何找到,聘用和确定优秀的程序员,以及找到优秀的程序员有多么艰辛进行了精彩的讨论。 这使我真正考虑了我们程序员学习的方式。对于我们大多数人,包括我自己在内,我们都是自学成才的。成为一名程序员很棒,任何人都可以学习和发展技能。 但是,这也意味着,没有一个真正的标准来确定一个好的程序员是/是什么,以及什么样的环境可以促进编程技能的发展。 这不是一个问题,而是我的一种愿望,希望了解我们如何才能改变编程的文化和编程的管理者,从而鼓励教育和自我完善。 继续教育,YouTube视频,书籍,会议有很多途径,但是由于我们所做的事情具有经验性,因此并不总是清楚学习和掌握重要的知识。 让我们看一下Joel 12 Steps。 乔尔测验 您是否使用源代码管理? 您可以一步一步构建吗? 您每天制作吗? 您有错误数据库吗? 您在编写新代码之前会修复错误吗? 您有最新的时间表吗? 你有规格吗? 程序员有安静的工作条件吗? 您是否使用金钱可以买到的最好的工具? 你有测试员吗? 新候选人在面试中会写代码吗? 您是否进行走廊可用性测试? 我认为所有这些都具有重要的价值,但是由于我所说的“经验差距”,如果程序员或经理从未经历过因未完成列表中的项目而遭受的任何负面后果,他们将永远看不到需要做任何事情其中。 经验鸿沟是我的基本理论,即我们每个人都有不同的工作和不同的经历。因此,对于我们中的某些人(这些人一直与数十名程序员一起工作),必须具有源代码控制。但是对于那些一直是唯一的程序员的人,他们无法想象需要源代码控制。 正是由于我们在学习方面存在重大缺陷,我们才根据人们的最佳实践对他们进行评估,以及他们这样做的原因都可以引发一场大战。 我们总是根据他们的工作来评估他们,并认为:“哦,如果这个人/ gal没有做过xyz最佳实践,那么他/她就不能成为一名优秀的程序员,因此,不要浪费时间或精力与他们聊天。” 这就是为什么我们有如此多的编程火焰战争的原因,由于经验差距,我们无法想象人们没有做出我们必须做出的决定。 因此,这使我想到,我们完全需要重新考虑如何训练,教育和管理程序员。 例如,在您的经理的鼓励下,有百分之几的人参加会议,甚至让他们付费? 对于我和很多人来说,这是极为罕见的,我们很多人都希望参加会议,了解更多信息,但是没有钱去做。 因此,这个问题的重点确实是激发了我们如何更好地进行培训,学习和管理? 我们如何创造一种新的学习文化,不会侮辱人们没有相同的工作经历。 是的,我们每个人都有工作要做,但是我们做好工作的能力取决于我们对提高对技能的掌握的愿望,兴趣和支持。 现在,我看到我们的文化变得杂乱无章,我们支持精英阶层,但是我们当中很多想要变得更好的人,只是没有足够的支持来学习和改善自己。 我的意思是,我们作为一个行业,是否希望被视为可替换的齿轮? 谢谢...

10
优秀的程序员和财务上成功的程序员有什么区别?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 像Zukerberg,Page和Brin这样的程序员,他们在财务上也非常成功,而另一个在财务上不是很成功的明智的伟大程序员之间的区别是什么?

3
为什么(不是)逻辑编程?
我还没有听说过软件行业中逻辑编程语言(例如Prolog)的任何用法,也不知道它在业余编程或开源项目中的用法。不过,它(Prolog)在某种程度上被用作学术语言(为什么在学术界使用它?)。 这让我感到奇怪,为什么要使用逻辑编程,为什么不呢?为什么没有得到可检测的行业使用率?

5
缺陷状态:“无法修复”与“已取消”
我曾经作为测试人员或开发人员参与过多个项目。在许多项目中,存在以下缺陷状态: 不会修复 取消 您是否使用这些状态,并且您如何区分它们?我问,因为大多数人无法解释差异。我的理解是: 不会解决 -开发者将无法修复的缺陷,因为它不是一个缺陷; 已取消 -由于优先级最低,因此不应修复缺陷

8
检查失败的单元测试的价值是什么?
尽管有阻止执行单元测试的方法,但是检查失败的单元测试的价值是什么? 我将使用一个简单的示例:区分大小写。当前代码区分大小写。该方法的有效输入是“ Cat”,它将返回Animal.Cat的枚举。但是,该方法的所需功能不应区分大小写。因此,如果所描述的方法通过“ cat”传递,则它可能返回类似于Animal.Null而不是Animal.Cat的内容,并且单元测试将失败。尽管只需进行简单的代码更改即可完成此工作,但更复杂的问题可能需要花费数周的时间才能解决,但是使用单元测试来确定错误可能不是那么复杂。 当前正在分析的应用程序具有4年有效的代码。但是,最近有关单元测试的讨论发现了代码中的缺陷。有些只需要显式的实现文档(例如是否区分大小写),或者不根据当前调用方式执行该错误的代码。但是可以执行特定的场景来创建单元测试,这将导致错误被看到并且是有效的输入。 在有人能够修正该代码之前,检查行使该错误的单元测试的价值是什么? 是否应该使用忽略,优先级,类别等标记此单元测试,以根据执行的测试确定构建是否成功?最终,一旦有人对其进行了修复,就应该创建单元测试来执行代码。 一方面,它表明已识别的错误尚未修复。另一方面,在日志中可能会出现数百个失败的单元测试,并且很难找出应该失败的测试与由于代码检入而导致的失败。

4
如何创办软件公司
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我一直想知道软件公司如何发展。一旦您受困于汽车,房屋,生活等,我发现这非常困难。资金始终是最大的问题。 为了更具体一点,我看到两种类型。提供产品/服务的公司或提供咨询公司的公司。 关于产品/服务种类,令我感到困扰的一件事是,我们都知道两端燃烧蜡烛是多么的疲惫。每天编码8到10个小时,然后在晚上用自己的东西编码,不会持续很长时间。简而言之,无论您对自己的想法有多热情,日夜编码都是疲惫的秘诀。这是失败主义者的态度吗?可以平衡吗? 以我的诚实观点,咨询类并不是那么棘手。我认为,一旦您在行业中花了很多年的时间来建立关系,通过签约或搬迁来建立联系,当然要加入社区,然后以顾问的身份登陆您的第一个项目,我相信这比产品容易/服务种类。我以为朋友们可以在您进行更大的公司项目时加入您,例如进行敏捷实施或TDD培训,然后您就可以获得更大的收获。 如果您不能同时为这两家公司做出贡献,请指定您要回答的公司类型。我想听听每个人在任何水平上对于软件公司初创公司的经验或想法。

9
资源,以提高您的递归理解?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我知道什么是递归(当一个patten在其内部重新出现时,通常是一个函数,在有条件的突破后会在其一行上调用自己...对吗?),如果我仔细研究它们,我就能理解递归函数。我的问题是,当我看到新的示例时,最初总是很困惑。如果我看到一个循环,或者一个映射,压缩,嵌套,多态调用等,我仅通过查看就知道发生了什么。当我看到递归代码时,我的思考过程通常是“这是wtf吗?” 其次是“哦,这是递归的”,其次是“如果他们说可以的话,我想它一定有用。” 那么,您在此方面有什么技巧/计划/资源来培养技能吗?递归是一个很奇怪的概念,因此我认为解决它的方法可能同样很奇怪而且很模糊。

4
发布版本与每晚版本
一个典型的解决方案是在构建服务器上运行CI(连续集成)构建:它将分析源代码,进行构建(在调试中)并运行测试,测量测试覆盖率等。 现在,另一种通常称为“夜间构建”的构建类型:做一些缓慢的工作,例如创建代码文档,制作安装程序包,部署到测试环境以及针对测试环境运行自动(烟熏或接受)测试等。 现在,问题是: 拥有第三个单独的“发布版本”作为发行版本更好吗? 还是在发布模式下“立即构建”并将其用作发布? 您在公司中使用什么? (发行版本还应在潜在产品版本的源代码控制中添加某种标签。)

5
物理学与计算机科学联合课程和教科书的构想
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 我想写(并开始概述)一本物理教科书,假设它的读者是有能力的计算机程序员。普通物理学教科书教授物理公式,并给出用笔,纸和计算器解决的问题。我想提供一本强调计算物理学的书,一本有关计算机如何建模物理系统并给出此类问题的书:编写一个可以解决一系列物理问题的程序。第三方开源库将用于处理大多数计算,而我想使用Java或C#之类的高级语言。 除了我乐于从事这一工作外,我认为应该在学校提供物理-计算机科学联合课程,这是实现这一目标的更大议程的一部分。我认为物理学系的学生(像我一样)应该学习如何使用和利用计算机来解决抽象问题和问题集。我认为编程语言应该被认为是从事许多研究领域的有用媒介。 这是一个值得追求的想法吗?以大学本科课程形式合并这两个科目是否可行?有什么我应该利用的特定工具或应该意识到的陷阱?有没有人听说过大学课程或采用这种方法的其他方法?有没有像我正在描述的书(物理或任何其他学科)那样的书/教科书?

5
高级与低级编程。我真的必须选择吗?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 每隔一段时间,我都会被问到我最喜欢的最低或最高水平的访谈。在我看来,隐性信息是他们既是专业,又想知道我要往哪个方向发展。麻烦的是,我似乎都喜欢。低水平是极具挑战性的,通常需要大量深奥的知识。高层次是所有性感事物发生的地方:人们直接使用的应用程序,可以容易地以所有人都可以访问的方式展示(展示)的结果,然后您可以使用真正的高级工具并与新技术进行交互。 我真的很想同时做这两个事情,即使这意味着要在两者之间交替工作(我怀疑有些工作可以让我同时做这两个事情),但是我猜测这个行业对专家的奖励要比对通才的奖励更大。如果我从不选择一个,真的会在职业上有问题吗?从某种意义上说,如果我要辞掉一份工作去做另一件事,那么我就不会经历任何“摩擦”(假设我处于合理的循环中),这是否可行?在这里你能做到既存在就业机会? 我真的必须选择一个吗?

3
转向机器学习职业[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我的日常工作是简单的旧软件开发。我也在攻读CS硕士学位(兼职,基于课程)。我上了一门关于AI的课程,发现机器学习非常有趣,但是像大多数课程一样,它仅提供了基本的介绍。 我打算学习有关机器学习的更多信息,并在可能的情况下找到该领域的工作。当我查看该领域的职位发布时,很明显,其中大多数需要机器学习博士学位(或具有相当专业知识的该领域的先前经验)。 我正在寻找有关自我学习的建议,以获取对行业有用的经验。至少有足够的经验可以涉足。我会做一些显而易见的事情,例如阅读教科书,论文等。也许我可以参加任何开源工作,或者我可以自己做些什么? 抱歉,如果我在这里含糊不清,但我希望至少有一些人做了类似的更改并可以提供建议。 谢谢 !

5
使用Maven创建Java EE项目
我已经使用Eclipse开发Java EE Web应用程序大约一年了。我的雇主不使用Maven,但是我读的越多,我就越确信Maven + Hudson将对我们大有裨益。但是,首先,我必须在业余时间适应这些技术,以便创建概念验证。 现在,我仍然是Maven新手。有使用Maven创建Java EE Web应用程序的最佳实践吗?例如,我可以创建一个具有基本原型的项目,然后通过将依赖项放入Servlet容器,EJB,EclipseLink等的POM中来添加所有必需的JAR。方法。非常感谢您就此主题提供的任何指导。
13 java-ee  maven 

4
数据库模糊搜索概念
我对此进行了思考,并且一直在尝试提出有关如何模糊搜索数据库的解决方案,例如,如果用户键入了拼写错误。这个逻辑背后有什么明显的问题吗?它会工作吗,并且以前做过吗? 我们希望搜索的表: **tblArticles** Body - Soundex_Body - CharacterCoded_Body 因此,我们存储原始文本正文以进行物理显示。其他两列用于通过以下方式预先计算的搜索: 声音 正文被分解成单词,然后翻译成其soundex版本。IE,生成的正文可能类似于: H252 B54 C23 E33... etc 因此,有人可能会输入“恐龙”,而本文的正文为“恐龙”,则两者均等于B26。然后,我们对搜索词的soundex值运行一个LIKE。 字符编码 给定一个将char映射到质数的字符映射,即IE: h = 2 e = 3 l = 5 o = 7 p = 11 c = 13 help = 2*3*5*11 = 330 hello = 2*3*5*5*7 = 1050 hell = 2*3*5*5 …

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.